veToken Finance contest - Cityscape's results

Lock more veAsset permanently.

General Information

Platform: Code4rena

Start Date: 26/05/2022

Pot Size: $75,000 USDT

Total HM: 31

Participants: 71

Period: 7 days

Judge: GalloDaSballo

Total Solo HM: 18

Id: 126

League: ETH

veToken Finance

Findings Distribution

Researcher Performance

Rank: 70/71

Findings: 1

Award: $52.07

🌟 Selected for report: 0

🚀 Solo Findings: 0

Gas Optimizations

Unnecessarily initialized variable

    uint256 public periodFinish = 0;
    uint256 public rewardRate = 0;
    uint256 public lastUpdateTime;
    uint256 public rewardPerTokenStored;
    uint256 public queuedRewards = 0;
    uint256 public currentRewards = 0;
    uint256 public historicalRewards = 0;

proposed change:

    uint256 public periodFinish;
    uint256 public rewardRate;
    uint256 public lastUpdateTime;
    uint256 public rewardPerTokenStored;
    uint256 public queuedRewards;
    uint256 public currentRewards;
    uint256 public historicalRewards;

https://github.com/code-423n4/2022-05-vetoken/blob/2d7cd1f6780a9bcc8387dea8fecfbd758462c152/contracts/BaseRewardPool.sol#L66-L72

Loop optimizations

for (uint256 i = 0; i < extraRewards.length; i++) { 
            IRewards(extraRewards[i]).stake(msg.sender, _amount);
        }

proposed change:

uint extraRewardsLength = extraRewards.length;
for (uint256 i; i < extraRewardsLength;) { 
            IRewards(extraRewards[i]).stake(msg.sender, _amount);
            unchecked { ++i;}
        }

https://github.com/code-423n4/2022-05-vetoken/blob/2d7cd1f6780a9bcc8387dea8fecfbd758462c152/contracts/BaseRewardPool.sol#L176-L178


for (uint256 i = 0; i < extraRewards.length; i++) {
                IRewards(extraRewards[i]).getReward(_account);
            }

proposed change:

uint extraRewardsLength = extraRewards.length;
for (uint256 i; i < extraRewardsLength;) {
                IRewards(extraRewards[i]).getReward(_account);
                unchecked { ++i;}
            }

https://github.com/code-423n4/2022-05-vetoken/blob/2d7cd1f6780a9bcc8387dea8fecfbd758462c152/contracts/BaseRewardPool.sol#L282-L283


for (uint256 i = 0; i < extraRewards.length; i++) {
            IRewards(extraRewards[i]).withdraw(msg.sender, amount);
        }

proposed change:

uint extraRewardsLength = extraRewards.length;
for (uint256 i; i < extraRewardsLength;) { 
            IRewards(extraRewards[i]).withdraw(msg.sender, amount);
            unchecked { ++i;}
        }

https://github.com/code-423n4/2022-05-vetoken/blob/2d7cd1f6780a9bcc8387dea8fecfbd758462c152/contracts/BaseRewardPool.sol#L245-L247

for (uint256 i = 0; i < extraRewards.length; i++) { 
            IRewards(extraRewards[i]).withdraw(msg.sender, amount);
        }

proposed change:

uint extraRewardsLength = extraRewards.length;
for (uint256 i ; i < extraRewardslength;) {
            IRewards(extraRewards[i]).withdraw(msg.sender, amount);
            unchecked {++i;}
        }

https://github.com/code-423n4/2022-05-vetoken/blob/2d7cd1f6780a9bcc8387dea8fecfbd758462c152/contracts/BaseRewardPool.sol#L218-L221

for (uint256 i = 0; i < extraRewards.length; i++) { 
            IRewards(extraRewards[i]).stake(_for, _amount);
        }

proposed change:

uint extraRewardsLength = extraRewards.length;
for (uint256 i; i < extraRewardsLength;) {
            IRewards(extraRewards[i]).stake(_for, _amount);
            unchecked { ++i;}
        }

https://github.com/code-423n4/2022-05-vetoken/blob/2d7cd1f6780a9bcc8387dea8fecfbd758462c152/contracts/BaseRewardPool.sol#L199-L201

≠ 0 is cheaper than > 0 in require statements

require(_amount > 0, "RewardPool : Cannot stake 0"); 

proposed change:

require(_amount != 0, "RewardPool : Cannot stake 0"); 

https://github.com/code-423n4/2022-05-vetoken/blob/2d7cd1f6780a9bcc8387dea8fecfbd758462c152/contracts/BaseRewardPool.sol#L196

require(amount > 0, "RewardPool : Cannot withdraw 0");

proposed change:

require(amount != 0, "RewardPool : Cannot withdraw 0");

https://github.com/code-423n4/2022-05-vetoken/blob/2d7cd1f6780a9bcc8387dea8fecfbd758462c152/contracts/BaseRewardPool.sol#L215

#0 - GalloDaSballo

2022-07-14T01:52:38Z

Less than 500 gas saved

AuditHub

A portfolio for auditors, a security profile for protocols, a hub for web3 security.

Built bymalatrax © 2024

Auditors

Browse

Contests

Browse

Get in touch

ContactTwitter