以太坊基金会研究员 mikeneuder 最近发布了一篇关于 ePBS 新设计的提案。此提案提出了一种 ePBS 新设计,称为 Payload-Timeliness Committee(PTC)。ePBS 中因为角色的拆分,会出现 builder 在特定时间段后可以任意时间发布 payload 的情况。而 PTC 的目的就是促进 payload 及时发布,如果不及时将被视为空块。
什么是 PBS / ePBS?
PBS 全称是 Proposer-builder separation,通过将验证节点分为多个角色(Proposer 和 Builder)更好实现抗审查和去中心化。MEV-Boost 采用的就是 PBS 机制。
而 ePBS(Enshrined PBS)是指让以太坊协议层能实现信任最小化的 PBS 解决方案,目标是通过以太坊协议内的机制捕获绝大多数 MEV,并以以太坊协议利益最大化的方式,将捕获的 MEV 分配给参与者。
前置概念
满块(full block)是指包含有效的 ExecutionPayload ,即包含一组有效的交易集合,这些交易将在该区块上被执行。满区块可以包含多个交易,交易的执行将产生状态变化并更新区块链状态(Execution Layer 状态)。
空块(empty block)是指没有有效的 ExecutionPayload ,即不包含任何交易的区块。是一个 CL (Consensus Layer)块,不会更新 EL(Execution Layer) 状态。
缺失块(missing block)是一个空 slot。通过 block-slot 投票,缺失区块可以变成满块或者空块。
PTC(Payload-Timeliness Committee)是证明委员会(attestation committee)的一个子集。PT 票数决定了该 slot 区块是满块还是空块,并且仅被下一个 slot 的 proposer 和证明委员会使用。决定了下一个 slot 的 proposer 构建在哪个版本的区块上,给下一个 slot 的证明委员会证明有效性提供参考。
分叉选择规则(fork-choice rule)考虑区块的子区块数量来确定主链,选择具有最大子区块数量的链作为主链。
目前的流程
区块广播:t=0 时,由当选 proposer 的 PoS 验证者提出区块。
证明聚合:t=4 时,验证截止时间,证明委员会使用分叉选择规则确定主链头,并做出验证。
聚合证明的广播:t=8 时,发送聚合证明。
最后,在当前 slot 结束后(t=12),下一个 slot 的 proposer 将构建在根据分叉选择规则选出来的块上。
加入新设计后的 ePBS 流程
区块广播:t=t0 时,bulider 将包含竞价(bid)和 ExecutionPayload head 的 CL 块给 proposer,proposer 在这个 slot 开始时广播
证明聚合:t=t1 时,证明委员会使用分叉选择规则来确定主链头,并做出验证。
聚合证明和 payload 的广播:t=t2 时,发送聚合证明。同时 bulider 发布他们的 ExecutionPayload,以构建该块的完整版本。
PT 投票广播:t=t3 时,PTC 对 ExecutionPayload 的发布时机进行投票,即判断该 payload 是否及时。
最后,在当前 slot 结束后(t=t4),下一个 slot 的 proposer 发布他们的区块,根据 PTC 的投票结果和聚合证明构建在满块或者空块上。当一个区块的 PT 票数中及时发布的百分比更高,那么它将被视为满块。
对比新流程和目前的流程,我们发现因为 ePBS 机制将构建区块和提出区块的角色分开,所以 payload 不再像之前一样,在 t=0 时验证者提出区块的时候就存在了,而是在聚合证明广播的同时由 bulider 发布,这便会带来 bulider 发布时间的问题。站在 bulider 经济利益角度,越晚发布越有更多的时间选择更多 MEV 的机会,但 bulider 延迟发布会对以太坊的安全性和共识层造成不良影响,这便是 PTC 要解决的问题,PTC对 bulider 发布 payload 的及时性进行投票,投票结果决定此区块的类型。如果 PTC 认为 bulider 发布 payload 是不及时的,那么此区块被定义为空块,换句话说此区块 payload 无效,bulider 将不会因包含有效 payload 而获得奖励。所以说 PTC 可以从经济角度促进 bulider 及时发布 payload,保证以太坊的安全性。
潜在的新攻击
1.恶意的 proposer 拆分网络:proposer 可以在接近验证截止时间时发布其区块,导致诚实的证明委员会出现分裂。其中一部分证明委员会会及时看到区块并对其投票,而另一部分验证委员会则会投票给缺失块。这种拆分可能会导致不同的分叉选择,增加了网络的不确定性。(*此攻击并不由 PTC 带来)
这种情况下,站在 builder 的角度,他必须决定是否释放与该区块相对应的 ExecutionPayload。
发布 payload:
如果证明委员会选择了 builder 的区块作为主链的一部分,那么 builder 发布的payload 成功被确认并成为区块链的一部分。
如果证明委员会选择了缺失块作为主链的一部分,那么 builder 发布的 payload 不会被包含在主链中,因为 builder 的块被孤立或丢弃。builder 发布的 payload 最终没有成为区块链的一部分。
保留 payload:
如果证明委员会选择了 builder 的区块作为主链的一部分,builder 无条件付款,并且不会获得因包含有效 payload 给予的奖励。
如果证明委员会选择了缺失块作为主链的一部分,builder 没有暴露其 payload。
2.恶意的 builder 拆分网络:builder 可以试图通过选择性地向 PTC 公开其 payload 来干扰下一个 slot 的 proposer 建块行为,使其在与 PT 投票结果相反的分支上建块,从而导致 proposer 的区块被孤立。