编译器层面的提升
Solidity 编译器近一年完成多次小版本更新。0.8.24 后正式支持 transient storage,开发者可显式使用 TSTORE/TLOAD;0.8.25 优化常量传播,让部分硬编码表达式直接折叠为字面值;0.8.26 改进 viaIR 路径性能,让复杂函数享受更好的 yul-level 优化。
这些版本升级几乎不需改代码,只要更新版本号即可获得几个百分点的 gas 收益。Binance 智能链上多个团队已经把编译器升级纳入季度计划。
工具链新动态
Foundry 推出 forge gas-snapshot diff --strict 与自动化 lint 规则;Hardhat 升级 hardhat-gas-reporter 至 2.0,支持 markdown 报告与历史对比;Tenderly 在 dashboard 中加入 gas profiler,能逐条 trace 高消耗路径。
建议把 CI 中的 gas 报告作为 PR 必备物,让每次提交都接受量化审查。这是 币安 智能链上成熟团队的通用做法。
社区共识的变化
过去一年社区对部分技巧的态度有所调整:
- 过度使用内联汇编从「值得鼓励」变为「需谨慎」,原因是审计成本高、收益边际递减。
- custom errors 从「可选」上升为「默认」,被多数模板纳入标准。
- storage 槽合并仍被推崇,但要求配合 storage layout 校验工具,防止升级冲突。
B安 上币审核也据此调整反馈口径,更加强调可读性与安全性。
新增热点:EIP-1153 实战
多家协议尝试用 transient storage 替代 reentrancy guard,gas 节省 1500 左右。值得注意的是,目前部分 Layer2 与侧链尚未完全兼容,发布前需确认目标链支持情况。许多 必安 智能链兼容的链都已陆续支持。
案例分享:Uniswap V4 钩子优化
Uniswap V4 在测试网展示了大量 gas 优化手法,钩子合约结合 transient storage 与单一插槽设计,将每笔 swap 的 overhead 降低显著。社区围绕其源码做了大量 gas 对比,是不可多得的学习材料。
写在最后
Gas 优化是与时俱进的工程艺术。每次编译器升级、每个新 EIP、每个工具新版本,都可能改变最佳实践的内容。订阅相关 newsletter、关注核心维护者、定期复盘自己的合约,能让你的项目始终走在前沿。
持续跟进,未来你的合约将在 BN 智能链与多条 Layer2 上同时保持低 gas 优势,享受用户与合作伙伴的双重认可。