Pectra 升级已确定纳入哪些 EIP?是否会加剧 ETH 通胀?
已确定的 EIP 将提升账户的可编程性、以太坊的验证效率及质押优化等,未确定的 EIP 聚焦于如何提升 L2 扩展性。
以太坊下一次升级 Pectra,其名称来源于 Prague 和 Electra 的组合。
Prague 代表执行层的升级,得名于以太坊开发者大会(Devcon 4)的举办城市布拉格,而 Electra 则象征共识层的升级,依照字母顺序以星星命名。这次选择的星名 Electra 对应字母「E」。
Pectra 升级作为以太坊历史上可能涉及最多 Ethereum Improvement Proposals(EIP)的一次硬分叉,不仅包含了一系列针对验证者操作和主网性能提升的提案,还引入了优化 L2 的提案。Pectra Devnet 4 测试网刚上线,目前已经有8个 EIP 确定包含在 Pectra 升级中。
确定纳入的 EIP 以及产生的影响
这8个 EIP 对用户的影响体现在:通过为 EOA 添加代码执行能力提高了账户的灵活性,使其能够执行更复杂的操作;提升质押上限可能增加对 ETH 的需求;同时,优化验证者的流程提升了安全性和效率,提高了以太坊的速度和吞吐量。
EIP-2537(支持 BLS 签名):通过引入一系列预编译合约(precompiles),为以太坊增加对 BLS12-381 曲线运算的支持,可以实现 BLS 签名验证,并允许多个签名聚合为一个签名,从而减少验证时的复杂度。BLS 签名是一种密码学算法,能够生成较小的签名并支持签名聚合。这将有助于需要进行大量的签名验证和数据验证操作的 L2 更好地运行。
EIP-2935(在状态中保存历史区块哈希):通过将最近 8192 个区块哈希存储在系统合约中,以支持无状态客户端(Stateless Clients) 模型,并提供更灵活的历史区块哈希查询功能。这些哈希值可以通过合约直接查询,并作为证明(witness)捆绑,提供给无状态客户端。客户端无需自己维护完整的区块链历史或存储大量数据,只需依赖通过状态中存储的区块哈希和相关证明就能够验证区块和交易的合法性。
EIP-6110(在链上提供验证者存款):将验证者存款的处理从共识层转移到执行层,在链上进行处理和验证,而不再依赖共识层中的额外投票机制来确认存款信息的有效性。增强了存款流程的安全性,减少了处理延迟,同时简化了共识层和客户端的设计。
EIP-7002(执行层可触发的退出):允许持有提款凭证的所有者能够独立发起退出,而无需依赖验证者的活跃密钥(BLS 密钥),增加了用户自主性。目前,只有验证者的活跃密钥才能触发退出,这意味着如果活跃密钥丢失,或验证者将验证任务委托给第三方(如质押服务提供商),提款凭证的所有者(即资金的实际所有者)无法自主控制质押的 ETH。该提案通过执行层触发 ETH 的退出和提款操作,持有者可以通过提款凭证发起退出,无需依赖活跃密钥。
EIP-7251(增加质押上限):增加验证者的最大有效余额,从而允许每个验证者可以持有超过 32 ETH 的质押,而最低质押门槛仍然保持为 32 ETH。旨在让大节点运营者通过合并多个验证器减少网络中的验证者数量,从而减少 P2P 消息、签名聚合以及存储负担。
EIP-7549(将委员会索引移出证明):通过将委员会索引字段移出 Attestation(证明)消息,实现更高效的共识投票聚合。当前在以太坊的共识机制中,每个验证者在投票包含:LMD GHOST 投票(包含投票的区块根和时隙)、Casper-FFG 投票(包含源和目标信息)、委员会索引(验证者所属的委员会编号)。由于委员会索引被包含在签名消息中,当多个验证者对相同的区块进行投票时,即使他们的投票内容相同,生成的签名根也不同,导致这些投票无法轻松聚合。将委员会索引字段移出签名消息本身,从而实现更高效的投票聚合,减少验证成本和网络负载。
EIP-7685(通用执行层请求):为执行层(EL)定义一个通用框架,用于存储和处理由智能合约触发的请求。这一框架支持更多的执行层触发行为,并且使得不同类型的请求能够被统一处理,简化了添加新请求类型的过程,而无需修改执行块结构。
EIP-7702(为 EOA 添加代码执行能力):为外部拥有账户(EOA)添加代码执行功能,从而增强账户的灵活性和可编程性。EOA 通过授权签名的方式,指定一个智能合约来代理执行某些操作,比如批量交易或权限控制。在不需要转变为智能合约账户的情况下,具备一定的智能合约功能。
重点考虑的 EIP
以下是一些正在积极考虑的 EIP,主要通过优化 blob,提高了 L2 数据发布的费用稳定性、增强了 L2 的交易处理能力,并有效降低了 L2 的成本。此外,增加 calldata 成本的调整可能会影响 ETH 的销毁量,加大 ETH 的通胀压力。
EIP-7742(解除共识层和执行层之间的 blob 计数依赖):将共识层与执行层之间的 blob 数量解耦,简化 blob 验证流程,减少不必要的复杂性,提高协议的扩展性和灵活性。在当前协议中,执行层和共识层都硬编码了 blob 的最大值,导致了冗余的验证。该提案取消了执行层对 blob 最大值的验证,改为由共识层动态提供 blob 目标值给执行层。这样一来,可以更灵活地调整 blob 目标参数,适应未来的扩容需求。EIP-7742 是正在考虑纳入升级的 EIP 列表中争议最小的提案,根据最新的共识层会议,开发者同意开始在 pectra-devnet 5 中实现 EIP 7742,但其是否会正式纳入,还需要等待执行层在 ACDE(全体核心开发者执行层会议)上的反馈。
EIP 7762(最低 blob 基础费用):提高 MIN_BASE_FEE_PER_BLOB_GAS,目的是减少 blob 价格调整至合理水平所需的时间。目前,最低 blob 基础费用设置为 1 wei,当 blob 需求超过供应时,价格发现过程(即确定合理的 blob Gas 价格)过于缓慢,需要很长时间才能达到合适的费用水平。通过提高最低 blob 基础费用,可以缩短价格调整的时间,能够更快实现市场均衡,确保网络在需求高峰时仍能保持稳定。
EIP-7623(增加 calldata 成本):提高交易中 calldata 的成本,以减少区块的最大大小及其变动范围,确保网络能够更加平稳地处理交易。当前区块最大大小约为1.79 MB,但由于 rollups 等应用的大量数据发布,平均区块大小不断增加。通过增加主要用于数据可用性(DA)交易的 calldata 成本,将区块最大大小减少至约0.72 MB,为未来增加区块 Gas 限制或更多 blob 留出空间。普通用户的交易成本保持不变,此更改主要影响依赖以太坊进行大规模数据存储的交易类型。不过,calldata 成本的增加可能会降低以太坊在数据存储方面的竞争力。此外,calldata 成本增加,交易数量可能因此减少,导致通过 EIP-1559 机制销毁的 ETH 也相应减少,进而给 ETH 带来更大的通胀压力。
EIP 7782(缩短 slot 时间):将以太坊 slot 时间从12秒缩短至8秒,更频繁地生成区块来处理更多的交易,将此作为增加 blob 数量的替代方案,以提高交易吞吐量。但可能会破坏某些硬编码了12秒 slot 时间的智能合约,并加速以太坊的状态膨胀问题,增加存储和计算负担。
EIP-7783(逐步增加区块 Gas 费限制):作为 EIP-7782 更温和的替代方案,通过动态调整区块的 gas 限制,逐步增加每个区块可容纳的交易数量,从而提高网络的处理能力。相比直接缩短 slot 时间,逐步调整 gas 限制可以使网络扩展更加平稳。这个提案不需要硬分叉,但可能会对状态数据产生影响。
由于 Pectra 升级包含大量 EIP,为了减少单次升级的复杂性并加快部分 EIP 的上线,在5月,以太坊基金会的工程师团队 EthPandaOps 建议将 Pectra 拆分为两个部分,但当时担心会延迟升级,因此未被认真考虑。9月,以太坊研究员 Alex Stokes 再次提出拆分建议,这次得到了开发者的认同,这种拆分有助于在六个月内完成升级的第一部分:
第一部分:包括已经在 Pectra Devnet 测试网运行的 EIP(即已经确定的8个 EIP),它们相对来说更容易实施,并且已经通过了大量的测试。
第二部分:将较复杂的 EIP(如 PeerDAS、EOF 相关的提案)和其他需要更多时间测试的提案放在第二阶段。这些提案需要进一步的开发、审计和测试,特别是涉及共识层和执行层协调的提案。