版本比较

密钥

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

...

1、区块节点和 accumulator 的叶子节点的映射关系。因为我们需要马上找到某个区块在哪个叶子节点中,由于 accumulator 叶子节点是 dag 的 各层子节点 hash,因此需要额外存储这个映射关系;

2、accumulator 叶子节点和广度优先搜索每次循环使用的队列信息的映射关系。(是否可以复用 dag 的 relationship store 待考察)叶子节点和广度优先搜索每次循环使用的队列信息的映射关系。此处可以复用 relationship store,只需要存储子节点队列即可。

同步的三大任务

确认边缘节点和验证历史节点

所谓确认和验证,即先确认两个网络 peer 节点的 accumulator 是对应同一个 dag 图的,哪怕两者 accumulator 其中一个相对另一个不那么完整。

...

另外,由于每次同步区块数据时,是批量同步,即最大的情况下,有 k 个区块同时打包同步,相比原来是一块块同步,相当于用了空间换取了时间。

对比单个节点对应一个accumulator叶子节点方案

...

单区块对应accumulator单叶子

...

按父子层级关系对应accmulator单叶子

...

批量处理

...

固定节点数

...

并发越大,批量处理越多

...

节点关系

...

缺点:需回溯处理父子节点,兄弟节点的关系,导致新增节点关系复杂。

优点:节点数量就是accumulator的叶子数。

...

缺点:需要额外记录节点的hash值和当前dag节点数量。

优点:仅需要处理父子节点,且保存广度优先搜索遍历时的子节点队列,可以快速修改。

...

算法复杂度

...

O(n / c),c是每次批处理的节点数

...

其它

使用startup info存储同步快照

节点握手的时候需要同步 chain info(包含 accumulator info)

...