节省gas有哪些方案?
节省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便宜
- 固定数组比动态数组便宜
- 映射比数组便宜
- 合并打包变量
- 少使用外部调用
- 尽量避免(如循环中)修改存储变量
- 使用自定义错误
文章目录
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。