Omniscia Astrolab DAO Audit

StrategyV5Agent Code Style Findings

StrategyV5Agent Code Style Findings

SVA-01C: Inefficient Iterator Type

Description:

The referenced for loops utilize a uint8 variable as an iterator which is inefficient.

Example:

src/abstract/StrategyV5Agent.sol
142for (uint8 i = 0; i < _rewardTokens.length; i++) {

Recommendation:

As the EVM is built to operate on 32-byte (256-bit) data types, we advise the iterator types to be bumped to uint256, optimizing their gas cost.

Alleviation (59b75fbee1):

While the referenced iterator types have been optimized, the StrategyV5Agent::_setInputWeights function continues to utilize a uint8 iterator type which is inefficient.

Alleviation (efbeab6478):

The uint8 iterator in the StrategyV5Agent::_setInputWeights function has been updated accordingly, rendering this exhibit fully addressed.

SVA-02C: Loop Iterator Optimizations

Description:

The linked for loops increment / decrement their iterator "safely" due to Solidity's built - in safe arithmetics (post-0.8.X).

Example:

src/abstract/StrategyV5Agent.sol
51for (uint256 i = 0; i < rewardLength; i++) {

Recommendation:

We advise the increment / decrement operations to be performed in an unchecked code block as the last statement within each for loop to optimize their execution cost.

Alleviation (59b75fbee1d8f3dee807c928f18be41c58b904e1):

The referenced loop iterator increment statements have been relocated at the end of each respective for loop's body and have been unwrapped in an unchecked code block, optimizing their gas cost.