V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jason19659
V2EX  ›  Bitcoin

关于比特币技术的疑惑

  •  
  •   jason19659 · 2018-01-12 13:30:49 +08:00 · 1081 次点击
    这是一个创建于 2507 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近区块链技术好像很火的样子,今天突然想到一个问题。 就是,既然比特币是去中心化的,我产生了一笔转账。。需要矿工同步。。那么矿工是怎么接收到我转账的消息的。

    正常的转账是 我向服务器发送消息,服务器确认。

    既然比特币是去中心化的 这个服务器是矿工们?那么这些矿工是怎么知道我转账了的?

    我主动推送的?那么又是怎么推送的呢?

    第 1 条附言  ·  2018-01-22 13:31:01 +08:00
    所以还是没有人告诉我,为什么要连入一个别人指定好的网络是去中心化的
    17 条回复    2018-01-16 01:01:12 +08:00
    mars0prince
        1
    mars0prince  
       2018-01-12 13:57:00 +08:00
    比特币用的 tcp 协议
    kaichen
        2
    kaichen  
       2018-01-12 14:29:51 +08:00
    你提交一笔交易,是需要提交到一个已经连入网络的节点去广播到整个网络的。

    这里说的去中心化是指从博弈的角度来说你没法控制谁来当矿工。
    takato
        3
    takato  
       2018-01-12 14:35:35 +08:00
    矿工的交易信息是从 full node 取的,所有交易都必须从一个 full node 进行广播(可以是任意一个)
    你可以选一个别人搭建的 full node 广播(轻钱包),或者自己搭建一个 full node 广播(全节点钱包)

    最好去翻阅一下中本聪的白皮书,写得很详细。
    别人传出来的总是一星半点的信息。
    kaichen
        4
    kaichen  
       2018-01-12 15:09:22 +08:00
    @takato full node 不是轻钱包,轻钱包是只同步时只保留导入钱包的数据。

    自己搭全节点硬盘开销很大,以太坊要 50 多 G,也要时间去慢慢同步。
    takato
        5
    takato  
       2018-01-12 15:15:51 +08:00
    @kaichen 轻钱包依然需要 blockchain_header,目的是验证某个交易是否真实存在。流程如下:
    0. 从网络上获取并保存最长链的所有 block header 至本地;
    1. 计算该交易的 hash 值 tx_hash ;
    2. 定位到包含该 tx_hash 所在的区块,验证 block header 是否包含在已知的最长链中;
    3. 从区块中获取构建 merkle tree 所需的 hash 值;
    4. 根据这些 hash 值计算 merkle_root_hash ;
    5. 若计算结果与 block header 中的 merkle_root_hash 相等,则交易真实存在。
    6. 根据该 block header 所处的位置,确定该交易已经得到多少个确认。

    所以轻钱包依然需要同步少量数据。。。
    WinG
        6
    WinG  
       2018-01-12 15:19:22 +08:00
    @kaichen 才 50G ?怕是你穿越了吧.

    @takato 说的是对的。
    kaichen
        7
    kaichen  
       2018-01-12 15:27:21 +08:00
    @WinG 哈哈,我们有运维节点池,以太坊用 Parity 跑起来,存储数据就用这么多空间。
    kaichen
        8
    kaichen  
       2018-01-12 15:28:15 +08:00
    @takato 比特币的 SPV 到目前为止,正常账户需要 60M 多一点
    takato
        9
    takato  
       2018-01-12 15:31:57 +08:00
    @WinG
    @kaichen Parity 压缩过一些早期 block 的内容。所以是这个大小。

    如果是 geth 的 full 模式,就是恐怖的级别了。
    zhujiulin
        10
    zhujiulin  
       2018-01-12 15:37:11 +08:00
    P2P
    话说比特币现在一个转账确认要一两天,手续费还贼贵。
    还是 paypal 好用
    davidqw
        11
    davidqw  
       2018-01-12 15:42:55 +08:00
    以太坊完整节点 380 多 G,剪枝过的节点 50G 差不多
    kaichen
        12
    kaichen  
       2018-01-12 19:58:48 +08:00
    @takato Geth 1.8 里做了优化也是接近 60G 这样

    https://twitter.com/peter_szilagyi/status/951707685044604928
    takato
        13
    takato  
       2018-01-12 22:02:18 +08:00
    @kaichen geth 和 parity 的实现不太一样的。一个是 fastsync,一个是 wrapsync
    jason19659
        14
    jason19659  
    OP
       2018-01-12 23:34:44 +08:00
    @kaichen #2 已经连入网络的节点是什么意思。。能举个例子吗。。
    kaichen
        15
    kaichen  
       2018-01-13 00:50:46 +08:00
    @jason19659

    本质上来说,区块链是一个网络,每个人都能成为网络的一份子

    你发出一笔交易,需要网络超过一半的节点确认,才算数

    当你要提交交易,需要找到网络里其中一个点,让他帮你广播到全网,这就是我说的你需要向一个网络中的节点提交交易
    jason19659
        16
    jason19659  
    OP
       2018-01-13 12:52:50 +08:00
    @kaichen #15 我的意思是怎么才能连入这个网络。。通过 ip ?那为什么是这个 ip。。还是通过什么别的
    frienmo
        17
    frienmo  
       2018-01-16 01:01:12 +08:00
    @jason19659 先尝试上次连接成功的 IP,然后再尝试 xxx (我不记得了),优先级最低的尝试是直接连 hard coded 的 IP
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1002 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:04 · PVG 04:04 · LAX 12:04 · JFK 15:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.