BriVault

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

Unnecessary timestamp check inside `_setFinallizedVaultBalance::BriVault` function

Root + Impact : _setFinallizedVaultBalance::BriVault is an internal function which is only called inside one function(i.e. setWinner), which also has the eventEndDate timestamp Check, hence check inside _setFinallizedVaultBalance is wasting gas.

Description

  • setWinner function already has a check for block.timestamp<=eventEndDate ,inside _setFinallizedVaultBalance timestamp check for block.timestamp<=eventStartDate is of no use .

  • Since, setWinner is checking for eventEndDate, the check for eventStartDate is already covered in it.

contract BriVault is ERC4626, Ownable {
...
function setWinner(uint256 countryIndex) public onlyOwner returns (string memory) {
if (block.timestamp <= eventEndDate) {
revert eventNotEnded();
}
require(countryIndex < teams.length, "Invalid country index");
if (_setWinner) {
revert WinnerAlreadySet();
}
winnerCountryId = countryIndex;
winner = teams[countryIndex];
_setWinner = true;
_getWinnerShares();
_setFinallizedVaultBalance();
emit WinnerSet(winner);
return winner;
}
...
function _setFinallizedVaultBalance() internal returns (uint256) {
@> if (block.timestamp <= eventStartDate) {
@> revert eventNotStarted();
@> }
return finalizedVaultAsset = IERC20(asset()).balanceOf(address(this));
}
...
...
}

Risk

Likelihood: Low

Impact: Low/Gas

Recommended Mitigation

  • Remove the check inside _setFinallizedVaultBalance ,which is already covered inside getWinner function .

contract BriVault is ERC4626, Ownable {
...
function setWinner(uint256 countryIndex) public onlyOwner returns (string memory) {
if (block.timestamp <= eventEndDate) {
revert eventNotEnded();
}
require(countryIndex < teams.length, "Invalid country index");
if (_setWinner) {
revert WinnerAlreadySet();
}
winnerCountryId = countryIndex;
winner = teams[countryIndex];
_setWinner = true;
_getWinnerShares();
_setFinallizedVaultBalance();
emit WinnerSet(winner);
return winner;
}
...
function _setFinallizedVaultBalance() internal returns (uint256) {
- if (block.timestamp <= eventStartDate) {
- revert eventNotStarted();
- }
return finalizedVaultAsset = IERC20(asset()).balanceOf(address(this));
}
...
...
}
Updates

Appeal created

bube Lead Judge 19 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.

Give us feedback!