code-423n4 / 2022-05-backd-findings

0 stars 0 forks source link

Gas Optimizations #131

Open code423n4 opened 2 years ago

code423n4 commented 2 years ago

[G-01] Unnecessary check for positive value

Description

A uint256 value can not be negative, hence there is no need to check for it.

Findings

tokenomics/InflationManager.sol#L589

totalLpPoolWeight = totalLpPoolWeight > 0 ? totalLpPoolWeight : 0;

tokenomics/InflationManager.sol#L602

totalAmmTokenWeight = totalAmmTokenWeight > 0 ? totalAmmTokenWeight : 0;

tokenomics/InflationManager.sol#L575

totalKeeperPoolWeight = totalKeeperPoolWeight > 0 ? totalKeeperPoolWeight : 0;

Recommended mitigation steps

Remove the check and use the value directly to save gas.

[G-02] Unnecessary poolCheckpoint function call

The AmmGauge and KeeperGauge contracts call the function poolCheckpoint() within the kill() function. Therefore, functions which call this kill() function do not have to additionally call the poolCheckpoint() function.

Description

A uint256 value can not be negative, hence there is no need to check for it.

Findings

tokenomics/InflationManager.sol#L427\ tokenomics/InflationManager.sol#L461

Recommended mitigation steps

Remove the call to poolCheckpoint() to save gas.

GalloDaSballo commented 2 years ago

[G-01] Unnecessary check for positive value

I agree, because these are Storage value set to the same value, the gas saved is 100 per instance 300

[G-02] Unnecessary poolCheckpoint function call

I agree, but would have liked to see a POC with detailed gas savings, in lack of it will give it 200 gas (low estimate)

Total Gas Saved

500