撰文:dwong
Pectra 升级是以太坊网络的下一个重要里程碑,预计将于 2025 年第一季度实施。这次升级包含两个主要部分:Prague(布拉格)执行层升级和 Electra(星座名)协议层升级。
与之前的重大升级不同,Pectra 并没有一个突出的主要目标,而是聚焦于多个技术改进和优化。这与 Dencun 升级(大幅降低 L2 费用)或 Shapella 升级(允许质押的 ETH 提款,完成以太坊向权益证明(PoS)转变的最后一步)形成对比。
最新进展
最近,以太坊核心开发者(ACD,All Core Developers)在电话会议中讨论了将 Pectra 升级分拆成两个阶段的可能性。根据这一提议:
- Pectra 升级将包含 pectra-devnet-3 的 EIPs(详见下文)。
- 原计划中的 EOF(EVM 对象格式)和 PeerDAS(Peer Data Availability Sampling)内容将被推迟到下一次升级,暂定名为 Fusaka(Fulu + Osaka)。
- 原本计划在 Osaka(大阪)中实施的 Verkle Trees 相关内容将进一步推迟,可能会在后续的 Amsterdam(阿姆斯特丹)升级中实现。
这种分阶段的方法旨在确保每次升级的规模和复杂度保持在可控范围内,同时也为各项技术的充分测试和完善留出足够时间。
Pectra 升级相关 EIPs
已确定包含的 EIPs
- EIP-2537[1]:BLS12-381 曲线操作的预编译
- EIP-2935[2]:在状态中保存历史区块哈希
- EIP-6110[3]:在链上提供验证者存款
- EIP-7002[4]:可触发的执行层退出
- EIP-7251[5]:增加最大有效余额
- EIP-7549[6]:将委员会索引移出证明
- EIP-7685[7]:通用执行层请求
- EIP-7702[8]:为一个交易设置 EOA 账户代码
考虑中的 EIPs
- EIP-7212: 支持 secp256r1 曲线的预编译
- EIP-7547[9]:包含列表
- EIP-7623[10]:增加 calldata 成本
- EIP-7742[11]:解除共识层和执行层之间的 blob 计数关系
关键 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。这一变更有多重益处:
- 允许大型节点运营商合并为较少的验证者,提高运营效率。
- 为小型质押者提供获得复利奖励的机会,增加质押的吸引力。
- 提供更灵活的质押选项,吸引更多参与者。
- 减少网络中的冗余验证者,降低 P2P 消息的数量。
- 减小 BeaconState 的内存占用,提高系统效率。
- 配合增强执行层的部分提款机制,进一步优化整个以太坊网络的资金流动性。
EIP-7549:将委员会索引移出证明
该提案建议将委员会的 index 字段从签名的证明消息中移除,以实现相同共识投票的聚合。这一变更的主要目标是提高 Casper FFG 客户端的效率,通过减少验证共识规则所需的平均配对数量来实现。虽然所有类型的客户端都能从这一改进中受益,但对于需要证明 Casper FFG 共识的 ZK 电路来说,这一变更可能带来最显著的性能提升。
EIP-7685:通用执行层请求
该提案定义了一个通用框架,用于存储和处理由智能合约触发的请求。具体实现是在执行头和正文中各增加一个字段来存储请求信息,从而将这些请求暴露给共识层,允许其处理每一个请求。这一机制的设计主要是为了应对智能合约控制的验证者日益增加的需求,为未来更复杂的链上交互提供基础。
EIP-7702:为一个交易设置 EOA 账户代码
由 Vitalik Buterin 等人提出的 EIP-7702 旨在优化以太坊的账户抽象(account abstraction)。该提案引入了一种新的交易类型,允许外部拥有账户(EOA)通过授权机制设置账户代码。这一改进支持多项新功能:
- 批量操作:允许 EOA 在同一交易中执行多个操作,提高效率。
- 代付交易:为第三方支付交易费用提供便利。
- 权限降级:增强账户的安全性和灵活性。
通过采用新的交易结构,该提案不仅提升了 EOA 的功能性和可用性,还为未来的账户抽象技术提供了良好的兼容性和扩展性。
结语
Pectra 升级虽然没有一个突出的主要目标,但通过一系列技术改进和优化,将进一步增强以太坊网络的功能、安全性和效率。随着升级计划的推进,我们可能会看到更多的 EIP 被纳入或调整。
参考资料
EIP-7600: Pectra 硬分叉元数据[12]
以太坊核心开发者共识层会议#197[13]
[1]EIP-2537: https://eips.ethereum.org/EIPS/eip-2537
[2]EIP-2935: https://eips.ethereum.org/EIPS/eip-2935
[3]EIP-6110: https://eips.ethereum.org/EIPS/eip-6110
[4]EIP-7002: https://eips.ethereum.org/EIPS/eip-7002
[5]EIP-7251: https://eips.ethereum.org/EIPS/eip-7251
[6]EIP-7549: https://eips.ethereum.org/EIPS/eip-7549
[7]EIP-7685: https://eips.ethereum.org/EIPS/eip-7685
[8]EIP-7702: https://eips.ethereum.org/EIPS/eip-7702
[9]EIP-7547: https://eips.ethereum.org/EIPS/eip-7547
[10]EIP-7623: https://eips.ethereum.org/EIPS/eip-7623
[11]EIP-7742: https://eips.ethereum.org/EIPS/eip-7742
[12]EIP-7600: Pectra 硬分叉元数据: https://eips.ethereum.org/EIPS/eip-7600
[13]以太坊核心开发者共识层会议#197: https://www.galaxy.com/insights/research/ethereum-all-core-developers-execution-call-197/