Assessment reports>SSI Protocol>Discussion>Custom errors could save gas

Custom errors could save gas

Solidity allows using custom errors. Using custom errors instead of revert or require saves gas since the error message used by the revert function is stored on chain. Here is an example usage:

+ error ReblancingError();
+ error ZeroSupplyError();
function rebalance(Token[] memory inBasket, Token[] memory outBasket) external onlyRole(REBALANCER_ROLE) {
-    require(rebalancing, "lock rebalance first");
+   if (!rebalancing) { revert ReblancingError();}
-    require(totalSupply() > 0, "zero supply");
+   if (totalSupply() == 0) { revert ZeroSupplyError();}
    Token[] memory newBasket = Utils.addTokenset(Utils.subTokenset(basket_, outBasket), inBasket);
    Token[] memory newTokenset = Utils.muldivTokenset(newBasket, 10**decimals(), totalSupply());
    setBasket(newBasket);
    setTokenset(newTokenset);
}
Zellic © 2025Back to top ↑