可以改进/扩展/优化之处 或许,我们可以稍微优化一下这个方案。 我们的网络结构需要存储的不仅是叶节点,还有中间节点。也就是说,如果按叶子节点和对等节点的需要来分割区块证明,这些碎片证明之间会出现大量重叠。例如,当要你要证明一个叶节点的时候,其证明中也会包含对其默克尔路径上所有中间节点的数据的证明。 如果网络中的某个节点想存储某个叶子,TA 当然希望获得该叶子节点的中间节点也可以在网络中找到。如果这些中间节点不可得,甚至都没有人会请求叶子节点数据,因为本地还没有中间节点的数据,还没法顺着这些中间节点发现对叶子节点的需要。我们或许可以利用这一点在整个网络中分散广播数据的责任。 状态提供商只通过 gossip 方式广播叶节点数据的证明。 节点一收到自己想要存储的内容的证明,就会找出 “父证明” —— 对上一级中间节点数据的证明 —— 并发送出去。
这一 “递归” 过程可以让状态提供商只需将叶节点数据发送至网络,并将广播中间节点数据的责任分配给那些对叶节点数据感兴趣的节点。这些节点会一级一级地把上一层级的中间节点的数据的证明推送到网络中,直到所有节点都把最终的状态根推送到网络中。 (责任编辑:admin) |