code-423n4 / 2021-10-tally-findings

0 stars 0 forks source link

Cache array length in for loops can save gas #26

Closed code423n4 closed 2 years ago

code423n4 commented 3 years ago

Handle

WatchPug

Vulnerability details

Reading array length at each iteration of the loop takes 6 gas (3 for mload and 3 to place memory_offset) in the stack.

Caching the array length in the stack saves around 3 gas per iteration.

Instances include:

https://github.com/code-423n4/2021-10-tally/blob/c585c214edb58486e0564cb53d87e4831959c08b/contracts/swap/Swap.sol#L243-L250

function sweepFees(
    address[] calldata tokens
) external nonReentrant {
    require(
        feeRecipient != address(0),
        "Swap::withdrawAccruedFees: feeRecipient is not initialized"
    );
    for (uint8 i = 0; i<tokens.length; i++) {
        ...
Shadowfiend commented 2 years ago

Duplicate of #15.

0xean commented 2 years ago

duplicate of #74