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

5 stars 2 forks source link

Gas Optimizations #225

Open code423n4 opened 2 years ago

code423n4 commented 2 years ago

Gas

I. Reorder the state variables to reduce the slotw utilised

IAlchemistV2State.sol

The struct underlyingTokenParams takes up three separate slots, it can be reduced to two.

https://github.com/code-423n4/2022-05-alchemix/blob/de65c34c7b6e4e94662bf508e214dcbf327984f4/contracts-full/interfaces/alchemist/IAlchemistV2State.sol#L16

Place the bool at the second position.

Same for :

[https://github.com/code-423n4/2022-05-alchemix/blob/de65c34c7b6e4e94662bf508e214dcbf327984f4/contracts-full/interfaces/alchemist/IAlchemistV2State.sol#L57]

bool can be moved below uint8 decimals.

II. Use unchecked block for gas savings :

https://github.com/code-423n4/2022-05-alchemix/blob/de65c34c7b6e4e94662bf508e214dcbf327984f4/contracts-full/AlchemistV2.sol#L1250

[https://github.com/code-423n4/2022-05-alchemix/blob/main/contracts-full/ThreePoolAssetManager.sol#L400-L401]

https://github.com/code-423n4/2022-05-alchemix/blob/de65c34c7b6e4e94662bf508e214dcbf327984f4/contracts-full/ThreePoolAssetManager.sol#L751

https://github.com/code-423n4/2022-05-alchemix/blob/de65c34c7b6e4e94662bf508e214dcbf327984f4/contracts-full/ThreePoolAssetManager.sol#L802

https://github.com/code-423n4/2022-05-alchemix/blob/de65c34c7b6e4e94662bf508e214dcbf327984f4/contracts-full/ThreePoolAssetManager.sol#L845

https://github.com/code-423n4/2022-05-alchemix/blob/de65c34c7b6e4e94662bf508e214dcbf327984f4/contracts-full/ThreePoolAssetManager.sol#L1037

0xfoobar commented 2 years ago

Correct on struct reducing its slots