Soulbound tokens are supposed to never be transferred to another account. The protocol attempts to do this by overriding the transferFrom()
function in ERC721.sol
with a function that reverts when called. The problem is that ERC721.sol
also has another transfer function safeTransferFrom()
and Soulmate.sol
does not override this function, so users could use safeTransferFrom()
to transfer their soulbound NFT.
Here is the overriding of transferFrom()
in Soulmate.sol
but there is no override of safeTransferFrom()
:
People will be able to transfer NFTs that are not meant to be transferred
Manaul review
Also override safeTransferFrom(address, address, uint256)
as well as safeTransferFrom(address, address, uint256, bytes)
...add the following functions to Soulmate.sol
and make the 3 transfer functions in ERC721.sol
virtual:
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.