ERC-721 standard

ERC-721 tokens

  • Provides basic functionality to track and transfer NFTs
  • NFTs can represent ownership over digital or physical assets.
  • NFTs are distinguishable and so the ownership of each one must be tracked separately

ERC-721 use-cases

  • Physical property — houses, unique artwork
  • Virtual collectables — unique pictures of kittens, collectable cards
  • “Negative value” assets — loans, burdens and other responsibilities

ERC-721 Interface


      interface ERC721 /* is ERC165 */ {
        event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
        event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
        event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
        function balanceOf(address _owner) external view returns (uint256);
        function ownerOf(uint256 _tokenId) external view returns (address);
        function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
        function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
        function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
        function approve(address _approved, uint256 _tokenId) external payable;
        function setApprovalForAll(address _operator, bool _approved) external;
        function getApproved(uint256 _tokenId) external view returns (address);
        function isApprovedForAll(address _owner, address _operator) external view returns (bool);
    }
    interface ERC165 {
        function supportsInterface(bytes4 interfaceID) external view returns (bool);
    }
    

ERC721 NFT Contract

ERC721 Required Interface

IERC721Metadata

ERC721 Contract with Metadata

IERC721Enumerable

ERC721 Contract with Enumerable

Demo : Standard ERC721 Token Contract

Application : Market place

Demo : Digital Art NFT marketplace

Recommended Resources