NFTs are becoming widely adopted for their use as collectable, profile avatars, etc.
But NFTs have much more use cases apart from just buying and selling ape jpegs.
Problem Statement :
- NFTs today are used for their financial value rather than their use cases which include event passes, identities, degrees, etc. The ERC721 and ERC1155 NFT standards are not capable of serving these use cases since their ownership can be transferred which makes it unusable to be used for identity or degree, etc
We need a standard which does not permit the users to transfer the ownership of their NFTs. These tokens have to be attached to the address it is minted to.
The solution is an Address Bound Token.
- The inherent problem with ERC20/ERC721/ERC1155 or any ERC token standard is that bad actor can target the users with fake/thrashy/spam NFTs or Fungible Tokens. The user does not have a way to prevent anyone from doing so. In order to get rid of these spam tokens, they will have to transfer the tokens to someone else or burn it by transferring it to the null address.
The downside to this is that the users need to call the transfer()
function which takes up gas, ultimately having the users pay for something which they never intended to have in their wallet in the first place.
The solution is to have a contract which requires the signature of the user for anyone to transfer an NFT to their address.
Solutioning :
-
Create a contract which is an extension of ERC721 which does not have a
transfer()
ortransferFrom()
function. -
When this contract wants to mint an SBT for some address, it will require the user’s EIP721 signature.
-
Once the user’s signature is available, the contract can mint tokens for the user.
-
When the user provides the signature, the user can specify if the signature provided is for one time or forever. If the signature provided is forever, then the contract address will be whitelisted for the user.
-
The mint function in the contract can check the validity of the signature before minting any tokens in the future.