Platform: Code4rena
Start Date: 16/02/2023
Pot Size: $144,750 USDC
Total HM: 17
Participants: 154
Period: 19 days
Judge: Trust
Total Solo HM: 5
Id: 216
League: ETH
Rank: 136/154
Findings: 1
Award: $42.07
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: c3phas
Also found by: 0x3b, 0x6980, 0x73696d616f, 0xSmartContract, 0xackermann, 0xhacksmithh, 0xsomeone, Bnke0x0, Bough, Budaghyan, Darshan, DeFiHackLabs, Deivitto, GalloDaSballo, JCN, LethL, Madalad, MiniGlome, Morraez, P-384, PaludoX0, Phantasmagoria, Praise, RHaO-sec, Rageur, RaymondFam, ReyAdmirado, Rickard, Rolezn, SaeedAlipoor01988, Saintcode_, Sathish9098, TheSavageTeddy, Tomio, Viktor_Cortess, abiih, arialblack14, atharvasama, banky, codeislight, cryptonue, ddimitrov22, dec3ntraliz3d, descharre, dharma09, emmac002, favelanky, hl_, hunter_w3b, kaden, kodyvim, matrix_0wl, oyc_109, pavankv, scokaf, seeu, yamapyblack
42.0697 USDC - $42.07
-BorrowerOperations line 438 -BorrowerOperations line 455 -BorrowerOperations line 476 -BorrowerOperations line 524 -BorrowerOperations line 533 -BorrowerOperations line 537 -BorrowerOperations line 546 -BorrowerOperations line 551 -BorrowerOperations line 555 -BorrowerOperations line 567 -BorrowerOperations line 571 -BorrowerOperations line 624 -BorrowerOperations line 636 -BorrowerOperations line 640 -BorrowerOperations line 661 -BorrowerOperations line 682 -TroveManager line 478 -TroveManager line 582 -TroveManager line 671 -TroveManager line 785 -TroveManager line 864 -TroveManager line 1213 -TroveManager line 1321 -TroveManager line 1339 -TroveManager line 1516 -TroveManager line 1538 -ActivePool line 320 -SortedTroves line 338 -SortedTroves line 402 -LQTYStaking line 251 -LQTYStaking line 261 -LQTYStaking line 265 -LQTYStaking line 269 -LUSDToken line 320 -LUSDToken line 328 -LUSDToken line 360 -LUSDToken line 365 -LUSDToken line 375 -LUSDToken line 380 -LUSDToken line 393 -ReaperVaultV2 line 462 -ReaperStrategyGranarySupplyOnly line 86 -ReaperStrategyGranarySupplyOnly line 176 -ReaperStrategyGranarySupplyOnly line 206
<X> += <Y>
COSTS MORE GAS THAN <X> = <X> + <Y>
FOR STATE VARIABLES-ReaperVaultV2 line 168 -ReaperVaultV2 line 194 -ReaperVaultV2 line 196 -ReaperVaultV2 line 214 -ReaperVaultV2 line 390 -ReaperVaultV2 line 391 -ReaperVaultV2 line 395 -ReaperVaultV2 line 396 -ReaperVaultV2 line 444 -ReaperVaultV2 line 445 -ReaperVaultV2 line 450 -ReaperVaultV2 line 451 -ReaperVaultV2 line 452 -ReaperVaultV2 line 505 -ReaperVaultV2 line 514 -ReaperVaultV2 line 515 -ReaperVaultV2 line 516 -ReaperVaultV2 line 520 -ReaperVaultV2 line 521
-CollateralConfig line 57 -CollateralConfig line 63 -TroverManager line 610 -ActivePool line 109 -ActivePool line 110 -LQTYStaking line 207 -LQTYStaking line 208 -LQTYStaking line 229 -LQTYStaking line 242 -ReaperVaultV2 line 265 -ReaperVaultV2 line 378 -ReaperVaultV2 line 379 -ReaperVaultV2 line 384 -ReaperVaultV2 line 385 -ReaperVaultV2 line 386 -ReaperStrategyGranarySupplyOnly line 118 -ReaperStrategyGranarySupplyOnly line 120 -ReaperStrategyGranarySupplyOnly line 166
-ReaperStrategyGranarySupplyOnly line 25 -ReaperStrategyGranarySupplyOnly line 27 -ReaperStrategyGranarySupplyOnly line 29 -ReaperVaultV2 line 40 -ReaperVaultV2 line 73 -ReaperVaultV2 line 74 -ReaperVaultV2 line 75 -ReaperVaultV2 line 76 -TroveManager line 58 -TroveManager line 60 -CollateralConfig line 21 -CollateralConfig line 25 -ReaperBaseStrategyv4 line 24 -ReaperBaseStrategyv4 line 25 -ReaperBaseStrategyv4 line 49 -ReaperBaseStrategyv4 line 50 -ReaperBaseStrategyv4 line 51 -ReaperBaseStrategyv4 line 52
require(a <= b); x = b - a
=> require(a <= b); unchecked { x = b - a }
-TroveManager line 494 -TroveManager line 496 -ReaperVaultV2 line 235 -ReaperVaultV2 line 244 -ReaperVaultV2 line 245 -ReaperVaultV2 line 384 -ReaperVaultV2 line 451 -ReaperVaultV2 line 526 -ReaperVaultV2 line 528 -ReaperVaultERC4626 line 82 -ReaperVaultERC4626 line 125 -ReaperBaseStrategyv4 line 121 -ReaperBaseStrategyv4 line 123 -ReaperStrategyGranarySupplyOnly line 81 -ReaperStrategyGranarySupplyOnly line 93 -ReaperStrategyGranarySupplyOnly line 100 -ReaperStrategyGranarySupplyOnly line 132
-ReaperStrategyGranarySupplyOnly line 104-106 -ReaperVaultERC4626 line 29-30 -ReaperVaultERC4626 line 37-38 -ReaperVaultERC4626 line 51-53 -ReaperVaultERC4626 line 66-68 -ReaperVaultERC4626 line 79-82 -ReaperVaultERC4626 line 96-97 -ReaperVaultERC4626 line 122-125 -ReaperVaultERC4626 line 165-166 -ReaperVaultERC4626 line 220-221 -ReaperVaultERC4626 line 240-241 -TroveManager line 383-437 -TroveManager line 451-605 -TroveManager line 1196-1226 -TroveManager line 1859-1862 -TroveManager line 1867-1879
In instances given below you need either to swap 2 lines or split 1 require (left statement and right statement relative to &&) into 2 require statements and put them in sorted order in order to save gas
-CollateralConfig line 51-54 -BorrowerOperations line 653 -TroveManager line 1279 -TroveManager line 1342 -TroveManager line 1539 -SortedTroves line 111-115 -SortedTroves line 214-216 -LUSDToken line 347 -LUSDToken line 352 -ReaperVaultV2 line 150-156 -ReaperVaultV2 line 180-181 -ReaperVaultV2 line 321-322 -ReaperBaseStrategyv4 line 96-98
-ActivePool line 186 -ActivePool line 210 -BorrowerOperations line 231 -CommunityIssuance line 127 -LQTYStaking line 171 -LUSDToken line 198 -LUSDToken line 203 -LUSDToken line 222 -LUSDToken line 237 -LUSDToken line 238 -LUSDToken line 410 -LUSDToken line 526 -LUSDToken line 528
public
/external
function names and public member variable names can be optimized to save gas. See this link for an example of how it works. Below are the interfaces/abstract contracts that can be optimized so that the most frequently-called functions use the least amount of gas possible during method lookup. Method IDs that have two leading zero bytes can save 128 gas each during deployment, and renaming functions to have lower method IDs will save 22 gas per call, per sorted position shifted.-IActivePool line 8 -IBorrowerOperations line 6 -ICollateralConfig line 5 -ICommunityIssuance line 5 -ILQTYStaking line 5 -ILUSDToken line 8 -ISortedTroves line 6 -ITroveManager line 14 -ReaperVaultV2 line 21 -ReaperVaultERC4626 line 12 -ReaperBaseStrategyv4 line 14 -ReaperStrategyGranarySupplyOnly line 19
-ActivePool line 3 -BorrowerOperations line 3 -CollateralConfig line 3 -CommunityIssuance line 3 -LQTYStaking line 3 -LUSDToken line 3 -SortedTroves line 3 -TroveManager line 3 -ReaperVaultV2 line 3 -ReaperVaultERC4626 line 3 -ReaperBaseStrategyv4 line 3 -ReaperStrategyGranarySupplyOnly line 3
-TroverManager line 94-91 -TroverManager line 104-105 -TroverManager line 119-120 -ActivePool line 44-45 -LQTYStaking line 25, 28, 32 -LUSDToken line 62-64
-TroveManager line 1557 -TroveManager line 1570 -TroveManager line 1602 -TroveManager line 1694 -CommunityIssuance line 107 -LQTYStaking line 219
-ReaperStrategyGranarySupplyOnly line 62 -ReaperVaultV2 line 295 -TroverManager line 1045 -TroverManager line 1440
-ReaperBaseStrategyv4 line 28<->58 -ReaperVaultV2 line 49<->78
block.number
and block.timestamp
are added to the event information by default, so adding them manually will waste additional gas.#0 - c4-judge
2023-03-09T12:48:12Z
trust1995 marked the issue as grade-b