原文标题:《观点 | 用于状态网络的可扩展广播方案》 在我之前的新型交易 gossip 广播网络设计中其实可以看到我最初在为状态网络设计 gossip 广播方面的尝试。在之前的文章中,我介绍了一种设计,可以让节点在无需处理完整交易池的情况下参与 gossip 广播。 从较高层面上来说,我们关于交易 gossip 广播的问题陈述如下(忽略 DOS 攻击 / 安全性要求):
我提议的交易 gossip 广播方案采用了距离指标【我们称之为 该方案之所以有效,主要的两点原因如下: 第一,我们预期,节点的半径值会有很大差别,但同时都会相对较大。这种差异源自那些有动力维护「完整」半径以及「较大」半径的参与者。正是这些节点将位于网络边缘的节点连接到了一起。 第二,我们关于半径值较大的预期是根据键空间推测出的。根据 Peter 最近关于交易池的文章,geth 节点默认最多可维护 4000 笔交易。在任意时刻,整个网络中的待处理交易高达 4 万至 40 万笔。轻节点无法处理 4000 笔交易,但是处理其中 5% 不成问题。因此,我们预期半径值通常在整个键空间的 1% 至 100% 之间。 将同样的设计应用到状态 gossip 广播上(并不奏效)我最初尝试将这种设计应用到针对状态网络的 gossip 广播上,但是没有成功。主要原因如下: 第一,状态网络中各节点在半径值上的差异会小得多。我们预期不太可能会有网络参与者维护「完整」半径。这会导致网络中缺少一个起到连接边缘作用的「中心」。 第二,半径值会很小。假设有 200 GB 的状态,平均每个节点提供 100MB 的存储空间,且复制因子为 10,那么计算下来我们需要一个由 2 万个节点组成的网络。平均每个节点需要存储 0.002%(1/20,000)的数据。 正是上述两个不同之处从根本上改变了网络拓扑结构,导致原来的交易 gossip 广播网络设计失灵。 与交易 gossip 广播不同的目标别忘了,交易 gossip 广播的目标之一是,让交易进入矿工所在的网络「中心」。位于网络边缘的节点其实不是很在乎是否能看到所有待处理交易,即使一个都看不到也没关系。它们主要关心的是能否广播自己的交易,并让这些交易可靠地打包进区块内。 (责任编辑:admin) |