...
因此,同步时,需要讲 JMKL 这样的节点找出来。
同步的三大任务
确认tips节点和验证历史节点
为什么要确认和验证
主要原因有两个:
1、握手;同步两个节点之间的状态;同步
2、防止恶意 peer 假冒诚实节点,必须通过历史区块的验证才能识别出节点是否为诚实节点。
确认和验证流程
...
对应代码
待补充
同步新的tips节点
...
流程
拉取数据内容
对应代码
拉取区块数据
流程
对应代码
攻击和异常
accumulator 的稳定性
前面说了,如果 tips 节点继续插入新的节点,那么 accumulator 尾部会出现不稳定的节点,这主要是因为并发的原因,如果我们设置 ghostdag 的 k = 1,那么就跟单链一样了不稳定的问题会大大降低,但也失去了并发的特性。因此,稳定性和并发需要有一个平衡,必须保证大部分稳定(越老越稳定),也需要有一定的并发能力。
...
因此必须防止 X 这样的节点插入进来,因此,dag 的插入应该对区块的时间戳进行校验,若父子区块的时间戳差值超过窗口时间,则子区块应该被拒绝,从而减少 accumulator 的不稳定。
冒充诚实节点
时间复杂度
...
其它
使用startup info存储同步快照
节点握手的时候需要同步 chain info
...