本文分析了以太坊 Pectra 升级对智能合约开发和安全性的潜在影响,重点关注 EIP-7702、EIP-7251、EIP-2537、EIP-2935、EIP-7002 和 EIP-7623 等关键提案,并讨论了它们对智能合约的安全性考虑和开发实践的影响,以便开发者能够构建更强大和安全的应用程序。
继我们之前对以太坊升级的分析,从 The Merge 到 Dencun,Pectra 升级代表了以太坊在持续的网络改进传统中的下一个重大硬分叉。虽然许多这些更改都集中在共识层,但有几个更改直接影响智能合约的安全性和功能。由于开发人员构建的是不可变的智能合约,因此了解这些更改对于维护安全假设和防止意外行为至关重要。
在这篇文章中,我们将探讨 Pectra 升级的关键组件及其对智能合约开发和安全的潜在影响。
EIP-7702可能是智能合约开发人员最重要的改变,因为它允许外部拥有的账户(EOA)在交易期间执行智能合约代码。
注意事项:
tx.origin == msg.sender
检查不再可靠地区分 EOA 和合约调用者。通过 EIP-7702,EOA 可以执行代码,从而很容易绕过此检查。因此,任何依赖于仅由 EOA 调用并通过此检查控制的功能都容易受到攻击。
通过将检查更新为 msg.sender.code.length == 0 && tx.origin == msg.sender
,仍然可以识别 EOA 账户并拒绝合约和启用 7702 的账户。这是因为 7702 账户的代码设置为 0xef0100 || address
,因此具有非零的 codesize。EIP-7251将验证者的最大有效余额增加到 2048 ETH,允许他们质押超过传统的 32 ETH 上限。
注意事项:
EIP-2537为 BLS12-381 曲线操作添加了预编译,从而可以进行更高效的加密操作。
注意事项:
EIP-2935通过在状态中存储最新的 8191 个哈希,使历史区块哈希更易于访问。
注意事项:
BLOCKHASH
操作码和相应的 Solidity block.hash
内置函数保持不变,从而确保向后兼容性。智能合约可以通过使用正好 32 字节的 calldata 调用新的系统合约来访问更大范围的历史区块哈希,这些 calldata 表示所请求区块的编号。如果请求的编号不在最新的 8191 个区块的范围内,则系统合约将恢复。EIP-7002允许从执行层触发提款请求,从而为验证者操作提供更大的灵活性。
注意事项:
uint64
。此调用还必须附加一个大于或等于当前提款请求费用的值。与 EIP-7251 类似,任何大于当前费用的附加值都不会退还,因此,建议在创建请求之前调用费用获取器。EIP-7623提高了 calldata 的 gas 定价,以减少最大区块大小。
注意事项:
CALL
操作码发起的调用,gas 定价保持不变,因此对智能合约系统的影响有限。Pectra 中引入了其他几个 EIP,但对智能合约安全性的直接影响很小:
Attestation
的结构。这仅与处理证明的协议有关。Pectra 升级继续推动以太坊朝着更加灵活和强大的平台发展。虽然大多数更改都保持了向后兼容性,但一些更改打破了以前的假设,需要智能合约开发人员仔细考虑。通过了解这些更改并相应地调整安全假设,开发人员可以继续在以太坊不断发展的基础上构建强大而安全的应用程序。
- 原文链接: blog.sigmaprime.io/pectr...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!