Pectra 升级是以太坊网络的下一个重要里程碑,预计将于 2025 年 4 月在以太坊主网上线。这次升级包含两个主要部分:Prague(布拉格)执行层升级和 Electra(星座名)协议层升级。

与之前的重大升级不同,Pectra 并没有一个突出的主要目标,而是聚焦于多个技术改进和优化。这与 Dencun 升级(大幅降低 L2 费用)或 Shapella 升级(允许质押的 ETH 提款,完成以太坊向权益证明(PoS)转变的最后一步)形成对比。

Pectra 升级相关 EIPs

  • EIP-2537:BLS12-381 曲线操作的预编译
  • EIP-2935:在状态中保存历史区块哈希
  • EIP-6110:在链上提供验证者存款
  • EIP-7002:可触发的执行层退出
  • EIP-7251:增加最大有效余额
  • EIP-7549:将委员会索引移出证明
  • EIP-7623:增加调用数据成本
  • EIP-7685:通用执行层请求
  • EIP-7691:增加 Blob 吞吐量
  • EIP-7702:设置 EOA 账户代码
  • EIP-7840:将 Blob 计划添加到 EL 配置文件

关键 EIP 简介

EIP-2537:BLS12-381 曲线操作的预编译

该提案引入了 BLS12-381 曲线上的预编译操作,大大提高了 BLS 签名验证等操作的效率。与现有的 BN254 预编译相比,BLS12-381 提供了更高的安全性(超过 120 位,而 BN254 仅为 80 位)。这一改进不仅包括基本的曲线运算,还集成了多重指数运算,为高效聚合公钥和签名奠定了基础。

EIP-2935:在状态中保存历史区块哈希

该提案建议将最近 8192 个区块的哈希存储在系统合约中,这一改变主要是为了支持无状态客户端的执行。通过这种方式,无状态客户端可以更容易地获取必要的历史信息,同时保持现有 BLOCKHASH 操作码的兼容性。这不仅简化了区块哈希历史的存储机制,还为访问历史数据提供了新的途径。

EIP-6110:在链上提供验证者存款

该提案将验证者存款的过程直接整合到以太坊执行层的区块结构中。这一变更将存款的包含和验证责任从共识层转移到执行层,消除了共识层对存款(或 eth1data)进行投票的需求。通过分析存款交易的合约日志事件来生成存款列表,这种方法不仅提高了存款处理的安全性和效率,还改善了用户体验。此外,它还简化了客户端软件的设计,降低了整体系统的复杂性。

EIP-7002:可触发的执行层退出

该提案引入了一种新机制,允许验证者通过执行层(0x01)撤回凭证来触发撤回和退出操作。具体实现是将撤回消息附加到执行层区块中,然后由共识层进行处理。这种方法为验证者提供了更灵活的退出选择,同时保持了系统的安全性和一致性。

EIP-7251:增加最大有效余额

该提案旨在提高以太坊验证者的最大有效余额(MAX_EFFECTIVE_BALANCE),同时保持最小质押余额为 32 ETH。这一变更有多重益处:

  1. 允许大型节点运营商合并为较少的验证者,提高运营效率。
  2. 为小型质押者提供获得复利奖励的机会,增加质押的吸引力。
  3. 提供更灵活的质押选项,吸引更多参与者。
  4. 减少网络中的冗余验证者,降低 P2P 消息的数量。
  5. 减小 BeaconState 的内存占用,提高系统效率。
  6. 配合增强执行层的部分提款机制,进一步优化整个以太坊网络的资金流动性。

EIP-7549:将委员会索引移出证明

该提案建议将委员会的 index 字段从签名的证明消息中移除,以实现相同共识投票的聚合。这一变更的主要目标是提高 Casper FFG 客户端的效率,通过减少验证共识规则所需的平均配对数量来实现。虽然所有类型的客户端都能从这一改进中受益,但对于需要证明 Casper FFG 共识的 ZK 电路来说,这一变更可能带来最显著的性能提升。

EIP-7623:增加调用数据成本

该提案主要针对交易中的 calldata 成本进行调整,以减少最大区块尺寸并缓解区块大小过大的问题。它透过引入新的“底价机制”(由 TOTAL_COST_FLOOR_PER_TOKEN 参数控制),在数据量过大的交易时提升每字节的 gas 费用,从而抑制单笔交易的最大数据规模;但若交易大部分依赖 EVM 执行而不是传递大量数据,则仍维持现行的低费用。

此提案为网络升级带来以下影响:减少最大区块大小;保证普通用户成本不变;

EIP-7685:通用执行层请求

该提案定义了一个通用框架,用于存储和处理由智能合约触发的请求。具体实现是在执行头和正文中各增加一个字段来存储请求信息,从而将这些请求暴露给共识层,允许其处理每一个请求。这一机制的设计主要是为了应对智能合约控制的验证者日益增加的需求,为未来更复杂的链上交互提供基础。

EIP-7691:增加 Blob 吞吐量

该提案旨在提升区块内可包含的 blob 数量,从当前的 3/6(目标/最大)增加到 6/9,以进一步提升 L1 向 L2 提供数据的能力。它基于此前对大区块与大 blob 的测试结果,通过增大目标和最大 blob 数量来提高以太坊的整体吞吐量。 此提案主要集中于简化客户端的实现与测试工作,同时为未来更进一步的扩容方案留出空间。

EIP-7702:为一个交易设置 EOA 账户代码

由 Vitalik Buterin 等人提出的 EIP-7702 旨在优化以太坊的账户抽象(account abstraction)。该提案引入了一种新的交易类型,允许外部拥有账户(EOA)通过授权机制设置账户代码。这一改进支持多项新功能:

  1. 批量操作:允许 EOA 在同一交易中执行多个操作,提高效率。
  2. 代付交易:为第三方支付交易费用提供便利。
  3. 权限降级:增强账户的安全性和灵活性。

通过采用新的交易结构,该提案不仅提升了 EOA 的功能性和可用性,还为未来的账户抽象技术提供了良好的兼容性和扩展性。

EIP-7840:将 Blob 计划添加到 EL 配置文件

该提案提议在客户端配置文件中添加一个名为 blobSchedule 的新对象。这个对象用于每个分叉(fork)列出每个区块的目标 blob 数量和最大 blob 数量。其主要动机是确保能够动态调整每个区块的目标和最大 blob 数量,以及 blob 基础费用更新系数,从而避免通过引擎 API 进行复杂的握手。

结语

Pectra 升级虽然没有一个突出的主要目标,但通过一系列技术改进和优化,将进一步增强以太坊网络的功能、安全性和效率。

参考资料