延迟执行和跳过交易 - 执行层研究

本文介绍了以太坊的延迟执行方案,该方案将区块验证与交易执行解耦,从而提高吞吐量。核心思想是先进行静态验证(仅依赖先前的状态),然后延迟执行交易,允许跳过无效交易。区块提议者预先支付交易包含成本,以补偿网络。这种机制可以提高效率,但也带来了对提议者流动性需求和协议复杂性的权衡。

延迟执行和跳过交易

非常感谢 Francesco 的反馈、审查和协作!

以太坊要求每个区块在被认为是有效之前都要完全执行。每个区块头都提交到一组执行输出——比如新的状态根、收据和日志——这些输出是处理该区块内每个交易的结果。这种紧密耦合意味着验证者必须在新区块出现时立即运行每个交易,使得执行成为关键路径中固有的部分。

一个被称为延迟执行的提议解决方案(由 Francesco 规范,此处),通过将区块验证与立即交易执行解耦,提供了一种优雅的方法。在这篇文章中,我将介绍这种机制如何工作,以及它可能对扩展意味着什么。

此外,请查看 Francesco 关于延迟执行的文章,该文章探讨了除本文描述的方法之外的另一种潜在方法。

区块链 1x1

在以太坊中,每个区块都通过包含一个密码学承诺链接到它的前任,这个承诺不仅指向前一个区块的头部,还指向该区块中所有交易产生状态

以下是发生的情况:

  • 依赖于执行的头部: 区块头部包含诸如 state_rootreceipt_root 和日志 bloom 之类的字段。这些字段只有在交易被执行之后才能生成。
  • 完全执行: 每个验证者在收到一个新区块后,必须执行所有交易来验证头部的承诺是否正确。这确保了区块与当前状态一致,但也迫使节点立即进行潜在的繁重计算。

state transition now\ state transition now1241×431 25.1 KB

延迟执行的概念

延迟执行通过将区块处理分成两个不同的阶段来挑战这种范式:

  1. 静态验证(预执行): 验证者仅使用之前的状态执行最小的检查。区块头部不是提交到新计算的 state_root 和相关字段,而是通过引用父区块中的值来推迟这些执行输出。
  2. 后证明执行: 交易的实际执行被延迟到区块被初始验证并被网络证明之后。

这种解耦意味着验证者可以快速地就区块的有效性达成一致,而无需预先执行每个交易。本质上,区块使用不需要完全执行的最小数据“链接”到它的前任。

state transition with delayed execution\ state transition with delayed execution1142×350 24.6 KB

我们可以已经在完成最小的静态验证后就证明区块,而不是在证明之前完全执行区块。这减轻了关键路径上的压力。以下是效率提升的简化说明。它比较了当前的情况(顶部)与延迟执行(底部):

overtime\ overtime1250×739 162 KB

下图有一个(不完整的)我们在状态转换期间所做事情的列表。 只有最初的、静态验证阶段仅依赖于之前的状态)需要立即执行,而更复杂的、改变状态的操作可以安全地延迟到证明之后

state transition function\ state transition function840×690 105 KB

理论上,这种改变可以将效率提高多达 8 倍,假设区块在 slot 的第 3 秒到达,证明截止日期保持在第 4 秒,并且最坏情况下的执行时间是 1 秒(基于第 99.9999 个百分位)。特别感谢 MarekBenŁukasz 提供这个数字。

也就是说,请谨慎对待这个估计——你可能更现实地期望大约 5 倍 的改进。

跳过交易的作用

延迟执行机制中的一个新颖概念是允许跳过交易。在当前的协议下,一个无效的或资金不足的交易可能会使整个区块无效。延迟执行引入了一种更具弹性的方法:

  • 包含但不执行: 交易仍然包含在区块的交易列表中,但如果它们未能满足某些条件(例如,资金不足、定价过低、不正确的 nonce 或其他依赖于执行的检查),则可能在执行期间被标记为“已跳过”。
  • Coinbase 预先支付费用: 为了保护网络免受包含这些交易的成本的影响,区块提议者的账户(被称为 COINBASE)预先支付“包含成本”。此成本涵盖基本费用,如基本交易成本和 calldata 费用。
  • 网络补偿: 即使交易被跳过,网络也会得到补偿,因为包含成本已由 COINBASE 预先支付。这种机制消除了拥有消耗资源而不支付费用的交易的风险。

