该文章提出了一种新的分叉选择结构,它与epbs、FOCIL和PeerDAS的目标和约束兼容。该结构保留了epbs插槽的主要阶段,例如信标块提议、见证、有效载荷发布和委员会投票。引入了类似于FOCIL中的“冻结”截止日期,以确保下一个提议者有足够的时间来满足所有最终被证明者强制执行的IL。
这是一个关于如何以兼容 epbs、FOCIL 和 PeerDAS 的目标和约束的方式来构建分叉选择的提议。
总的来说,这个 slot 仍然非常类似于来自 PTC 提议 的 epbs slot,自那以后已经迭代了很多次,并且是 EIP-7732 的基础。 特别是,我们仍然有 epbs slot 的主要阶段:信标块提议、证明(到目前为止就像今天的 slot 一样)、payload 发布,最后由委员会对 payload 进行投票。 这个委员会,以前被称为 payload 及时性委员会 (PTC),现在更名为可用性委员会 (AC),因为它现在不仅有责任对 payload 的及时性进行投票(这本身也可以被认为是投票时 payload 的可用性),而且还要对与 payload 相关的 blob 数据的可用性进行投票(PeerDAS 中的列)。
除了现有 epbs 提案中的这些阶段外,我们还有一个类似于 FOCIL 中的“冻结”截止日期(通常受到 view-merge 概念的启发),它既用于确保下一个提议者有足够的时间来满足所有最终被证明者强制执行的 IL,又用于确保其对 AC 投票的看法与证明者的看法一致。 这些都是为了确保诚实的提议者可以确定做正确的事情,即扩展正确的链,以便其提议得到证明并成为规范链的一部分。

管道中有几个参与者,所以让我们分别分解每个参与者在做什么,以及他们的行为如何协同工作。 我们专注于一个 slot N,其中提出了一个信标块 $B$,它提交给一个 payload $P$,然后看看在结果中起作用的整个行动链,包括 slot $N+1$ 的提议和证明。 我们假设链在此之前是完全稳定的。
首先,一个 builder,包括本地的区块 builder,必须制作一个 payload,并增加了满足 IL 的约束。与没有 epbs 的普通 FOCIL 相比,IL 的执行最初是由 AC 成员而不是证明者完成的。 这样做的原因是下一个提议者(slot N+1)需要知道当前的 payload 是否“通过了 IL 检查”(这取决于时间,因此不是客观的),以及是否应该在下一轮证明发生之前扩展它。 与 FOCIL 中一样,验证者将强制执行他们在冻结截止日期(上面 slot 结构中是 10 秒,但可以更早)之前看到的 IL,并且 builder 可以通过考虑所有他们看到的 IL 来确保他们满足所有这些 IL,直到 slot 的稍后时间,直到构建 payload。
但是,epbs 的目标之一是不要求 AC 成员在投票之前执行 payload,以便我们放宽 payload 执行的时间限制。 在不执行的情况下,AC 成员无法自行检查 payload 是否实际满足 IL:某个 IL 交易可能未包含,但只是因为它在 payload 执行期间失效了,而 EIP-7702 之后,即使没有来自同一发送者的交易在区块中,也可能发生这种情况。 为了帮助 AC 成员履行他们的执行角色,payload 包含一个 bitfield,用于指定 builder 从哪些 IL 提议者那里收到了 IL。 我们稍后将解释这如何在执行中使用。

默认的 builder 行为非常简单:
虽然这不是 builder 行为的一部分,但指定一个支付处理规则至关重要。 在 $P$ 被释放并成为规范这种好情况下,支付会立即处理,否则支付会被延迟一段时间,以试图确定交易无效的责任方:
我们将论证,假设 builder 具有足够的网络同步性和连通性,该协议实现了以下属性:
builder 使用的默认发布规则的基本原理很简单,并且立即为我们提供了这些属性:

关于提议者的行为几乎没有变化。 在这里,我们专注于 slot N+1 的提议者,以继续我们对在 slot N 开始的流程的分析。 首先,提议者运行分叉选择,就像今天一样,除了有和没有 payload 的区块是单独且竞争的分叉选择对象。 如果链的头部不是在 slot N 中提出的信标块,它就像平常一样扩展它。 如果相反,它是来自 slot N 的信标块 $B$,并且不受 proposer boost reorg 的影响,它必须确定是扩展 $B$ 还是扩展其 payload $P$(更准确地说,是“带有 payload 的 $B$”对象)。 此时,它不能基于来自 slot $N$ 的证明来做到这一点,因为 slot $N$ 中的证明者还没有机会证明 $P$。 相反,它使用可用性委员会来做出这个决定,通过使用相对多数阈值:如果*它收到的* AC 投票的大多数(不一定是所有可能投票)是正面的,它就扩展 $P$,否则扩展 $B$(没有 payload)。 正如我们将在即将进行的关于证明者的部分中看到的那样,这与他们用来决定证明什么的criterion相同。
为了防止 AC 大致平均分配,并且一些战略性地发布的敌对投票可以影响证明者反对提议者选择的情况,我们使用了一个轻量级的 view-merge,仅应用于前一个 slot 的 AC 投票:
像往常一样,一个需要澄清的是如何处理 双重提议 的 AC 投票。 幸运的是,在这种情况下,我们有一个非常简单的方法来处理它们:
有了这个,假设有足够的网络同步性,slot N+1 中证明者使用的 AC 投票将与提议者使用的 AC 投票完全一致。 理由很简单:提议者看到的投票集是任何证明者看到的投票集的超集,*除非在 双重提议 的情况下*,并且在 双重提议 的情况下,证明者只会默认同意提议者。 更明确地说:

