区块链技术博客
www.b2bchain.cn

区块链技术技术解读用于以太坊状态网络的可扩展广播方案

第17404篇区块链技术文章区块链技术技术解读用于以太坊状态网络的可扩展广播方案

本文讨论了如何为以太坊状态网设计八卦广播。

原文标题:《观点 | 用于状态网络的可扩展广播方案》
撰文:Piper Merriam
翻译 & 校对:闵敏 & 阿剑

原题:观点:可扩展的国家网络广播方案
作者:Piper Merriam
翻译与校对:Min Min&a Jian

在我之前设计的新交易八卦广播网络中,我可以看到我在设计国家网络八卦广播方面的初步尝试。在上一篇文章中,我介绍了一种允许节点参与游戏广播的设计,而无需处理完整的事务池。

  • 在更高的层面上,我们关于交易八卦广播的问题陈述如下(忽略DoS攻击/安全要求):

  • 交易来自整个网络。

  • 一些网络参与者本身需要维护一个完整的交易池(例如,矿工、先发制人交易员)。

一些网络参与者缺乏足够的资源来处理完整的事务池(例如,轻型客户端)。

我提出的事务八卦广播方案采用了距离索引[我们称之为radius],这样节点就可以调整他们必须处理的事务池的大小。节点使用一组简单的规则来管理与其连接的对等节点集,从而形成网络拓扑。将半径最大的节点视为网络的“中心”,半径最小的节点视为网络的“边缘”。

该方案之所以有效,主要有两个原因:

首先,我们预计节点的半径值会有很大的变化,但同时它们会相对较大。这种差异源于那些积极维护“完整”半径以及“较大”半径的人。正是这些节点连接着网络边缘的节点。其次,我们对更大半径的期望是基于键空间。根据Peter最近关于事务池的文章,geth节点在默认情况下最多可以维护4000个事务。在任何时候,整个网络都有4万到40万笔交易需要处理。轻型节点不能处理4000个事务,但其中5%不是问题。因此,我们期望半径值通常在整个键空间的1%到100%之间。

将同样的设计应用到状态 gossip 广播上(并不奏效)

我最初尝试将此设计应用于有状态网络的八卦广播,但失败了。主要原因如下:

首先,状态网络中每个节点的半径值相差较小。我们预计,网络参与者不太可能保持“完整”的半径。这将导致网络中缺少作为连接边缘的“中心”。

第二,半径值将非常小。假设有200gb的状态,每个节点平均提供100mb的存储空间,复制因子为10,那么我们需要一个由20000个节点组成的网络。平均而言,每个节点需要存储0.002%(1/20000)的数据。

正是上述两个差异从根本上改变了网络拓扑结构,导致了原有的事务八卦广播网络设计的失败。

与交易 gossip 广播不同的目标

别忘了,交易八卦广播的目标之一就是让交易进入矿工网络的“中心”。处于网络边缘的节点并不关心是否能看到所有挂起的事务,即使它们看不到任何一个。他们主要关心的是他们是否能够广播他们的事务并将它们可靠地打包成块。

状态网不仅缺乏中心,而且数据流方向与事务流言广播相反。国家八卦广播的目的是将数据传送到网络边缘存储。另外,在事务八卦广播中,消息来自整个网络;在状态网络中,我们期望新的数据只来自少数友好的网桥节点。这些网桥节点负责生成证明并将其发送到状态网络。

我想到的改进之一是引入中继节点。

中继机制会导致 DOS 攻击和不可归因的错误

我们期望每个节点对网络中0.002%的数据(小容量)感兴趣。我认为根据我的结论,我们可以建立许多不同的网络模型,但是一个简单的方法是根据DHT网络中每个节点的路由表建立gossip节点之间的连接模型。在这样的网络中,数据需要对数(n)跳才能到达需要它的节点。

这里的问题是,如果一个节点转发其他节点不感兴趣的数据,但数据需要经历多个跳跃,它将成为一个放大向量。恶意节点通过在八卦网中广播无用数据来放大DoS攻击。

目前,我更喜欢用“愚蠢”的方法从非网络层面解决上述问题。

一个笨办法

有一个“小批量”状态提供程序节点,用于为每个块中的新状态数据生成证明。

  • 每个证明预计有大约2000个trie节点。有些节点是新数据或更新的数据。只有这个子集需要发送到网络。众所周知,每个节点只关心每个块中0.002%的数据,也就是说,不同节点感兴趣的数据之间几乎没有重叠。如果一个块包含2000个新数据,我们可以预见每个数据将被发送到一个完全不同的节点。这意味着为了在块时间广播新块的证明数据,状态提供者每15秒向2000个不同节点发送2000个不同的证书。要做到这一点并非不可能,但会很困难。一旦校样大小增加或网络延迟稍高,状态提供程序将无法在块时间内发送完整的校样数据。

  • 幸运的是,我们可以有多个数据提供程序。我们可以合理地预计,将有一小部分(但不是很少)的身份提供者发送证明数据。在这个模型中,我们可以设计一个系统,在不同的状态提供者之间平均分配负载。

每个状态提供程序为每个新块生成一个证明。状态提供者首先根据其距离确定其节点ID(node ID),从最近的数据开始,查询对这些数据感兴趣的节点,并广播它们。在该模型中,负载均匀分布在不同的状态提供者之间。当涉及到远离其节点ID的数据时,状态提供者会发现节点对数据的兴趣被削弱,因为节点ID接近数据的提供者已经广播了数据。

也许我们可以稍微优化一下这个方案。

我们的网络结构不仅需要存储叶节点,还需要存储中间节点。也就是说,如果根据叶节点和对等节点的需要划分块证明,这些块证明之间会有大量的重叠。例如,当您要证明一个叶节点时,该证明还将包括对其路径上所有中间节点的数据的证明。

可以改进 / 扩展 / 优化之处

如果网络中的一个节点想存储一个叶子,Ta当然想找到网络中叶子节点的中间节点。如果这些中间节点不可用,甚至没有人会请求叶节点数据,因为没有本地中间节点数据,并且不可能沿着这些中间节点找到对叶节点的需要。我们也许可以利用这一点来分散通过网络广播数据的责任。

状态提供程序仅以八卦模式广播叶节点数据的证明。

一旦节点收到要存储的内容的证明,它就会找到“父证明”(即上中间节点的数据证明)并将其发送出去。

  • 这种“递归”过程使状态提供者能够简单地将叶节点数据发送到网络,并将广播中间节点数据的责任分配给那些对叶节点数据感兴趣的节点。这些节点将上层中间节点的数据证明逐级推送到网络上,直到所有节点将最终状态根推送到网络上。

  • 源链接:ethreaser.ch公司你知道吗

这一 「递归」 过程可以让状态提供商只需将叶节点数据发送至网络,并将广播中间节点数据的责任分配给那些对叶节点数据感兴趣的节点。这些节点会一级一级地把上一层级的中间节点的数据的证明推送到网络中,直到所有节点都把最终的状态根推送到网络中。

来源链接:ethresear.ch

区块链技术技术解读用于以太坊状态网络的可扩展广播方案 由www.b2bchain.cn 提供
文章整理自网络,只为个人学习与分享使用
链接地址https://www.b2bchain.cn/17404.html

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 区块链技术技术解读用于以太坊状态网络的可扩展广播方案
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们