Soulmate contract allows minting of NFT to soulmates but doesn't support transferring of NFT, and the Soulmate::transferFrom is overridden to always revert and doesn't support NFT transfers but other protocols interacting with Soulmate::supportsInterface will return wrong values as Soulmate contract doesn't support transferFrom.
The Soulmate contract doesn't support the mandatory function of ERC721 contract and thus the actual interface id for Soulmate contract for ERC721 will not be 0x80ac58cd.
Thus, other protocol interacting with Soulmate contract by checking with Soulmate::supportsInterface will return true for interface id 0x80ac58cd but actually our Soulmate contract doesn't support the transferFrom function and all the other functions which are dependent on it, therefore the corresponding ERC721 interface id for Soulmate contract should be updated accordingly without considering the transferFrom function and other functions depending on it.
Soulmate::supportsInterface will return true for interfaceId 0x80ac58cd even though transferFrom is not supported.
Other protocol interacting with Soulmate contract will get wrong values when they call supportsInterface and they will face reverts as a result of getting incorrect values.
Manual Review
Override the supportsInterface function and change the interface id from 0x80ac58cd to 0x591d4bc0.
Here, the interface id 0x591d4bc0 is obtained by discarding the function transferFrom and the other functions which are dependent on it, which are:
safeTransferFrom(address, address, uint256, bytes)
safeTransferFrom(address, address, uint256)
Override the supportsInterface function inside Soulmate contract
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.