EggHuntGame.sol::searchForEgg
which can be manipulated by miners or influenced by usersAn attacker observing the mempool can predict the outcome of the random number generation before the transaction is mined. If the outcome is unfavorable, they can choose not to execute the transaction, or they can manipulate transaction parameters to achieve a desired outcome.
Validators have the capability to adjust certain block parameters, such as the timestamp, within a permissible range. By doing so, they can influence the random number generation to their advantage.
Integrate with external randomness oracles like Chainlink VRF, which provide verifiable and tamper-proof random values.
EggVault::WithdrawEgg
functionEggVault::WithdrawEgg
uses transferFrom to send nft to users. However, transferFrom doesn’t check if the receiver is a contract and can handle NFTs.user that finds an egg with a contract that doesn't support ERC721, the token can get locked, therefore the token cannot be transferred to the vault.
ERC721::_mint()
can be dangerousEggHuntGame::searchForEgg
mints nft to a user that has a random number less than eggFindThreshold,ERC721::_mint()
mints tokens to address without checking if it supports ERC721EggHuntGame::depositEggToVault
EggHuntGame::depositEggToVault
is wrapping NFT transfers inside another function and don’t emit an events, tracking transfers becomes harder.Solidity updates may introduce breaking changes or alter existing functionalities.
Specifying an exact version safeguards the contract from compiling with a version that might have incompatible changes.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.