本文提出了网络分片(Network Shards)的概念,将网络划分为多个分片,每个分片负责一部分Gossip网络流量的传播(Push)和一部分网络数据的保管与服务(Pull)。这种分片方法旨在优化数据可用性抽样(DAS),解决现有方法中发现和连接子网慢、小规模子网易受攻击、以及随机抽样慢等问题。文章还探讨了自愿分片参与、Danksharding应用以及一些开放性问题。
注意:这是关于如何组织网络以满足未来数据分片需求的高级想法。这个想法可以看作是 PeerDAS 和 SubnetDAS 提案的后续。在某些方面,它补充了这些提案,而在另一些方面,它可以作为这些提案的替代方案。
最基本的想法是将网络分成 N
个(假设 N = 32
作为初始方法)网络分片,并让每个分片负责:
1/N
,作为各种子网(例如,证明、同步委员会和未来的 DA 采样子网)的骨干1/N
的网络数据(DA 样本、blob 切片、潜在的区块)这个想法可以被认为是广义的 Attnet Revamp spec PR
类似于 Attnet Revamp,网络中的每个节点在任何时刻都被分配到一个网络分片。节点作为一个 Gossip 骨干,服务于静态分配给该分片的一组 Gossip 子网。同样类似于 Attnet Revamp,节点以确定性的方式在网络分片之间循环。
这个概念的主要优势是能够统一且安全地支持更小尺寸的 Gossip 子网(甚至是单个发布者和单个订阅者的极端情况)。网络分片的概念也为推/拉数据传播建立了一个额外的抽象层。
注意:单个 Gossip 子网(主题)可能跨越多个分片(明显的例子是跨越所有分片的
beacon_block
主题)。
除了服务于分配给分片的 Gossip 骨干外,节点还承诺保管和服务于在该分片主题上发布的数据。数据保留策略应该是特定于主题的。
当一个节点加入或重新连接到网络时,它应该填补缺失的过去数据的保管空白,以诚实地履行其职责。
注意:由于节点随着时间的推移在分片之间循环,因此以客户端的身份检索历史数据并不那么直接。可以利用不同的实现策略来优化此过程。
具有高带宽和存储能力的节点可能自愿希望加入到多个网络分片。这可以通过 PeerDAS write up 中提出的方法来实现。
让我们考虑原始的 Danksharding DAS(数据可用性采样)。每个 slot 256K
(512 * 512
)的数据样本需要发布。每个节点只需要接收其中的 75 个(由节点随机选择)。理想情况下,一个节点应该在每个 slot(或至少每隔几个 slot)验证不同的随机样本子集。
可以有 256K
样本子网分布在所有分片上(例如,每个分片 8K
个子网)。
一个采样节点(从“客户端”的角度来看)应该只维护与来自所有分片的节点之间的稳定和平衡的连接。
注意:如果可以放宽采样算法,则对于常规节点可以放宽上述连接到所有分片的要求:例如,节点可以随机选择并缓慢旋转分片子集,并从分配给所选分片的那些样本子网中随机选择样本子集。但是,对于任何放宽的方法,都需要重新审视安全属性。
节点将能够订阅/取消订阅相应的样本子网,几乎是立即的,因为无需搜索和连接到子网节点
这个概念满足了各种采样方法的需求,包括原始的 Danksharding、SubnetDAS 方法
拉取最近的样本非常简单:使用特定的 RPC 方法从分配给相应分片的节点请求样本。
由于分片节点的轮换,拉取历史样本有点棘手。但是,可以使用各种策略来优化该过程:
das_shard_N_sample_*
das/shard_N -> das/shard_N/sample_M
das_shard_N
,但如果客户端发起 subscribe das_shard_N_sample_M
消息,则节点会回复相同的 subscribe
消息M
个 epoch 的分片分配。这将有助于缓解对单个分片的女巫攻击(保证在发现中存活超过 M
个 epoch 的节点不是专门为女巫攻击而设计的)(在提出 Attnet Revamp 时已经讨论过)
- 原文链接: ethresear.ch/t/network-s...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!