delayed execution flow\ delayed execution flow1181×331 20.9 KB

通过允许跳过无效交易而不使整个区块无效,该提议将繁重执行的负担从立即验证过程中转移开。类似于 EIP-7732 (ePBS),我们减轻了关键路径上执行和状态根验证的沉重负担。

COINBASE 的作用和直接赞助(可选)

延迟执行可以为直接赞助创造新的机会。由于 coinbase 已经预先支付了包含成本,因此将此责任扩展到基本费用也是合理的。

这是它的工作原理:

  • COINBASE 的签名承诺: 区块头部带有来自 COINBASE 地址的签名。此签名承诺 COINBASE 负责预先支付所有包含成本。实际上,COINBASE 会赞助可能资金不足(=无法支付基本费用)的交易的执行。
  • 灵活的费用模型: 随着 COINBASE 负责支付初始费用,该协议可以允许不严格满足最低费用要求的交易。这为新的可能性打开了大门,例如 gasless 或赞助交易,其中发送者可能没有足够的 ETH 预先支付,但在执行成功后会得到报销——或者 COINBASE 收回成本。

延迟执行和区块级基本费用机制是应该独立解决的单独主题。但是,COINBASE 承诺支付包含成本也可以扩展到承诺赞助基本费用。

有关为什么区块级市场有可能为更有效的资源分配做出贡献的更多详细信息,请查看 Barnabé 关于 区块级市场 的文章。

深入了解

在延迟执行下,区块链接在一起的方式经历了一个小的转变:

  • 延迟的执行输出: 头部字段,例如 state_rootreceipt_root 和日志 bloom 被延迟。这些字段不是反映区块的立即执行,而是保存来自父区块的值。这意味着可以在不执行其所有计算工作的情况下确认区块的有效性。无效交易可以包含在区块中。
  • 包含成本计算: 对于每笔交易,都会计算包含成本,该成本通常包括基本成本(例如,21,000 gas)、calldata 费用和任何 blob gas 费用。在执行交易之前,此成本会从COINBASE的余额中扣除。如果交易被跳过,COINBASE将失去为该交易预付的包含成本。如果交易成功执行,COINBASE预付的包含成本将由交易的发送者退还。
  • 两阶段验证: 验证过程分为初始静态检查(确保区块在结构上是合理的,并且 COINBASE 可以支付包含成本)和后续的执行阶段,在该阶段中,交易将被处理或根据需要跳过。

这种设计减轻了关键路径的执行,从而可以更快地验证和证明区块。最终,它会产生一个更具可扩展性和灵活性的协议,因为交易执行的繁重工作可以相对于区块证明异步处理。

优势和权衡

优势:

  • 增加吞吐量: 通过将交易执行从立即验证路径中移除,可以更快地证明区块。
  • 增强的灵活性: 该模型简化了引入新的费用机制,例如赞助和 gasless 交易,这可以使以太坊对用户更具可访问性。

权衡:

  • 对于提案者/构建者的流动性要求: COINBASE 地址必须有足够的资金来支付区块的最大可能包含成本,这可能会引入流动性限制,尤其是在基本费用较高的时期。最大包含费用等于 gas_limit * base_fee,因此,在 base_fee 为 100 GWEI 的情况下,我们达到了 3 ETH。
  • 协议复杂性: 引入延迟执行涉及对以太坊执行层的重大更改。但是,与其他延迟执行提案不同,此方法避免了修改分叉选择功能,从而降低了复杂性。要更仔细地了解这些更改需要什么——尤其是如果你有兴趣添加基本费用赞助——请查看附录中的流程图和此处的 EELS 规范 此处

附录

对于流程图爱好者,以下是目前如何指定所述机制;这包括区块级基本费用功能和跳过交易,通过 EELS 实现 此处:

flow chart of complete flow with skipped transactions adn sponsoring\ flow chart of complete flow with skipped transactions adn sponsoring891×3640 285 KB

^在此处找到此图的未压缩版本 此处

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

0 条评论

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