Miluer-tcq / WTF-gas-optimization

Solidity gas optimization techniques, using Foundry.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WTF Gas Optimization

Solidity gas optimization techniques, using Foundry. 总结写 Solidity 智能合约更省 gas 的技巧。

大纲

1. use constant and immutable

2. use calldata over memory

3. use Bitmap

4. use unchecked

5. use uint256 over uint8

6. use custom error over require/assert

7. use local variable over storage

8. use clone2 over new/create2

1. use constant and immutable

Code | 文章

Testing

forge test --contracts 01_Constant/Constant.t.sol --gas-report

Gas report

Function Name Gas Cost
varConstant 183
varImmutable 161 ✅
variable 2305

2. use calldata over memory

Code | 文章

Testing

forge test --contracts 02_CalldataAndMemory/CalldataAndMemory.T.sol --gas-report

Gas report

Function Name Gas Cost
writeByCalldata 67905 ✅
writeByMemory 68456

3. use Bitmap

Code | 文章

Testing

forge test --contracts 03_Bitmap/Bitmap.T.sol --gas-report

Gas report

Function Name Gas Cost
setDataWithBitmap 22366 ✅
setDataWithBoolArray 35729

4. use unchecked

Code | 文章

Testing

forge test --contracts 04_unchecked/Unchecked.T.sol --gas-report

Gas report

Function Name Gas Cost
forNormal 1910309
forUnckecked 570287 ✅

5. use uint256 over uint8

Code | 文章

Testing

forge test --contracts 05_uint/Uint.T.sol --gas-report

Gas report

Function Name Gas Cost
read Uint8 2379
read Uint128 2465
read Uint256 2317 ✅
set Uint8 5355
set Uint128 5358
set Uint256 5322 ✅

6. use custom error over require/assert

Code | 文章

Testing

forge test --contracts 06_Error/Error.T.sol --gas-report

Gas report

Error Name Gas Cost
Assert 180
Require 268
Revert 164 ✅

7. use local variable over storage

Code | 文章

Testing

forge test --contracts 07_LocalData/LocalData.T.sol --gas-report

Gas report

Data Type Gas Cost
localData 1902339 ✅
storageData 4022155

8. use clone2 over new/create2

Code | 文章

Testing

forge test --contracts 08_Clone2/Clone2.T.sol --gas-report

Gas report

Create Type Gas Cost
clone2 41493 ✅
create2 93031
new 79515

WTF Gas Optimization 贡献者

贡献者是WTF学院的基石

About

Solidity gas optimization techniques, using Foundry.


Languages

Language:Solidity 100.0%