PeerDAS——一种使用经过实战检验的 p2p 组件的更简单 DAS 方法 - 网络

PeerDAS 旨在通过重用以太坊中已有的 P2P 组件,在 4844 的基础上扩展数据可用性(DA)的规模。该设计依赖于不同类型的节点,通过节点分片和 gossip 协议实现数据的分发和采样,并利用信誉系统来激励节点的诚实行为,目标是在不依赖复杂 DHT 解决方案的情况下提高 DA 的效率。

PeerDAS

是一个代表 PeerDAS 的总体方向的草图。它在早期阶段发布,以征求反馈,然后再进行进一步的讨论和完善。

一系列想法来自于与 Dankrad、Vitalik、Codex 成员、RIG、ARG 和 Consensus R&D 的对话。在方向上,这类方法的各个部分在过去几年中也一直在各个途径中被讨论,例如 Proto’s PeerDHT

PeerDAS 设计的目的是重用以太坊中已经投入生产的、经过实战考验的 p2p 组件,以在 4844 的基础上带来额外的 DA 扩展,同时保持诚实节点所需的最小工作量与 4844 处于同一水平(每个 slot 下载 < 1MB)。

是一项探索,旨在更好地了解我们能从一个相对简单的网络结构中获得多大的扩展性,该结构具有各种类型的节点分布,而无需 依赖于更高级的 DHT 类解决方案。

对此类解决方案有效性的模拟涉及以下参数化:

  • 数据大小(每个区块的行数和列数,以及样本大小)
  • 网络上的节点总数
  • 期望一个诚实节点做的最小工作量(例如,保管和提供来自 X 行和列的样本)
  • 节点容量的分布(即,网络中有多少比例是最低程度的诚实(保管/提供 X),以及超出这个程度的(例如,保管/提供网络数据的 10%、25%、100%))以及他们愿意支持的最大样本请求数(即,每个 slot Y 个样本)
  • 诚实/拜占庭比例假设

上述不同的参数化将导致可接受或损坏的配置(例如,对于给定的网络分布,数据大小可能太大,无法找到足够容量的对等节点)。

关于 DAS 的一般说明

重要的是,任何 DAS 解决方案都将依赖于各种类型的节点以及我们可以对它们做出的假设。任何解决方案中都值得考虑的节点类型包括:

  • 验证者和用户节点(可以对它们进行诚实保管/服务假设,例如,下载和提供 X 行/列的样本。请注意,可以激励验证者进行保管,但不一定激励他们进行服务)
  • 高容量节点(超出基线诚实节点的 % 数据)
  • 超完整节点(100% 的数据)[高容量节点的特例]

那么,DAS 解决方案之间的区别在于——DAS 网络如何组织自身,如何发现用于采样的对等节点,网络如何利用(或未充分利用)更高容量的节点(例如,解决方案是否可以支持节点容量的不均匀性,或者所有节点看起来都一样)。

PeerDAS 草图

配置

以下是对完整所需参数化的一些简化,仅用于说明目的。

表中的所有值都是示例值,不代表对实际参数化的建议。

名称 示例值 描述
NUMBER_OF_ROWS_AND_COLUMNS 32
SAMPLES_PER_ROW_COLUMN 512
CUSTODY_REQUIREMENT 2 诚实节点保管并提供样本的最小行数和列数
SAMPLES_PER_SLOT 75 一个节点每个 slot 查询的随机样本数
NUMBER_OF_PEERS 70 一个节点维护的最小对等节点数

工作原理

保管

每个节点下载并保管每个 slot 至少 CUSTODY_REQUIREMENT 行和 CUSTODY_REQUIREMENT 列。节点需要保管的特定行和列是伪随机选择的(稍后会详细介绍)。

一个节点_可以_选择保管和服务超过最小诚实要求。这样的节点通过对等节点发现机制明确地公布一个大于 CUSTODY_REQUIREMENT 的数字——例如,在他们的 enr 中(例如,如果节点每个 slot 保管 8 行和 8 列,则 cust: 8)——最多为 NUMBER_OF_ROWS_AND_COLUMNS(即,一个超完整节点)。