可用性委员会有三个目的:
AC 成员在整个 slot N 中的行为如下:
正如我们已经讨论过的那样,slot N+1 的提议者和证明者要求 payload 获得大多数 AC 投票。 假设 AC 是多数诚实的(或者在 DA 检查的情况下更多一点,以解释由部分可用性视图引起的错误),这意味着 AC 可以成功地强制执行 payload 是否按时发布,并使用一个 bitfield 来提交以满足所有及时发送的 IL。
DA 检查与其他检查有所不同,因为下一个 slot 中的证明者将再次进行他们自己的 DA 检查,未来的 slot 中的证明者也会这样做:没有人会证明不可用的东西,即使出于任何原因以前的 slot 中发生了这种情况。 正如在一开始提到的那样,AC 并不是在强制执行 DA,而是向下一个提议者提供关于 DA 的早期信号,以防它自己无法做出完整的可用性判断。
虽然及时性和 DA 执行很简单,但 IL 执行并非如此,所以让我们更详细地讨论一下。 下一个 slot 的提议者使用该 bitfield 来决定是否扩展 payload,通过检查它隐含引用的 IL 的满意度,并且下一个 slot 的证明者也将以同样的方式使用它来决定是否投票支持该 payload(或者一个扩展它的区块)。 换句话说,IL 的执行分为两个部分:
这里的一个小警告是,在 IL 提议者 双重提议 的情况下,IL 提议者的 bitfield 并不能唯一地指定一个 IL,在这种情况下,builder 可能已经看到并满足了一个 IL,但其他节点可能希望满足另一个 IL。 但是,我们 IL 的传播规则规定每个 IL 提议者最多传播两个 IL,以便 双重提议 的证据默认传播。 然后,slot N+1 的证明者将简单地忽略来自 双重提议 IL 提议者的任何 IL:即使该 bitfield 对于某个 双重提议 IL 提议者有一个 1,证明者也会将其视为 0,因此他们不会基于该提议者发送的 IL 对 payload 施加任何额外的约束。
最后,我们即将到达我们的流程中的最后一个actor,所有我们讨论过的东西的最终执行者,因为他们负责将临时的本地决策和 AC 投票巩固到分叉选择中。
让我们首先讨论一下分叉选择在这种情况下是如何工作的。 区块树现在有两种对象,而不仅仅是信标块:空的和完整的信标块,或者换句话说,没有和有 payload 的信标块。 对于给定的提交给 payload $P$ 的信标块 $B$,“带有 $P$ 的 $B$”和“没有 $P$ 的 $B$”,或者 $B$ 空的和 $B$ 完整的,在分叉选择树中具有相同的父节点,即 $B$ 的父节点(它本身可以是一个空区块或一个完整区块)。 对于分叉选择树中具有相同父节点的对象,与往常一样,$B$ 空的与 $B$ 完整的竞争,这意味着在运行分叉选择时,只能选择两个分支中的一个。
选择分支是通过选择具有最多证明权重的子树来完成的,与往常一样,但有一个小的警告:来自 $slot(B)$ 的$B$ 空的的投票*既计入 $B$ 空的,也计入 $B$ 完整的*,而来自$slot(B)$ 的投票只能落入两个子树中的一个。 这么做有一个简单的原因:在 $slot(B)$ 中的证明者只能证明 $B$ 空的,因为在那个时候 payload 还没有被发布。 $B$ 空的和 $B$ 完整的之间的决定最初是由 AC 做出的,然后由 $slot(B)+1$ 轮的证明来巩固,正如我们在下一节中讨论的那样。 在那个时候,那些证明是唯一区分 $B$ 空的和 $B$ 完整的分叉选择权重,因为来自 $slot(B)$ 的证明对两者都有效,因此它们完全决定了它们之间的最终决定。


在 slot N+1 中的证明者运行分叉选择,并确定链的头部是什么。 根据是否达到来自 slot $N$ 的信标块,有两种情况:
正如在可用性委员会的部分中已经提到的那样,“由 bitfield 引用的 IL”是指“所有由 bitfield 中有 1 的 IL 提议者发送的 IL,仅排除 双重提议 者”。
- 原文链接: hackmd.io/UX7Vhsv8RTy8I4...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!