The documentation states that "An address is only allowed to collect 1 NFT per address, there is a check in the codebase to prevent someone from minting duplicate NFTs." This is invalid as the user of the protocol can mint themselves one more NFT by burning the token they receive from receiving presents for being EXTRA_NICE.
The contract allows users to buyPresents for their friends at the price of 1e18 SantaToken through the following code
The burn function is called from the buyPresent function which burns 1e18 SantaTokens.
A user can pass in their own address as the receiver which will burn their token and mint themself an NFT as they are the msg.sender as well as the receiver.
The cost of buying a present is set to 1e18. This allows user to purchase NFTs at a lower price than what has been stated in the docs.
User: The user will first redeem their presents for being EXTRA_NICE, this provides them with a NFT and a santaToken. They will burn the santaToken to mint themselves one more NFT.
Santa: Santa will check List1 and List2 for the User so they can redeem their rewards.
The disrupts the rules set by the protocol. The protocol states that only 1 NFT can be collected per address. A user can mint themselves 2 NFTs using this protocol. First by collecting rewards for being EXTRA_NICE and then burning the token they received in the rewards for a NFT.
Manual Review
Include a check to see if msg.sender != presentReceiver
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.