code-423n4 / 2022-01-timeswap-findings

2 stars 0 forks source link

Gas Optimization: Reuse code #186

Closed code423n4 closed 2 years ago

code423n4 commented 2 years ago

Handle

gzeon

Vulnerability details

Impact

        if (pool.state.totalLiquidity == 0) {
            uint256 liquidityTotal = MintMath.getLiquidityTotal(xIncrease);
            liquidityOut = MintMath.getLiquidity(maturity, liquidityTotal, protocolFee);

            pool.state.totalLiquidity += liquidityTotal;
            pool.liquidities[factory.owner()] += liquidityTotal - liquidityOut;
        } else {
            uint256 liquidityTotal = MintMath.getLiquidityTotal(pool.state, xIncrease, yIncrease, zIncrease);
            liquidityOut = MintMath.getLiquidity(maturity, liquidityTotal, protocolFee);

            pool.state.totalLiquidity += liquidityTotal;
            pool.liquidities[factory.owner()] += liquidityTotal - liquidityOut;
        }

to

        uint256 liquidityTotal;
        if (pool.state.totalLiquidity == 0) {
            liquidityTotal = MintMath.getLiquidityTotal(xIncrease);
        } else {
            liquidityTotal = MintMath.getLiquidityTotal(pool.state, xIncrease, yIncrease, zIncrease);
        }
        liquidityOut = MintMath.getLiquidity(maturity, liquidityTotal, protocolFee);
        pool.state.totalLiquidity += liquidityTotal;
        pool.liquidities[factory.owner()] += liquidityTotal - liquidityOut;

Proof of Concept

https://github.com/code-423n4/2022-01-timeswap/blob/bf50d2a8bb93a5571f35f96bd74af54d9c92a210/Timeswap/Timeswap-V1-Core/contracts/TimeswapPair.sol#L157

Mathepreneur commented 2 years ago

Duplicate of #155