节省gas有哪些方案?

  • 使用短路模式排序Solidity操作
短路(short-circuiting)是一种使用或/与逻辑来排序不同成本操作的solidity合约 开发模式,它将低gas成本的操作放在前面,高gas成本的操作放在后面,这样如果前面的低成本操作可行,就可以跳过(短路)后面的高成本以太坊虚拟机操作了。
  • 删减不必要的Solidity库
在开发Solidity智能合约时,我们引入的库通常只需要用到其中的部分功能,这意味着其中可能会包含大量对于你的智能合约而言其实是冗余的solidity代码。如果可以在你自己的合约里安全有效地实现所依赖的库功能,那么就能够达到优化solidity合约的gas利用的目的。
  • 精确声明Solidity合约函数的可见性
在Solidity合约开发中,显式声明函数的可见性不仅可以提高智能合约的安全性, 同时也有利于优化合约执行的gas成本。例如,通过显式地标记函数为外部函数(External),可以强制将函数参数的存储位置设置为calldata,这会节约每次函数执行时所需的以太坊gas成本。External 可见性比 public 消耗gas 少。
  • 通过链表来实现O(1) 复杂度的可迭代映射。
  • 将多个小变量打包到单个字中
  • 首选数据类型,首选uint256
  • 使用常量变量constant或immutable
  • 打包变量
  • 内存比存储便宜,calldata比momery便宜
  • 固定数组比动态数组便宜
  • 映射比数组便宜
  • 合并打包变量
  • 少使用外部调用
  • 尽量避免(如循环中)修改存储变量
  • 使用自定义错误
文章目录