NFT standards
This article provides a standard NFT Metadata format to facilitate users to integrate the NFT module of the Bounce platform.
The NFT standard is divided into two protocols: ERC721 and ERC1155 (as Enjin first proposed both, we will follow Enjin's Metadata standard).

ERC721 standard introduction:

EIPs/eip-721.md at master · ethereum/EIPs
GitHub

ERC1155 standard introduction:

EIPs/eip-1155.md at master · ethereum/EIPs
GitHub

Metadata usage

Metadata enables NFTs’ subsidiary functions, which can describe each NFT, including pictures, names, descriptions, etc. The details are as follows:
{
"title": "Asset Metadata",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Identifies the asset to which this NFT represents"
},
"description": {
"type": "string",
"description": "Describes the asset to which this NFT represents"
},
"image": {
"type": "string",
"description": "A URI pointing to a resource with mime type image/* representing the asset to which this NFT represents. Consider making any images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive."
}
}
}
Metadata is obtained on ERC721 by reading the tokenURI function, and in the ERC1155 contract by reading the URI function. Take the tokenURI of a certain NFT in Burger as an example: https://raw.githubusercontent.com/burgernft/nft_assets/master/ETH-1.json
Burger puts Metadata information into GitHub, and users can see the current information of Metadata and also its modification records. A user can obtain the URL through the tokenURI, and then read the JSON format data through the URL.
This is how the Metadata data looks like on the Bounce platform:

ERC721 Metadata data structure description

{
"title": "Never Forget The Girl",
"type": "art",
"properties": {
"name": {
"type": "string",
"description": "Cindy Yi"
},
"description": {
"type": "string",
"description": "An irreplaceable girl."
},
"image": {
"type": "string",
"description": "https://shalomhu.github.io/bounce/NFT/images/img_01.jpg"
}
}
}

ERC1155 Metadata data structure description

{
"title": "Token Metadata",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Identifies the asset to which this token represents",
},
"decimals": {
"type": "integer",
"description": "The number of decimal places that the token amount should display - e.g. 18, means to divide the token amount by 1000000000000000000 to get its user representation.",
},
"description": {
"type": "string",
"description": "Describes the asset to which this token represents",
},
"image": {
"type": "string",
"description": "A URI pointing to a resource with mime type image/* representing the asset to which this token represents. Consider making any images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive.",
},
"properties": {
"type": "object",
"description": "Arbitrary properties. Values may be strings, numbers, object or arrays.",
},
"localization": {
"type": "object",
"required": ["uri", "default", "locales"],
"properties": {
"uri": {
"type": "string",
"description": "The URI pattern to fetch localized data from. This URI should contain the substring `{locale}` which will be replaced with the appropriate locale value before sending the request."
},
"default": {
"type": "string",
"description": "The locale of the default data within the base JSON"
},
"locales": {
"type": "array",
"description": "The list of locales for which data is available. These locales should conform to those defined in the Unicode Common Locale Data Repository (http://cldr.unicode.org/)."
}
}
},
}
}
Last modified 1yr ago
Copy link