Eggstravaganza

First Flight #37
Beginner FriendlySolidity
100 EXP
View results
Submission Details
Severity: low
Invalid

Use Custom Errors Instead of require() for Gas Optimization

Summary

The contract currently uses require() statements with string error messages to validate conditions such as access control. While this approach consumes more gas due to string storage and does not leverage solidity's more efficient custom error mechanism

Vulnerability Details

In the setGameContract() function, the contract uses:

require(_gameContract != address(0), "Invalid game contract address");

This is can be replaced with more gas-efficient method using custom errors:

error EggstravaganzaNFT__InvalidGameContract();
function setGameContract(address _gameContract) external onlyOwner {
//require(_gameContract != address(0), "Invalid game contract address");
if(_gameContract != address(0)) {revert EggstravaganzaNFT__InvalidGameContract();}
gameContract = _gameContract;
}

Impact

  • Gas Optimization

  • Improved Clarity

  • Best Practice Alignment

Tools Used

  • Manual code review

  • Solidity recommendation on custom errors

Recommendations

Replace all require('condtion', 'error messages') pattern with if(!condition) {revert CustomError();}

Updates

Lead Judging Commences

m3dython Lead Judge 3 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity
Assigned finding tags:

Gas optimization

Strategy to save gas and minimize transaction costs

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.