code-423n4 / 2022-04-xtribe-findings

2 stars 0 forks source link

Gas Optimizations #68

Open code423n4 opened 2 years ago

code423n4 commented 2 years ago

Issue: Duplicate import https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/StakerVault.sol#L9-L10

import "../libraries/Errors.sol";
import "../libraries/Errors.sol";

Remove duplicate import

Issue: Require message too long Explanation: The require errors below return error messages (found in Errors.sol) that can be shortened to 32 characters or fewer (as shown) to save gas.

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/actions/topup/TopUpAction.sol#L67

        require(amountLeft == 0, Error.INSUFFICIENT_UPDATE_BALANCE);

Error string: "insufficient funds for updating the position" Change to "insufficient funds to update pos"

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/actions/topup/TopUpAction.sol#L218

        require(isUsable(record.depositToken), Error.TOKEN_NOT_USABLE);

Error string: "token not usable for the specific action" Change to "token not usable for this action"

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/actions/topup/TopUpAction.sol#L578

            Error.ESTIMATED_GAS_TOO_HIGH

Error string: "too much ETH will be used for gas" Change to "too much ETH to be used for gas"

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/actions/topup/TopUpAction.sol#L585

            Error.GAS_BANK_BALANCE_TOO_LOW

Error string: "not enough ETH in gas bank to cover gas" Change to "gas bank lacks ETH to cover gas"

The following two lines use the same error message: https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/pool/PoolFactory.sol#L159

        require(vars.poolImplementation != address(0), Error.INVALID_POOL_IMPLEMENTATION);

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/pool/PoolFactory.sol#L182

                Error.INVALID_POOL_IMPLEMENTATION

Error string: "invalid pool implementation for given coin" Change to "invalid pool imp for given coin"

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/pool/PoolFactory.sol#L162

        require(vars.lpTokenImplementation != address(0), Error.INVALID_LP_TOKEN_IMPLEMENTATION);

Error string: "invalid LP Token implementation for given coin" Change to "inv LP Token imp for given coin"

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/pool/PoolFactory.sol#L165

        require(vars.vaultImplementation != address(0), Error.INVALID_VAULT_IMPLEMENTATION);

Error string: "invalid vault implementation for given coin" Change to "invalid vault imp for given coin"

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/pool/PoolFactory.sol#L172

            Error.INVALID_STAKER_VAULT_IMPLEMENTATION

Error string: "invalid stakerVault implementation for given coin" Change to "invalid stakerVault imp for coin"

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/vault/Vault.sol#L165

        require(IPausable(pool).isPaused(), Error.POOL_NOT_PAUSED);

Error string: "Pool must be paused to withdraw from reserve" Change to "Pool must be paused to withdraw"

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/AddressProvider.sol#L285

        require(!_stakerVaults.contains(token), Error.STAKER_VAULT_EXISTS);

Error string: "a staker vault already exists for the token" Change to "a staker vault exists for token"

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/CvxCrvRewardsLocker.sol#L85

            Error.EXCEEDS_MAX_BOOST

Error string: "Not allowed to exceed maximum boost on Convex" Change to "Can't exceed max boost on Convex"

Issue: Should use != 0 instead of > 0 in a require statement if variable is an unsigned integer (uint) Explanation: != 0 should be used instead of > 0 where possible since > 0 costs more gas.

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/actions/topup/TopUpAction.sol#L210

        require(record.singleTopUpAmount > 0, Error.INVALID_AMOUNT);

Change 'record.singleTopUpAmount > 0' to 'record.singleTopUpAmount != 0'

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/actions/topup/TopUpAction.sol#L554

        require(position.totalTopUpAmount > 0, Error.INSUFFICIENT_BALANCE);

Change 'position.totalTopUpAmount > 0' to 'position.totalTopUpAmount != 0'

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/actions/topup/TopUpActionFeeHandler.sol#L123

        require(totalClaimable > 0, Error.NOTHING_TO_CLAIM);

Change 'totalClaimable > 0' to 'totalClaimable != 0'

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/pool/LiquidityPool.sol#L401

        require(_depositCap > 0, Error.INVALID_AMOUNT);

Change '_depositCap > 0' to '_depositCap != 0'

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/pool/LiquidityPool.sol#L471

        require(underlyingAmount > 0, Error.INVALID_AMOUNT);

Change 'underlyingAmount > 0' to 'underlyingAmount != 0'

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/pool/LiquidityPool.sol#L549

        require(redeemLpTokens > 0, Error.INVALID_AMOUNT);

Change 'redeemLpTokens > 0' to 'redeemLpTokens != 0'

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/vault/Vault.sol#L164

        require(amount > 0, Error.INVALID_AMOUNT);

Change 'amount > 0' to 'amount != 0'

Issue: Should use additional require instead of && within a require function Explanation: Using require instead of && saves gas

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/actions/topup/TopUpAction.sol#L359-L363

        require(
            newSwapperSlippage >= _MIN_SWAPPER_SLIPPAGE &&
                newSwapperSlippage <= _MAX_SWAPPER_SLIPPAGE,
            Error.INVALID_AMOUNT
        );

Change to: require(newSwapperSlippage >= _MIN_SWAPPER_SLIPPAGE, Error.INVALID_AMOUNT); require(newSwapperSlippage <= _MAX_SWAPPER_SLIPPAGE, Error.INVALID_AMOUNT);

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/actions/topup/TopUpAction.sol#L676

        require(vars.success && abi.decode(vars.topupResult, (bool)), Error.TOP_UP_FAILED);

Change to: require(vars.success, Error.TOP_UP_FAILED); require(abi.decode(vars.topupResult, (bool)), Error.TOP_UP_FAILED);

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/strategies/ConvexStrategyBase.sol#L273-L276

        require(
            token_ != address(_CVX) && token_ != address(underlying) && token_ != address(_CRV),
            Error.INVALID_TOKEN_TO_ADD
        );

Change to: require(token_ != address(_CVX), Error.INVALID_TOKEN_TOADD); require(token != address(underlying), Error.INVALID_TOKEN_TOADD); require(token != address(_CRV), Error.INVALID_TOKEN_TO_ADD);

Issue: Variables should not be initialized to their default values Explanation: Initializing variables to their default values is unnecessary and costs gas.

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/pool/LiquidityPool.sol#L483

        uint256 currentFeeRatio = 0;

Change 'uint256 currentFeeRatio = 0;' to 'uint256 currentFeeRatio;'

https://github.com/code-423n4/2022-04-backd/blob/c856714a50437cb33240a5964b63687c9876275b/backd/contracts/StakerVault.sol#L144

        uint256 startingAllowance = 0;

Change 'uint256 startingAllowance = 0;' to 'uint256 startingAllowance;'