Platform: Code4rena
Start Date: 14/09/2022
Pot Size: $50,000 USDC
Total HM: 25
Participants: 110
Period: 5 days
Judge: hickuphh3
Total Solo HM: 9
Id: 162
League: ETH
Rank: 48/110
Findings: 2
Award: $89.45
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: Respx
Also found by: 0x1f8b, 0xDecorativePineapple, 0xNazgul, 0xPanas, 0xSmartContract, 0xc0ffEE, 0xmuxyz, Aymen0909, Bahurum, Bnke0x0, CodingNameKiki, Deivitto, Jeiwan, Lambda, Picodes, PwnPatrol, R2, RaymondFam, Rolezn, Ruhum, Saintcode_, SooYa, Tointer, V_B, ajtra, ak1, async, auditor0517, brgltd, c3phas, carrotsmuggler, cccz, csanuragjain, datapunk, djxploit, durianSausage, eierina, erictee, gogo, imare, joestakey, jonatascm, kv, ladboy233, leosathya, lukris02, oyc_109, pashov, pauliax, rbserver, robee, rokinot, rvierdiiev, scaraven, simon135, unforgiven, wagmi, zzzitron
36.6223 USDC - $36.62
) { admin = _admin; govToken = _govToken; factory = _factory; }
🌟 Selected for report: pfapostol
Also found by: 0x040, 0x1f8b, 0x4non, 0xNazgul, 0xSmartContract, 0xc0ffEE, 0xkatana, Aymen0909, Bnke0x0, Deivitto, Diana, JAGADESH, KIntern_NA, Lambda, MiloTruck, R2, RaymondFam, Respx, ReyAdmirado, Rohan16, RoiEvenHaim, Rolezn, Ruhum, Saintcode_, Samatak, Sm4rty, SnowMan, Tomio, Tomo, WilliamAmbrozic, _Adam, __141345__, ajtra, ak1, async, c3phas, ch0bu, cryptostellar5, d3e4, delfin454000, dharma09, djxploit, durianSausage, eierina, erictee, fatherOfBlocks, gianganhnguyen, gogo, ignacio, imare, jag, jonatascm, leosathya, lukris02, malinariy, oyc_109, pashov, pauliax, peanuts, peiw, prasantgupta52, robee, rokinot, rotcivegaf, rvierdiiev, seyni, simon135, slowmoses, sryysryy, tnevler, zishansami
52.8286 USDC - $52.83
uint256 public periodFinish = 0;
SemiFungibleVault.sol:89: require((shares = previewDeposit(id, assets)) != 0, "ZERO_SHARES"); SemiFungibleVault.sol:114: require( oracles/PegOracle.sol:23: require(_oracle1 != address(0), "oracle1 cannot be the zero address"); oracles/PegOracle.sol:24: require(_oracle2 != address(0), "oracle2 cannot be the zero address"); oracles/PegOracle.sol:25: require(_oracle1 != _oracle2, "Cannot be same Oracle"); oracles/PegOracle.sol:28: require( oracles/PegOracle.sol:98: require(price1 > 0, "Chainlink price <= 0"); oracles/PegOracle.sol:99: require( oracles/PegOracle.sol:103: require(timeStamp1 != 0, "Timestamp == 0 !"); oracles/PegOracle.sol:121: require(price2 > 0, "Chainlink price <= 0"); oracles/PegOracle.sol:122: require( oracles/PegOracle.sol:126: require(timeStamp2 != 0, "Timestamp == 0 !"); Vault.sol:156: require((shares = previewDeposit(id, assets)) != 0, "ZeroValue"); Vault.sol:178: require(msg.value > 0, "ZeroValue"); Controller.sol:143: //require this function cannot be called twice in the same epoch for the same vault Controller.sol:198: //require this function cannot be called twice in the same epoch for the same vault rewards/StakingRewards.sol:92: require(amount != 0, "Cannot stake 0"); rewards/StakingRewards.sol:115: require(amount > 0, "Cannot withdraw 0"); rewards/StakingRewards.sol:198: require( rewards/StakingRewards.sol:213: require( rewards/StakingRewards.sol:222: require( rewards/RewardsDistributionRecipient.sol:11: require(
VaultFactory.sol:119: mapping(uint256 => address[]) public indexVaults; //[0] hedge and [1] risk vault VaultFactory.sol:149: if(_admin == address(0)) VaultFactory.sol:151: if(_weth == address(0)) VaultFactory.sol:154: if(_treasury == address(0)) VaultFactory.sol:192: if(controller == address(0)) VaultFactory.sol:221: if (tokenToOracle[_token] == address(0)) { VaultFactory.sol:254: if(controller == address(0)) VaultFactory.sol:260: address hedge = indexVaults[index][0]; VaultFactory.sol:296: if(_controller == address(0)) VaultFactory.sol:349: if(_controller == address(0)) VaultFactory.sol:367: if(_oracle == address(0)) VaultFactory.sol:369: if(_token == address(0))
Vault.sol:429: for (uint256 i = 0; i < epochsLength(); i++) {
rewards/StakingRewards.sol:211: onlyOwner rewards/StakingRewards.sol:221: function setRewardsDuration(uint256 _rewardsDuration) external onlyOwner { VaultFactory.sol:129: modifier onlyAdmin() { VaultFactory.sol:186: ) public onlyAdmin returns (address insr, address rsk) { VaultFactory.sol:253: ) public onlyAdmin { VaultFactory.sol:295: function setController(address _controller) public onlyAdmin { VaultFactory.sol:310: onlyAdmin VaultFactory.sol:329: onlyAdmin VaultFactory.sol:347: onlyAdmin VaultFactory.sol:366: function changeOracle(address _token, address _oracle) public onlyAdmin { Controller.sol:73: modifier onlyAdmin() { rewards/RewardsFactory.sol:52: modifier onlyAdmin() { rewards/RewardsFactory.sol:85: onlyAdmin
#0 - HickupHH3
2022-11-08T09:01:49Z
undo initilzation of state variable to save 20,000 gas
This had significant gas savings of 211_776 / 15 iterations ~= 14k gas: testStakingRewards() (gas: -211776 (-0.097%))