You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将address(0)定义为常量是否能提升Gas效率?

智能合约中address(0)内联使用与常量引用的Gas效率对比

核心结论

当需要50次频繁使用零地址时,定义public constant常量替代内联address(0)的方案更节省Gas。

具体Gas成本分析

  • 内联address(0)的开销:每次写入address(0),编译器会生成对应20字节的零值数据,单次调用虽开销不高,但50次累计后,总Gas成本会随使用次数线性增加。
  • 使用public constant常量的开销:
    1. 部署阶段:address public constant NULLADDRESS = address(0);会将零地址嵌入合约字节码的常量区域,仅需一次部署开销。由于常量不占用合约存储(storage),这部分的Gas成本极低。
    2. 调用阶段:每次引用NULLADDRESS时,编译器直接指向字节码中已存在的零地址常量,无需重复生成20字节零值,单次引用的Gas开销远低于内联写入,50次累计下来能显著减少总开销。

补充注意事项

  • 若仅少数几次(1-2次)使用零地址,两种方案的Gas差异可忽略;使用次数越多,常量引用的优势越突出。
  • 若仅在合约内部引用零地址,可将常量定义为internal,避免public自动生成的外部getter函数,进一步降低不必要的开销。

内容的提问来源于stack exchange,提问作者Ashraile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:16:31