NFT Metadata
This page was created in collaboration with Vasa and Iain
For Metadata Overview, I suggest you check out Deep dive into NFT Metadata
Metadata definition:
Metadata describes just attributes of the NFT, usually visual attributes like trait type - like colour of pants or similar. Usually:
name
description
image (should ideally point to ipfs/arweave links, traits) For better understanding look at Meebit metadata snippet: ``
{ "name": "Meebit #12347", "description": "Meebit #12347", "image": "http://meebits.larvalabs.com/meebitimages/characterimage?index\u003d12347\u0026type\u003dfull\u0026imageType\u003djpg", "attributes": [ { "trait_type": "Type", "value": "Human" }, { "trait_type": "Hair Style", "value": "Ponytail" }, { "trait_type": "Hair Color", "value": "Dark" }, { "trait_type": "Glasses", "value": "Aviators" }, { "trait_type": "Shirt", "value": "Tube Top" }, { "trait_type": "Shirt Color", "value": "Green" }, { "trait_type": "Pants", "value": "Leggings" }, { "trait_type": "Pants Color", "value": "Blue Camo" }, { "trait_type": "Shoes", "value": "Canvas" }, { "trait_type": "Shoes Color", "value": "Gray" } ] }
tokenURI may point to JSON file that conforms to the ERC721 Metadata JSON Schema
How we should describe token metadata?
The idea is to create metadata standard or find solution to:
simple describe token metadata
easy to parse even for non developer community like artists
What’s the situation with metadata now?
no video support (extremely problematic to upload video)
no link to "platform" - people have to find tokenURI (works with ERC-721), decode link via JSON parser and decode the picture / file this way
ERC1155 JSON Format
Stores:
name
decimals
description
image
properties
localization
Supporting only image files (images)
ERC721 Metadata
ERC721 defines metadata as tokenURI which is referring to IPFS (or other storage provider service) URL (link).
Which is an option but we can do better, unfortunately there is no better solution for how to describe metadata.
In ERC721 metadata extension is OPTIONAL
Metadata and their functions outcome example:
name() returns string => "1000x CubeArt" symbol() returns string => "CUBART" tokenURI(tokenId) returns string => "ipfs://SHA"
ERC2477 Token Metadata Integrity
Defines schema which should be used for describing metadata.
ERC2477 was created aiming to describe metadata better but it was really just about adding schema like https://schema.org/VisualArtwork to the metadata itself which is describing metadata in more readeable way but not sure if that's the road we would like to get onto.
This ERC is most likely not going to be used, you can read more about this ERC in [[ERC2477 Token Metadata Integrity]]
OpenSea metadata standard
The most people default using OpenSea implementation of metadata. This standard have a few additional fields like:
animation_url
original_url
OpenSea metadata standard: https://docs.opensea.io/docs/metadata-standards
The problem:
Just to name a few problems that Ethereum is facing with Infrastructure andd mainly metadata. We need:
More accessible metadata not only IPFS/ Arweave/ centralized server link
Support for video formats of NFTs (now nearly impossible to have video as NFT)
Better cross platform interoperability - marketplaces have custom metadata solutions for displaying files
We had a discussion about NFT Metadata. Notes are in HackMD
Further reading:
Slides from Iain (Zora): https://gateway.pinata.cloud/ipfs/QmYm88NA5exdF23D5oWien2p95abiwPp6o7vB89NJXaj1i/Metadata%20Draft%20Slides%20v1.pdf
Metadata definition: https://en.wikipedia.org/wiki/Metadata
Meebits metadata contract: https://meebits.larvalabs.com/meebit/12347
Meebits contract: https://etherscan.io/address/0x7bd29408f11d2bfc23c34f18275bbf23bb716bc7#code
Meebit itself: https://meebits.larvalabs.com/meebits/detail?index=1247
OpenSea metadata standard: https://docs.opensea.io/docs/metadata-standards
JSON parser: https://jsonformatter.org/json-parser
ERC-721: https://www.nftstandards.wtf/Standards/ERC721+Non+Fungible+Standard
ERC-1155: https://www.nftstandards.wtf/Standards/ERC1155+Multi+token
Zora Metadata formats: https://docs.zora.co/docs/developer-tools/zdk/metadata
Zora metadata media schemas: https://github.com/ourzora/media-metadata-schemas
Metadata schemas intro: https://nftschool.dev/reference/metadata-schemas/#intro-to-json-schemas
Structural improvements to ERC-1155 metadata https://writing.gonze.com/34203/structural-improvements-to-erc-1155-metadata
Last updated