Kent's Lab
首页关于我
    • Index
    • Circle的盛世隐忧:产品已经转型,收入结构还没有
    • 当我们与 Circle 谈合作时,稳定币创业公司还剩下什么?
    • 从 Coldcard 事件看随机数的重要性
    • 稳定币机制解构:失败模式与五层风险分析框架
    • 稳定币 MPC 门限签名钱包架构选型
    • 隐私稳定币的原生合规能力
    • 实测 Kohaku Wallet 后,我对 Web3 隐私的重新思考
    • GENIUS Act 框架解读
    • GENIUS Act 三条申请路径解读
    • 专栏导读
      • 模块导读
      • Gas Fee 计算方法
      • Gas 常量:EVM 操作成本
      • Storage 与 Transient Storage
      • Memory
      • Calldata
      • Yul 介绍
      • Foundry 介绍
      • 模块导读
      • 减少非零字节
      • 避免存储值从零变为非零
      • 缓存数据
      • 变量打包
      • 字符串尽量小于32个字节
      • 使用 constant 和 immutable
      • 使用 mapping 避免数组长度检查
      • 使用位图替换大量 bool
      • 使用 SSTORE2 或 SSTORE3 存储大量数据
      • 使用存储指针代替内存
      • 使用 Calldata 替换 Memory
      • 待验证:冗余操作
      • 数据类型的选择
      • 使用瞬态存储
      • 退款
      • 事件
      • 模块导读
      • payable
      • 预测合约地址的妙用
      • 优化合约元数据
      • 临时合约中使用 selfdestruct
      • 内部函数和修饰符
      • 待验证:修改器中使用内部视图函数
      • 使用克隆合约
      • 使用单体架构
      • 选择 Gas 优化库
      • 转账时使用 fallback 或 receive
      • 使用 EIP2930 预热存储槽
      • 使用自定义错误
      • 使用现有的 create2 工厂
      • Solidity 0.8+ 不再需要 SafeMath
      • external 与 public
      • 继承
      • 使用钩子转移代币
      • 仅使用一次的内部函数可以内联
      • 模块导读
      • 内存扩展优化
      • 内存优化:错误消息
      • 内存优化:调用合约
      • 内存优化:创建多个合约
      • 内存优化:多个外部调用
      • 内存优化:事件
      • 内存优化:Hash
      • 使用汇编检查Address(0)
      • 数学运算:min 和 max
      • 数学运算:偶奇校验
      • 待验证:selfbalance 与 address(this).balance
      • 模块导读
      • 条件优化:>= 还是 >
      • 条件优化:使用 ! 代替 == 判断
      • 待验证:无符号整数使用 != 0 代替 > 0
      • 条件优化:短路布尔值
      • 条件优化:拆分与返回关联的布尔表达式
      • 适当使用unchecked
      • Do-While 替换 for
      • 展开循环
      • 频繁使用的函数名
      • 通过哈希比较数组和字符串
      • 使用 ++i 替换 i++
      • 使用位移替换乘除运算
      • n * n * n替换n 3
      • 合理使用 private 和 internal
      • x = x + y 与 x += y
      • 使用枚举而不是字符串
      • 编译器优化器设置
      • 查找表
      • 预编译合约
      • 始终使用命名返回
      • 模块导读
      • 使用 Multidelegatecall 批量处理交易
      • 使用 ECDSA 签名实现白名单和空投
      • 使用 UUPS 降低代理部署成本
      • 使用 ERC20 Permit 合并授权与转账
      • ERC1155 与 ERC721 的 Gas 对比
      • 使用 ERC1155 或 ERC6909 管理多种代币
      • 使用投票委托
      • 模块导读
      • 使用 gasprice() 或 msg.value 传递信息
      • 使用 gasleft() 在关键点进行分支决策
      • 将函数设为 Payable
      • 外部库跳转
      • 将字节码附加到合约末尾

此页内容

  • 文章目录
Question? Give us feedback →Edit this page
Gas 优化大师课场景与设计模式模块导读

场景与设计模式

把批量调用、签名、代理和代币标准用于真实业务场景。

文章目录

  1. 使用 Multidelegatecall 批量处理交易
  2. 使用 ECDSA 签名实现白名单和空投
  3. 使用 UUPS 降低代理部署成本
  4. 使用 ERC20 Permit 合并授权与转账
  5. ERC1155 与 ERC721 的 Gas 对比
  6. 使用 ERC1155 或 ERC6909 管理多种代币
  7. 使用投票委托
始终使用命名返回使用 Multidelegatecall 批量处理交易

© 2026
保持好奇,持续实验。
京ICP备2026033906号-1
公安备案图标京公网安备11011402056242号