Metadane tokenów
tokenURI i JSON
Metadane tokenów to bezpłatna lekcja Web3 & DApp Development Fundamentals na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Web3 & DApp Development Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Web3 & DApp Development Fundamentals zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
What Is Token Metadata?
Metadata describes what an NFT actually represents: its name, description, image, and attributes. While ownership is stored on-chain, the descriptive data usually lives off-chain in a JSON file.
The link between them is the tokenURI.
The tokenURI Function
The metadata extension defines tokenURI(tokenId), which returns a URL pointing to the JSON metadata for that specific token.
<code>function tokenURI(uint256 tokenId) external view returns (string memory);</code>The Metadata JSON Schema
The standard JSON has a few well-known fields. Marketplaces like OpenSea read these to display the NFT.
<code>{
'name': 'Cool Cat #42',
'description': 'A very cool cat.',
'image': 'ipfs://Qm.../42.png',
'attributes': [
{ 'trait_type': 'Color', 'value': 'Blue' }
]
}</code>Attributes and Traits
The attributes array lists traits as objects with trait_type and value. These power rarity rankings and filtering on marketplaces.
<code>'attributes': [
{ 'trait_type': 'Background', 'value': 'Sky' },
{ 'trait_type': 'Level', 'value': 5 }
]</code>Per-Token URIs
One approach stores a unique URI per token in a mapping. This is flexible but uses more storage.
<code>mapping(uint256 => string) private _tokenURIs;
function tokenURI(uint256 id) public view returns (string memory) {
return _tokenURIs[id];
}</code>Base URI Pattern
A cheaper approach stores a single base URI and appends the token id. This works when files are named sequentially like 1.json, 2.json, and so on.
<code>string private baseURI = 'ipfs://QmFolder/';
function tokenURI(uint256 id) public view returns (string memory) {
return string(abi.encodePacked(baseURI, _toString(id), '.json'));
}</code>Why IPFS?
Hosting metadata on a normal server is risky: if the server goes down or the file changes, the NFT breaks. IPFS uses content-addressed hashes, so a URI like ipfs://Qm... always points to the exact same immutable content.
Content Addressing
An IPFS hash (CID) is derived from the file's content. Change one byte and the hash changes. This guarantees the metadata cannot be silently swapped, preserving the NFT's integrity.
<code>// image: 'ipfs://bafybeih.../art.png'
// the CID itself proves the content is unaltered</code>On-Chain Metadata
For fully decentralized NFTs, you can store metadata entirely on-chain by returning a base64-encoded data URI. This costs more gas but removes any off-chain dependency.
<code>// returns: data:application/json;base64,<encoded JSON>
// fully on-chain, no IPFS or server needed</code>Reveal Mechanics
Many drops mint with a placeholder URI, then switch the base URI after sale to reveal the real art. This prevents buyers from sniping rare traits before mint.
<code>bool public revealed = false;
function setRevealed() public onlyOwner {
baseURI = 'ipfs://QmRealArt/';
revealed = true;
}</code>How Marketplaces Read It
A marketplace calls tokenURI(id), fetches the returned JSON, then loads the image and renders attributes. Following the standard schema is what makes your NFT display correctly everywhere.
Quick Check
Test your understanding of token metadata.
Recap
You learned about NFT metadata:
tokenURI(id)returns a link to the token's JSON metadata- The JSON holds name, description, image, and attributes
- Use per-token URIs or a base URI + id pattern
- IPFS content addressing keeps metadata immutable; on-chain metadata removes dependencies entirely
- Reveal patterns hide art until after mint
Często zadawane pytania
Czy lekcja „Metadane tokenów” jest bezpłatna?
Tak — pełny tekst „Metadane tokenów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Web3 & DApp Development Fundamentals, przejdź na CoddyKit PRO. Kurs Web3 & DApp Development Fundamentals zawiera 4 lekcji w sumie.
Co nauczysz się w „Metadane tokenów”?
tokenURI i JSON Ćwiczysz Web3 & DApp Development Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Web3 & DApp Development Fundamentals?
Nie wymagamy żadnego doświadczenia. Web3 & DApp Development Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Metadane tokenów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Web3 & DApp Development Fundamentals?
Tak. Każda lekcja Web3 & DApp Development Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Standard ERC-721
- Tworzenie NFT
- Metadane tokenów
- Marketplace'y