该提案建议修改以太坊区块结构,将区块n中的stateRoot
引用延迟一个区块,指向区块n-1执行后的状态,而非区块n执行后的状态。此举旨在将stateRoot
的计算从区块验证的关键路径中移除,从而减少L1的延迟,并释放容量以增加L1的吞吐量。这种延迟可能对轻客户端和无状态客户端产生影响,但总体评估认为收益大于潜在问题。
目前,每个区块头都包含一个 stateRoot
,它代表执行该区块内所有交易后的状态。这种设计要求区块构建者和中间人(如 MEV-Boost 中继)计算 stateRoot
,这在计算上是密集的,并且在区块生产期间增加了显著的延迟。
本提案建议修改以太坊区块结构,以便区块 n
中的 stateRoot
引用区块开始时的状态(即,在执行区块 n - 1
中的交易之后,而不是区块结束时的状态)。
通过将 stateRoot
引用延迟一个区块,我们的目标是从链顶区块验证的关键路径中移除 stateRoot
计算,从而减少 L1 延迟并释放容量以增加 L1 吞吐量。
在验证区块 n
时,节点会确保 stateRoot
与执行区块 n-1
后的状态相匹配(即,区块 n
的 pre-state root)。
需要明确的是,执行顺序没有任何改变。区块 n
中的交易仍然应用于区块 n-1
产生的状态。
stateRoot
的计算和验证在区块生产的关键路径上是不必要的工作。构建者必须首先计算 stateRoot
才能在 MEV boost 上提议一个区块,并且验证委员会必须计算 stateRoot
才能与提议的 stateRoot
进行比较,才能验证一个区块。stateRoot
计算本身约占所有参与共识的参与者在链顶工作所花费时间的 一半。 此外,stateRoot
计算所带来的任何延迟影响都会在关键路径上支付两次:一次是在区块构建阶段,另一次是在验证期间。
stateRoot
。通过调查四个最大的构建者中的三个,每个构建者平均只花费 40%-50% 的时间实际构建每个区块,其余时间用于 stateRoot
计算。stateRoot
计算上。stateRoot
。商品硬件 Reth 节点在实时同步期间大约 70% 的时间花在 stateRoot
上(其余时间用于执行)。\
RETH benchmarks2130×1118 161 KB
RETH 大约 70% 的区块处理时间花在 stateRoot
计算上。
这些参与者——构建者、中继和验证者——对延迟高度敏感。他们在 slot 边界附近受到严格的时间约束(特别是随着时间博弈的日益普及)。
在链顶引入的 stateRoot
验证延迟是不必要的,移除它可以让我们改善区块生产流程的健康状况和网络稳定性。
stateRoot
的好处stateRoot
的时间可以重新分配给执行。stateRoot
验证将与下一个插槽并行进行流水线处理(即在节点当前空闲的时间内)。在激活吞吐量增加之前,带宽要求增加和状态增长也需要是可以接受的。stateRoot
节省的时间也可以分配来缩短 slot 时间——改善 L1 以太坊 UX,并可能导致去中心化交易所用户的点差更小。stateRoot
延迟意味着他们将不再需要担心优化它,从而提高区块生产流程的健康状况和效率。stateRoot
来验证交易和账户余额,而无需下载整个区块链。一个区块的延迟会在访问最新的状态信息时引入延迟。跨链通信协议(如利用轻客户端的桥)也会遇到这种延迟。
stateRoot
来验证交易见证。一个区块的延迟可能会影响即时交易验证。
stateRoot
计算可以显著减少区块验证时间。stateRoot
引用的位置。这与现有的区块生产流程(即原生构建和 MEV-Boost)向后兼容。其他包括执行流水线处理的提案,如 ePBS,在范围和复杂性上要广泛得多。延迟 stateRoot
是我们可以做出的一种更简单的改变,它可以立即带来好处,而且风险很小。我们邀请社区就本提案提供反馈,特别是:
stateRoot
计算并将时间重新分配给执行,我们能够榨取多少吞吐量?stateRoot
的开发人员告知我们。我们计划将此提案正式化为 EIP,以便可能包含在 Pectra B 中。
感谢 Dan Robinson、Frankie、Robert Miller 和 Roman Krasiuk 对本提案的反馈和意见。
- 原文链接: ethresear.ch/t/proposal-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!