ERC-721

Introduction

This tutorial helps you to create an example ERC-721 compatible token that conforms to Klaytn Token Standards, especially Non-fungible Token Standard (ERC-721).
ERC-721 Non-Fungible Token Standard defines three events and 10 methods as below. supportsInterface of ERC-721 is derived from ERC-165 Standard Interface Detection and ERC-165 is a part of ERC-721. ERC-721 compatible tokens are the token contracts that implement ERC-721 and ERC-165 interfaces as below.
1
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
2
event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
3
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
4
5
function balanceOf(address _owner) external view returns (uint256);
6
function ownerOf(uint256 _tokenId) external view returns (address);
7
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
8
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
9
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
10
function approve(address _approved, uint256 _tokenId) external payable;
11
function setApprovalForAll(address _operator, bool _approved) external;
12
function getApproved(uint256 _tokenId) external view returns (address);
13
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
14
function supportsInterface(bytes4 interfaceID) external view returns (bool);
Copied!
Based on above interface, developers may customize tokens by adding new features and logics, and deploy on Klaytn network. For more information, refer to official ERC-721 specification.
In this tutorial, you are going to implement MyERC721Card.sol which implements a card-type non-fungible token, i.e. MyERC721Card, which is an ERC-721 token. Each MyERC721Card has name and level, e.g. "King" with level 1, "Queen" with level 1.
MyERC721Card.sol is based on OpenZeppelin's ERC721 implementation. A major part of the code in this tutorial is forked from OpenZeppelin 2.3 .
The rest of this tutorial is organized as follows.
Last modified 6mo ago
Copy link