The setEggNFT function allows the owner to change the eggNFT contract address after deployment. If eggs from the original NFT contract are deposited and the owner subsequently calls setEggNFT to point to a different NFT contract, the withdrawal mechanism breaks.
The withdrawEgg function will later attempt to call transferFrom on the new eggNFT instance using a tokenId associated with the original contract, causing the withdrawal to fail revert because the vault doesn't own that token ID on the new contract.
Deposited NFTs become permanently locked in the EggVault contract, as users cannot withdraw their NFTs if the referenced EggstravaganzaNFT contract address is changed after their deposit.
Initialize the eggNFT address immutably in the constructor and remove the setEggNFT function.
Changing the NFT contract address doesn't update the storedEggs and eggDepositors mappings
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.