一个节点存储保管的行/列,直到剪枝周期结束,并响应对等节点对这些行/列上的样本的请求。

公开的,确定性的选择

节点保管的特定行和列是伪随机选择的,它是节点 ID、epoch 和保管大小的函数(采样函数接口:custodied_rows(node_id, epoch, custody_size=CUSTODY_REQUIREMENT) -> List(uint64) 和列变体)——重要的是,任何一方都可以运行此函数,因为输入都是公开的。

注意:增加给定 node_idepochcustody_size 参数会扩展返回的列表(而不是一个全新的 shuffle),这样,如果 custody_size 未知,则默认的 CUSTODY_REQUIREMENT 对于节点保管的一个子集将是正确的。

注意:即使此函数接受 epoch 作为输入,也可以调整该函数,使其在多个 epoch 内保持稳定,具体取决于网络/子网的稳定性要求。网络刚性和子网可用于恢复的深度之间存在权衡。为了确保子网可用于恢复,交错轮换可能需要在剪枝周期的量级上发生。

对等节点发现

在每个 slot,一个节点需要能够随时从任何一组行和列中进行采样。为此,一个节点应该找到并维护一组多样化和可靠的对等节点,这些节点可以定期满足它们的采样需求。

一个节点运行一个后台对等节点发现进程,维护至少 NUMBER_OF_PEERS 的各种保管分布(包括 custody_size 和行/列分配)。广告的 cust 大小和公共节点 ID 的组合使这很容易公开访问。

NUMBER_OF_PEERS 应该向上调整,以防采样失败。

注意:虽然高容量和超完整节点在满足采样要求方面具有很高的价值,但一个节点应该维护跨节点容量的分布,以避免过度集中 p2p 图(在极端情况下变成 hub/spoke),并更好地在所有节点上分配采样负载。

值得注意的是:预计在上述内容中将使用基于 DHT 的对等节点发现机制。信标链网络目前使用 discv5,其方式与描述的用于查找特定证明子网分布的对等节点类似。集成额外的对等节点发现方法(例如,通过 libp2p gossipsub 进行潜在的对等节点发现)是有价值的,以增加对攻击其中一种发现方法的广泛防御。

行/列 Gossip

NUMBER_OF_ROWS_AND_COLUMNS 个行和 NUMBER_OF_ROWS_AND_COLUMNS 个列 Gossip 主题,每个行/列一个——column_Xrow_Y,对于 XY0NUMBER_OF_ROWS_AND_COLUMNS(不包含)。

为了保管特定的行或列,一个节点加入相应的 Gossip 子网。来自它们各自的行/列的可验证样本在分配的子网上进行 Gossip。

重构和交叉播种

如果一个节点没有收到给定行/列的所有样本,但确实收到了足够重构的样本(例如,50%+,编码率的函数),则该节点应在本地重构并在子网上发送重构的样本。

此外,该节点应发送(交叉播种)从给定行/列中丢失的任何样本,这些样本是通过替代方法获得的(辅助 Gossip 或重构)。例如,如果节点重构了 row_x 并且还参与了 column_y 子网,其中缺少 (X, Y) 样本,则将重构的样本发送到 column_y

注意:一个节点始终维护一个矩阵视图,其中包含它们正在跟踪的行和列,能够以任一方向交叉引用和交叉播种。

注意:存在一些时序方面的考虑需要分析——节点在什么时候认为样本丢失并选择重构和交叉播种。

注意:可能存在围绕如何发送样本和考虑样本的反 DoS 和服务质量方面的考虑——每个单独的样本是一条消息还是以聚合形式发送。

对等节点采样

