版本比较

密钥

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

因此,同步时,需要讲 JMKL 这样的节点找出来。

同步的三大任务

确认tips节点和验证历史节点

为什么要确认和验证

主要原因有两个:

1、握手;同步两个节点之间的状态;同步

2、防止恶意 peer 假冒诚实节点,必须通过历史区块的验证才能识别出节点是否为诚实节点。

确认和验证流程

...

对应代码

待补充

同步新的tips节点

...

流程

拉取数据内容

对应代码

拉取区块数据

流程

对应代码

攻击和异常

accumulator 的稳定性

前面说了,如果 tips 节点继续插入新的节点,那么 accumulator 尾部会出现不稳定的节点,这主要是因为并发的原因,如果我们设置 ghostdag 的 k = 1,那么就跟单链一样了不稳定的问题会大大降低,但也失去了并发的特性。因此,稳定性和并发需要有一个平衡,必须保证大部分稳定(越老越稳定),也需要有一定的并发能力。

...

因此必须防止 X 这样的节点插入进来,因此,dag 的插入应该对区块的时间戳进行校验,若父子区块的时间戳差值超过窗口时间,则子区块应该被拒绝,从而减少 accumulator 的不稳定。

冒充诚实节点

时间复杂度

...

其它

使用startup info存储同步快照

节点握手的时候需要同步 chain info

...