激活合约 必须要指出的是,访问列表的主要目的不是使用gas,正如EIP所解释的: “EIP-2929所引入的是减轻合约破坏风险,因为交易可预先指定和支付交易计划访问的帐户和存储slot。因此,在实际执行中,SLOAD和EXT*操作码只需要100 gas,这已经足够低了,它不仅可防止因该EIP而导致的破坏,还可以“激活”由于EIP 1884而卡住的任何合约。”这意味着,如果一个合约对执行某些操作的成本做出假设,那么gas成本的增加可能会导致它无法工作。例如,一个合约调用另一个合约(例如someOtherContract.someFunction{gas: 34500}())因为它假设某个函数正好使用34500 gas,那么它就会中断,但如果在事务中包含适当的访问列表,那么合约将再次工作。 如果你想自己测试这些EIP,你可以复制这个repo,它有几个可使用Hardhat和geth执行的示例。有关说明,请查看README文件。 相关资料: 1、EIP-2929和EIP-2930 2、EIP-2930依赖于柏林硬分叉的另一组成部分:EIP-2718; 3、EIP-2929引用了大量EIP-2200的内容,所以如果你想更深入地了解gas成本,你应该从EIP-2200开始; 4、有关比较gas使用量变化的更复杂示例; (责任编辑:admin) |