在每个 slot,一个节点对它们的对等节点进行(本地随机确定)SAMPLES_PER_SLOT 个样本查询。一个节点使用 custodied_rows()custodied_columns() 来确定从哪个对等节点请求。如果一个节点在所有行和列上都有足够的好/诚实的对等节点,这有很高的成功机会。

在采样时,节点会向所有根据其 custodied_rows / custodied_columns 确定保管此样本的对等节点发送一个 DO_YOU_HAVE 数据包,其中包含所有样本。所有对等节点首先回答它们拥有的样本的位域。

收到样本后,一个节点会将该样本传递给任何先前没有该样本的节点,这是通过 DO_YOU_HAVE 响应知道的(但根据其 custodied_rows / custodied_columns 应该拥有该样本)。

对等节点评分

由于确定性的保管功能,一个节点确切地知道一个对等节点应该能够响应什么。如果一个对等节点没有响应其保管的行/列的样本,则一个节点可能会降低评分或断开与该对等节点的连接。

注意:一个对等节点可能无法响应请求,原因可能是它们不诚实(实际上不保管数据),因为带宽饱和(本地限制)或因为它们自己无法获得所有样本。在前两种情况下,对等节点不具有一致的 DAS 价值,一个节点可以/应该寻求优化以获得更好的对等节点。在后一种情况下,节点可以基于对该对等节点和其他对等节点的重复 DO_YOU_HAVE 查询进行本地确定,以评估该对等节点的价值/诚实性。

DAS 提供商

DAS 提供商是可以持续用于 DAS 查询的,完整(或高容量)节点。对于 p2p 而言,这些看起来与其他节点一样,但具有很高的公布容量,并且通常应该能够通过正常的发现潜在地找到它们。

它们也可以在带外找到并配置到节点中以直接连接并优先考虑。例如,一些 L2 DAO 可能会支持 10 个完整节点作为公共产品,并且节点可以选择将其中一些添加到其本地配置中,以增强其 DAS 服务质量。

这种直接对等连接利用了所有节点今天开箱即用支持的功能,并且可以补充(并减少可攻击性)替代的对等节点发现机制。

关于分叉选择的说明

分叉选择规则(本质上是一个 DA 过滤器)与给定的 DAS 设计是正交的,除了特定设计对它的效率产生影响之外。

在任何 DAS 设计中,可能都有一些关于时序、短期重组的可接受性等方面的自由度。

例如,分叉选择规则可能要求验证者在 slot N 上成功执行 DAS,以便能够在其分叉选择中包含 slot N 的区块。那是收紧的 DA 过滤器。但是尾随过滤器也可能是可以接受的,因为知道可能会有一些失败/短期重组,但这不会损害整体安全性。例如,该规则可以是——对于包含在 N 中的子区块,必须为 N-1 完成 DAS 才能包含在分叉选择中。

这种尾随技术及其分析对于任何 DAS 构造都将是有价值的。问题是——你可以放宽需要多快执行 DA 的要求,并且在最坏的情况下不通过证明/最终性来确认不可用的数据,以及这对短期重组和快速确认规则有何影响。

待办事项:PeerDAS 的模拟和分析

PeerDAS 的关键在于,每个节点都可以在每个 slot 找到/维护足够容量的足够对等节点,以满足它们的采样要求。

因此,对于给定的数据大小,我们可以轻松地模拟网络分布(节点计数、节点类型/容量的分布、每个节点可以响应的采样请求数、最小对等节点数等),以了解每个 slot 成功执行 DAS 的机会。

我们可以计算/模拟各种参数化和假设的安全数据大小,例如:

  • 大致以 4844 保管要求构建的最小诚实节点的同构网络
  • 上述内容,但随后用 100 个具有 X 查询容量的完整节点来强调
  • 两者之间的所有类型的分布

接下来——模拟各种网络分布,以锚定我们对该方法边界的理解。

  • 原文链接: ethresear.ch/t/peerdas-a...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
以太坊中文
以太坊中文
以太坊中文, 用中文传播以太坊的最新进展