| Penulis | Entriken, William; Shirley, Dieter; Evans, Jacob; Sachs, Nastassia |
|---|---|
| Tahun | 2018 |
| Proyek | Ethereum (EIP-721) |
| Lisensi | MIT |
| Sumber Resmi | eips.ethereum.org/EIPS/eip-721 |
EIP-721 (ERC-721) — ditulis oleh William Entriken, Dieter Shirley, Jacob Evans, dan Nastassia Sachs, diajukan 24 Januari 2018 (status Final Juni 2018) — mendefinisikan antarmuka standar untuk token non-fungible (NFT) di Ethereum: token di mana setiap unit memiliki identifier unik, membedakannya dari token ERC-20 yang fungible. ERC-721 memungkinkan kepemilikan digital atas aset unik termasuk seni, kolektibel, nama domain (ENS), tiket acara, item game, dan representasi aset dunia nyata — standar yang mendasari setiap koleksi NFT besar dari CryptoKitties hingga pasar NFT senilai $40 miliar+ pada puncaknya tahun 2021.
Mengapa Non-Fungible?
Token ERC-20 bersifat fungible — setiap 1 USDC identik dengan USDC lainnya; saldo hanyalah hitungan. Beberapa aset perlu dibedakan secara individual:
- CryptoKitties — setiap kucing unik; kucing spesifik mana yang Anda miliki itu penting.
- Nama domain (ENS) — setiap nama unik.
- Seni — setiap karya seni unik.
- Akta properti — setiap properti unik.
ERC-721 menyediakan primitif teknis: kontrak yang melacak kepemilikan token ID bernomor individual, di mana memiliki token #42 berbeda dari memiliki token #43.
Fungsi Inti: ownerOf
Primitif inti ERC-721:
function ownerOf(uint256 _tokenId) external view returns (address);
Berbeda dengan balanceOf(address) ERC-20 yang mengembalikan hitungan, ownerOf(tokenId) ERC-721 mengembalikan satu alamat — pemilik token unik spesifik itu. Ini perbedaan fundamental: NFT diindeks berdasarkan ID token, bukan berdasarkan alamat.
safeTransferFrom: Mencegah Token Hilang
Varian safeTransferFrom memeriksa apakah alamat penerima adalah kontrak — jika ya, ia memanggil onERC721Received pada kontrak penerima, memastikan penerima dapat menangani token. Ini memperbaiki masalah ERC-20 di mana token yang dikirim ke kontrak hilang permanen.
setApprovalForAll: Kritis untuk Marketplace
Fungsi setApprovalForAll(operator, disetujui) sangat penting untuk marketplace NFT (OpenSea, Blur, LooksRare): pengguna menyetujui kontrak marketplace sebagai operator satu kali; marketplace kemudian dapat mendaftarkan dan menjual NFT mana pun dari pengguna tanpa memerlukan persetujuan per token.
tokenURI: Tautan ke Metadata
Ekstensi metadata opsional (banyak diimplementasikan) menyertakan tokenURI(tokenId) — mengembalikan URL atau hash IPFS yang menunjuk ke file JSON dengan nama, deskripsi, URL gambar, dan atribut NFT.
Kerentanan kritis: Jika tokenURI menunjuk ke server terpusat (https://), operator server dapat mengubah atau menghapus metadata. CID IPFS atau metadata sepenuhnya on-chain (SVG ber-encoding base64) memberikan keabadian. Banyak proyek NFT besar (BAYC v1) menggunakan server terpusat, menciptakan risiko sentralisasi metadata.
Kronologi NFT
- 23 Juni 2017 — CryptoPunks (Larva Labs) diluncurkan — 10.000 karakter pixel art unik; pertama kali dianggap koleksi NFT Ethereum utama.
- 28 November 2017 — CryptoKitties diluncurkan; popularitasnya yang belum pernah ada sebelumnya memacetkan Ethereum (~30% dari semua transaksi pada puncaknya).
- 24 Januari 2018 — EIP-721 diajukan.
- 21 Juni 2018 — EIP-721 mencapai status Final.
- 11 Maret 2021 — “Everydays: The First 5000 Days” Beeple terjual di Christie’s seharga $69,3 juta — momen monumental kesadaran mainstream NFT.
- 2021 — BAYC diluncurkan; pasar NFT global melampaui $40 miliar volume tahunan.
ERC-6551: Token-Bound Accounts
ERC-6551 (2023) memperluas ERC-721: NFT yang memiliki wallet — setiap NFT dapat bertindak sebagai akun Ethereum yang dapat memiliki token, berinteraksi dengan kontrak, dan memiliki NFT lain. Ini memungkinkan NFT yang mewakili karakter game untuk secara langsung memegang inventaris mereka.
Istilah Terkait
Referensi
- Entriken, W. et al. (2018). EIP-721: Non-Fungible Token Standard. eips.ethereum.org/EIPS/eip-721