Raisebox Faucet

First Flight #50
Beginner FriendlySolidity
100 EXP
View results
Submission Details
Impact: low
Likelihood: low
Invalid

[L-03] Redundant getter functions increase contract bytecode

Redundant getter functions increase contract bytecode

Description

Getter functions are redundant and are already available via

  • native balance

  • inherited functions, i.e. .owner()from Ownable

  • standard ERC20 functions, i.e. balanceOf()

// Root cause in the codebase with @> marks to highlight the relevant section
function getBalance(address user) public view returns (uint256) {
@> return balanceOf(user);
}
function getFaucetTotalSupply() public view returns (uint256) {
@> return balanceOf(address(this));
}
function getContractSepEthBalance() public view returns (uint256) {
@> return address(this).balance;
}
function getOwner() public view returns (address) {
@> return Ownable.owner();
}

Risk

Impact:

  • Maintenance overhead

  • Additional bytecode size during deployment

  • Confuses developers

Proof of Concept

Add the following tests to your test file:

function test_getters_getBalanceIsRedundant() public view {
assertEq(raiseBoxFaucet.getBalance(user), raiseBoxFaucet.balanceOf(user));
}
function test_getters_getFaucetTotalSupplyIsRedundant() public view {
assertEq(raiseBoxFaucet.getFaucetTotalSupply(), raiseBoxFaucet.balanceOf(address(raiseBoxFaucet)));
}
function test_getters_getContractSepEthBalanceIsRedundant() public view {
assertEq(raiseBoxFaucet.getContractSepEthBalance(), address(raiseBoxFaucet).balance);
}
function test_getters_getOwnerIsRedundant() public view {
assertEq(raiseBoxFaucet.getOwner(), raiseBoxFaucet.owner());
}

Recommended Mitigation

At least getOwner is redundant and confusing. If you want to keep it, call owner() directly.

If necessary, keep getFaucetTotalSupply() , getContractSepEthBalance() and getBalance(address) for easy access.

function getOwner() public view returns (address) {
- return Ownable.owner();
+ return owner();
}
Updates

Lead Judging Commences

inallhonesty Lead Judge 5 days ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

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