80. 同步区块:多节点如何统一历史数据

这一章,我们简单讲解一下,多节点之间是如何达成历史区块统一的。(如果你觉得这一章难以理解,可以跳过这一章,不影响后续的学习。)

首先,系统里的多个节点,它们的行为是基本上相同的,绝大部分时间都在做这几件事:

  • 不断接收数据包并将新数据包填充到默克尔树底端,已填充的数据包不重复填充;
  • 不断尝试任意数,努力凑出满足目标值的哈希值;
  • 另外还有一件事,就是把新数据包不断广播给其他节点。

下图中,我们拆解了节点 X 的行为,而其他节点也是类似。

当节点 X 做出一个有效区块后,它会立即将部分区块信息广播给其他节点。“部分区块信息”只包含区块头和默克尔树的“树枝”,不包含挂在默克尔树下的数据包

因为它之前已经广播过所有的数据包了,所以它就省得再次发送这些巨量数据了。而默克尔树的底部有每个数据包的哈希值,所以接收节点可以据此判断每个数据包应该挂在哪个位置。这样,接收节点对收到的区块稍作验证后,就可以将当前的区块与发送节点的区块相统一。整个系统便开始进行下一个区块的角逐。

 

从上面的流程中,我们可以看到这样几个有趣的现象。

  1. 节点会第一时间广播数据包。如果不在第一时间广播数据包,会有一个坏处,那就是要在广播区块的时候附带巨量数据包,这样广播区块的速度就会很慢,很有可能被广播更快的节点抢先发布新区块。
  2. 由于节点会广播数据包,用户就不一定需要把自己的数据包上传给每一个节点了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值