Platform: Code4rena
Start Date: 15/06/2022
Pot Size: $35,000 USDC
Total HM: 1
Participants: 36
Period: 3 days
Judge: Jack the Pug
Total Solo HM: 1
Id: 137
League: ETH
Rank: 23/36
Findings: 1
Award: $83.14
๐ Selected for report: 0
๐ Solo Findings: 0
๐ Selected for report: IllIllI
Also found by: 0x1f8b, 0xKitsune, 0xNazgul, 0xkatana, Chom, ElKu, JC, Meera, MiloTruck, Picodes, PierrickGT, SooYa, TerrierLover, UnusualTurtle, Waze, _Adam, asutorufos, c3phas, delfin454000, fatherOfBlocks, joestakey, minhquanym, oyc_109, robee, sach1r0, simon135
83.1436 USDC - $83.14
The require statements could be put at the beginning part of a block of statements if it doesnโt affect the logic to save gas. a. require(_orders.length != 0, "NF: INVALID_ORDERS");
Initializing i to 0 inside a for loop is redundant. As its initialized to 0 by default. Also i++ or ++I in the for loops can be put inside an unchecked block to save gas.
a. for (uint256 i = 0; i < operatorsCache.length; i++) b. for (uint256 i = 0; i < operatorsLength; i++) c. for (uint256 i = 0; i < batchedOrdersLength; i++) d. for (uint256 i = 0; i < tokensLength; i++) e. for (uint256 i = 0; i < batchedOrdersLength; i++) f. for (uint256 i = 0; i < batchedOrdersLength; i++) g. for (uint256 i = 0; i < batchLength; i++) h. for (uint256 i = 0; i < batchLength; i++) i. for (uint256 i = 0; i < _batchedOrders.length; i++) j. for (uint256 i = 0; i < namesLength; i++) k. for (uint256 i = 0; i < names.length; i++) l. for (uint256 i = 0; i < destinations.length; i++) m. for (uint256 i = 0; i < requiredOperators.length; i++) n. for (uint256 i = 0; i < requiredOperators.length; i++) o. for (uint256 i = 0; i < targets.length; ++i) p. for (uint256 i = 0; i < targets.length; ++i)
Unless it was introduced for readability saving memory to memory is redundant. address token = tokens[i];
These arithmetic operations can be unchecked. a. uint256 halfInvestment = investmentA / 2; b. uint256 halfInvestment = investmentA / 2;
This line could be pre-computed and defined as a constant to save gas. a. bytes4(keccak256(bytes("remove_liquidity_one_coin(uint256,int128,uint256)"))) b. bytes4(keccak256(bytes("remove_liquidity_one_coin(uint256,uint256,uint256)")))
#0 - Yashiru
2022-06-22T15:58:02Z
Gas optimization confirmed
#1 - Yashiru
2022-06-22T16:00:58Z
Gas optimization confirmed
#2 - maximebrugel
2022-06-24T13:03:48Z
Gas optimization confirmed
#3 - Yashiru
2022-06-24T15:43:39Z
Duplicated of #2 at For loop optimizaion
#4 - obatirou
2022-06-27T09:47:02Z
Gas optimization confirmed