code-423n4 / 2022-06-nibbl-findings

1 stars 0 forks source link

Gas Optimizations #290

Open code423n4 opened 2 years ago

code423n4 commented 2 years ago

nibble factory

  1. Use Custom Error instead of Revert String to Save Gas

Custom error from solidity 0.8.4 are cheaper than revert strings, custom error are defined using the error statement can use inside and outside the contract.

source https://blog.soliditylang.org/2021/04/21/custom-errors/

i suggest replacing revert error strings with custom error

POC : https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/Basket.sol#L62 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/Basket.sol#L69 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/Basket.sol#L79 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/Basket.sol#L86 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVaultFactory.sol#L48 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVaultFactory.sol#L49 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVaultFactory.sol#L107 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVaultFactory.sol#L131 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVaultFactory.sol#L141 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVaultFactory.sol#L149 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVaultFactory.sol#L166 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L129 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L139 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L146 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L147 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L154 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L184 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L185 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L325 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L351 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L387 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L399 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L400 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L404 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L444 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L475 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L486 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L496 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L505 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L516 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L524 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L536 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L546 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L561 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L564 https://github.com/code-423n4/2022-06-nibbl/blob/main/contracts/NibblVault.sol#L570

mundhrakeshav commented 2 years ago

9