本文介绍了以太坊的延迟执行方案,该方案将区块验证与交易执行解耦,从而提高吞吐量。核心思想是先进行静态验证(仅依赖先前的状态),然后延迟执行交易,允许跳过无效交易。区块提议者预先支付交易包含成本,以补偿网络。这种机制可以提高效率,但也带来了对提议者流动性需求和协议复杂性的权衡。
非常感谢 Francesco 的反馈、审查和协作!
以太坊要求每个区块在被认为是有效之前都要完全执行。每个区块头都提交到一组执行输出——比如新的状态根、收据和日志——这些输出是处理该区块内每个交易的结果。这种紧密耦合意味着验证者必须在新区块出现时立即运行每个交易,使得执行成为关键路径中固有的部分。
一个被称为延迟执行的提议解决方案(由 Francesco 规范,此处),通过将区块验证与立即交易执行解耦,提供了一种优雅的方法。在这篇文章中,我将介绍这种机制如何工作,以及它可能对扩展意味着什么。
此外,请查看 Francesco 关于延迟执行的文章,该文章探讨了除本文描述的方法之外的另一种潜在方法。
在以太坊中,每个区块都通过包含一个密码学承诺链接到它的前任,这个承诺不仅指向前一个区块的头部,还指向该区块中所有交易产生状态。
以下是发生的情况:
state_root
、receipt_root
和日志 bloom
之类的字段。这些字段只有在交易被执行之后才能生成。\
state transition now1241×431 25.1 KB
延迟执行通过将区块处理分成两个不同的阶段来挑战这种范式:
这种解耦意味着验证者可以快速地就区块的有效性达成一致,而无需预先执行每个交易。本质上,区块使用不需要完全执行的最小数据“链接”到它的前任。
\
state transition with delayed execution1142×350 24.6 KB
我们可以已经在完成最小的静态验证后就证明区块,而不是在证明之前完全执行区块。这减轻了关键路径上的压力。以下是效率提升的简化说明。它比较了当前的情况(顶部)与延迟执行(底部):
下图有一个(不完整的)我们在状态转换期间所做事情的列表。 只有最初的、静态验证阶段(仅依赖于之前的状态)需要立即执行,而更复杂的、改变状态的操作可以安全地延迟到证明之后。
\
state transition function840×690 105 KB
理论上,这种改变可以将效率提高多达 8 倍,假设区块在 slot 的第 3 秒到达,证明截止日期保持在第 4 秒,并且最坏情况下的执行时间是 1 秒(基于第 99.9999 个百分位)。特别感谢 Marek、Ben 和 Łukasz 提供这个数字。
也就是说,请谨慎对待这个估计——你可能更现实地期望大约 5 倍 的改进。
延迟执行机制中的一个新颖概念是允许跳过交易。在当前的协议下,一个无效的或资金不足的交易可能会使整个区块无效。延迟执行引入了一种更具弹性的方法:
Coinbase
预先支付费用: 为了保护网络免受包含这些交易的成本的影响,区块提议者的账户(被称为 COINBASE
)预先支付“包含成本”。此成本涵盖基本费用,如基本交易成本和 calldata 费用。COINBASE
预先支付。这种机制消除了拥有消耗资源而不支付费用的交易的风险。\
delayed execution flow1181×331 20.9 KB
通过允许跳过无效交易而不使整个区块无效,该提议将繁重执行的负担从立即验证过程中转移开。类似于 EIP-7732 (ePBS),我们减轻了关键路径上执行和状态根验证的沉重负担。
COINBASE
的作用和直接赞助(可选)延迟执行可以为直接赞助创造新的机会。由于 coinbase 已经预先支付了包含成本,因此将此责任扩展到基本费用也是合理的。
这是它的工作原理:
COINBASE
的签名承诺: 区块头部带有来自 COINBASE
地址的签名。此签名承诺 COINBASE
负责预先支付所有包含成本。实际上,COINBASE
会赞助可能资金不足(=无法支付基本费用)的交易的执行。COINBASE
负责支付初始费用,该协议可以允许不严格满足最低费用要求的交易。这为新的可能性打开了大门,例如 gasless 或赞助交易,其中发送者可能没有足够的 ETH 预先支付,但在执行成功后会得到报销——或者 COINBASE
收回成本。延迟执行和区块级基本费用机制是应该独立解决的单独主题。但是,COINBASE 承诺支付包含成本也可以扩展到承诺赞助基本费用。
有关为什么区块级市场有可能为更有效的资源分配做出贡献的更多详细信息,请查看 Barnabé 关于 区块级市场 的文章。
在延迟执行下,区块链接在一起的方式经历了一个小的转变:
state_root
、receipt_root
和日志 bloom
被延迟。这些字段不是反映区块的立即执行,而是保存来自父区块的值。这意味着可以在不执行其所有计算工作的情况下确认区块的有效性。无效交易可以包含在区块中。COINBASE
的余额中扣除。如果交易被跳过,COINBASE
将失去为该交易预付的包含成本。如果交易成功执行,COINBASE
预付的包含成本将由交易的发送者退还。COINBASE
可以支付包含成本)和后续的执行阶段,在该阶段中,交易将被处理或根据需要跳过。这种设计减轻了关键路径的执行,从而可以更快地验证和证明区块。最终,它会产生一个更具可扩展性和灵活性的协议,因为交易执行的繁重工作可以相对于区块证明异步处理。
优势:
权衡:
COINBASE
地址必须有足够的资金来支付区块的最大可能包含成本,这可能会引入流动性限制,尤其是在基本费用较高的时期。最大包含费用等于 gas_limit * base_fee
,因此,在 base_fee
为 100 GWEI 的情况下,我们达到了 3 ETH。对于流程图爱好者,以下是目前如何指定所述机制;这包括区块级基本费用功能和跳过交易,通过 EELS 实现 此处:
\
flow chart of complete flow with skipped transactions adn sponsoring891×3640 285 KB
^在此处找到此图的未压缩版本 此处。
- 原文链接: ethresear.ch/t/delayed-e...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!