Each person who calls mintSoulmateToken()
in Soulmate.sol
is supposed to receive a soulbound NFT, but only soulmate2
will receive one. This is because _mint()
(inherited from ERC721.sol
) is only called when there is a soulmate already waiting (see code below). If you are soulmate1
you will not get an NFT.
Here is the relevant portion of the mintSoulmateToken()
function - an NFT is minted to soulmate2
in the else if statement but no NFT is minted to `soulmate`` in either the if statement or the else if statement.
The protocol does not function as expected and half the users won't receive an NFT. Also, you will be unable to use any features of the protocol that depend on you having the NFT in your account.
Manual review
Make the following addition so an NFT is also minted to soulmate1...also don't iterate to nextID++ until after the NFT is minted:
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.