Stateful Non-Fungible Token Standard

  1. Author’s information
    name: Fransis
    Telegram: @FransisJUnderwood

  2. Simple Summary
    This NIP is a completely new NFT standard that is independent of ERC721 and is applied to NFT asset scenarios with state-based evolution.

  3. Abstract
    Unlike the ERC721 standard in which a single tokenId can only represent a single unique asset, this NIP proposes a new asset representation form to handle application scenarios in which the same asset has different states. For example, in a certain game application scenario, if a certain prop has multiple forms, then the different forms of this prop should have different representations to break the inherent pattern that this prop can only have a unique representation under ERC721.

  4. Motivation
    As mentioned above, this NIP will supplement the shortcomings of ERC721 Standard in specific application scenarios such as state-based NFTs. This provides the NFT ecosystem and developers with a new NFT representation protocol to expand and build their own NFT applications. For example, in a certain football star card NFT project, a football star card has different states, representing the characteristics of the football star at different stages of his career, and this NIP perfectly fits this type of application scenario.

  5. Rationale
    The core aspect for stateful NFTs is to introduce stateId to expand the representation in addition to tokenId. A certain state of a single NFT is uniquely determined by using the pair of (tokenId, stateId). In specific application scenarios, one user can hold a certain state of an asset, while another user can hold another state of the same asset, and when a user holds all the states of an asset, he will acquire some additional rights and benefits, etc. At the same time, differences can be expressed by setting different metadata for different stateId. This NFT proposal based on stateful representation standardizes the contract implementation specifications of these applications for state-based NFTs to enhance the diversity of the NFT protocol ecosystem.

  6. Specification (non-mandatory)
    Here is an brief introduction of interfaces for this state-based NIP.

interface MRC6379 {
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId, uint256 indexed _stateId);
    function balanceOf(address _owner) external view returns (uint256);
    function ownerOf(uint256 _tokenId, uint256 _stateId) external view returns (address);
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, uint256 _stateId, bytes data) external payable;
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, uint256 _stateId) external payable;
    function transferFrom(address _from, address _to, uint256 _tokenId, uint256 _stateId) external payable;
  1. Open-source commitment
    I commits to open-sourcing the NIP and grants permission for developers within the Mint blockchain ecosystem to build protocols and applications based on this NIP.