Standar ERC-721
Token yang tidak dapat dipertukarkan
Standar ERC-721 adalah pelajaran Web3 & DApp Development Fundamentals gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Web3 & DApp Development Fundamentals, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Web3 & DApp Development Fundamentals mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
What Is ERC-721?
ERC-721 is the standard for non-fungible tokens (NFTs). Unlike ERC-20, each token is unique and identified by a distinct tokenId.
NFTs represent ownership of one-of-a-kind items: art, collectibles, in-game assets, and more.
Fungible vs Non-Fungible
The key contrast:
- ERC-20 - all tokens identical and interchangeable, tracked by balance
- ERC-721 - each token unique, tracked by owner per tokenId
You own specific token #42, not a fraction of a pool.
Core Ownership Functions
ERC-721 tracks ownership with two key views:
ownerOf(tokenId)- who owns a specific tokenbalanceOf(owner)- how many tokens an address owns
<code>function ownerOf(uint256 tokenId) external view returns (address);
function balanceOf(address owner) external view returns (uint256);</code>Transfer Functions
ERC-721 provides transferFrom and the safer safeTransferFrom, which checks that a receiving contract can handle NFTs.
<code>function transferFrom(address from, address to, uint256 tokenId) external;
function safeTransferFrom(address from, address to, uint256 tokenId) external;</code>Approval Functions
Owners can authorize others to transfer specific tokens with approve, or grant blanket permission over all their tokens with setApprovalForAll.
<code>function approve(address to, uint256 tokenId) external;
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);</code>Required Events
ERC-721 defines three events: Transfer, Approval, and ApprovalForAll. Note the tokenId is indexed so transfers of a specific NFT are easy to track.
<code>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);</code>safeTransferFrom and onERC721Received
safeTransferFrom protects against NFTs getting stuck. If the recipient is a contract, it must implement onERC721Received and return the correct magic value, otherwise the transfer reverts.
<code>// receiving contract must implement:
function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data)
external returns (bytes4);</code>The Metadata Extension
Most NFTs implement the optional metadata extension adding name(), symbol(), and crucially tokenURI(tokenId), which points to the token's off-chain JSON metadata.
<code>function name() external view returns (string memory);
function symbol() external view returns (string memory);
function tokenURI(uint256 tokenId) external view returns (string memory);</code>ERC-165 Interface Detection
ERC-721 builds on ERC-165, which lets contracts advertise which interfaces they support via supportsInterface. Marketplaces use it to detect NFTs.
<code>function supportsInterface(bytes4 interfaceId) external view returns (bool);</code>Using OpenZeppelin ERC721
As with ERC-20, the practical approach is to inherit OpenZeppelin's audited ERC721 implementation and add your minting logic.
<code>// import '@openzeppelin/contracts/token/ERC721/ERC721.sol';
// contract MyNFT is ERC721 {
// constructor() ERC721('MyNFT', 'MNFT') {}
// }</code>Where the Asset Lives
An NFT on-chain is just an id and an owner. The actual image or media usually lives off-chain (often on IPFS), referenced by the tokenURI. The chain proves ownership, not the file itself.
Quick Check
Test your understanding of the ERC-721 standard.
Recap
You learned the ERC-721 standard:
- NFTs are unique, identified by tokenId, tracked via
ownerOf - Transfers use
transferFromand safersafeTransferFrom - Approvals: per-token
approveand blanketsetApprovalForAll - Metadata extension adds
tokenURI; ERC-165 enables interface detection - Assets usually live off-chain, referenced by the URI
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Standar ERC-721” gratis?
Ya — teks lengkap “Standar ERC-721” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Web3 & DApp Development Fundamentals, upgrade ke CoddyKit PRO. Kursus Web3 & DApp Development Fundamentals mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Standar ERC-721”?
Token yang tidak dapat dipertukarkan Kamu berlatih Web3 & DApp Development Fundamentals dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Web3 & DApp Development Fundamentals?
Tidak diperlukan pengalaman sebelumnya. Web3 & DApp Development Fundamentals di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Standar ERC-721” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Web3 & DApp Development Fundamentals ini?
Ya. Setiap pelajaran Web3 & DApp Development Fundamentals menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Standar ERC-721
- Minting NFT
- Metadata Token
- Marketplace