Beli Kripto
Pasar
Spot
Futures OILBTC
Tabungan
Pusat Acara
Hub Hadiah
Lainnya
Fest. 0-Biaya
Antarmuka ERC-721: Apa Itu Antarmuka ERC-721?Antarmuka ERC-721 adalah sekumpulan fungsi dan peristiwa smart contract standar yang digunakan untuk merepresentasikan dan mentransfer non-fungible token di Ethereum dan jariAntarmuka ERC-721: Apa Itu Antarmuka ERC-721?Antarmuka ERC-721 adalah sekumpulan fungsi dan peristiwa smart contract standar yang digunakan untuk merepresentasikan dan mentransfer non-fungible token di Ethereum dan jari

Antarmuka ERC-721

2026/10/13 15:31
#Advanced
Humanity
H$0.05637-3.85%
PX
PX$0.0126-1.56%
Smart Blockchain
SMART$0.004381-3.56%
TokenFi
TOKEN$0.001972-6.18%
AINFT
NFT$0.0000002377-0.54%

Apa Itu Antarmuka ERC-721?

Antarmuka ERC-721 adalah sekumpulan fungsi dan peristiwa smart contract standar yang digunakan untuk merepresentasikan dan mentransfer non-fungible token di Ethereum dan jaringan blockchain yang kompatibel.

Non-fungible token, atau NFT, merepresentasikan token dengan identitas unik, bukan kuantitas yang dapat dipertukarkan dari unit-unit identik.

Spesifikasi ERC-721 resmi menetapkan cara wallet, aplikasi, smart contract, dan alat blockchain memeriksa kepemilikan NFT serta melakukan transfer standar.

Antarmuka ini tidak menentukan apa yang direpresentasikan NFT, berapa nilainya, atau apakah konten yang ditautkan autentik.

Antarmuka ini menetapkan bahasa teknis bersama yang dapat digunakan berbagai aplikasi kripto saat berinteraksi dengan kontrak NFT.

Standar ERC-721 mencapai status Final dalam proses Ethereum Improvement Proposal dan tetap menjadi salah satu standar utama untuk aset blockchain unik.

ERC-721 dapat digunakan untuk koleksi digital, item game, kredensial keanggotaan, tanah virtual, tiket acara, aset mirip domain, posisi finansial, dan catatan yang ditokenisasi.

Mengapa Antarmuka Penting?

Antarmuka smart contract menjelaskan fungsi eksternal dan peristiwa yang diharapkan tersedia pada kontrak yang kompatibel.

Tanpa antarmuka bersama, setiap proyek NFT dapat menggunakan nama fungsi dan aturan transfer yang berbeda.

Wallet dan aplikasi terdesentralisasi kemudian harus membuat kode khusus untuk setiap koleksi.

Antarmuka ERC-721 memungkinkan software memanggil fungsi yang umum dikenal seperti

ownerOf
,
balanceOf
,
approve
, dan
safeTransferFrom
.

Antarmuka ini juga menstandardisasi peristiwa yang memungkinkan sistem off-chain melacak transfer dan persetujuan NFT.

Kontrak dapat menambahkan fungsi lain di luar ERC-721 sambil tetap kompatibel dengan standar inti.

Kepatuhan terhadap antarmuka meningkatkan interoperabilitas, tetapi tidak menjamin keamanan kontrak atau dukungan semua aplikasi terhadap fitur khususnya.

Apa yang Membuat Token ERC-721 Nonfungibel?

Setiap token ERC-721 memiliki bilangan bulat unik tanpa tanda yang disebut token ID.

Identitas token ditentukan sepenuhnya oleh kombinasi jaringan blockchain, alamat kontrak, dan token ID.

Token ID 100 dalam satu kontrak tidak berkaitan dengan token ID 100 dalam kontrak lain.

Standar ini tidak mewajibkan token ID dimulai dari nol, bertambah secara berurutan, atau mengikuti pola yang dapat diprediksi.

Aplikasi sebaiknya memperlakukan setiap token ID sebagai pengenal opak, bukan menebak token ID mana yang tersedia.

Dalam model kepemilikan inti ERC-721, setiap token ID yang valid memiliki satu pemilik pada satu waktu.

NFT dapat ditransfer sebagai satu token utuh, sedangkan kepemilikan fraksional memerlukan kontrak atau struktur token terpisah di luar antarmuka dasar.

ID Antarmuka Inti ERC-721

Antarmuka inti ERC-721 diidentifikasi melalui ERC-165 dengan nilai

0x80ac58cd
.

Kontrak yang kompatibel sebaiknya mengembalikan

true
saat
supportsInterface
dipanggil dengan pengenal ini.

Standar deteksi antarmuka ERC-165 menghitung pengenal antarmuka dengan menerapkan XOR pada selector fungsi yang disertakan dalam antarmuka tersebut.

ERC-165 memungkinkan aplikasi menanyakan antarmuka standar yang diklaim didukung kontrak sebelum mencoba berinteraksi dengannya.

Respons positif berguna untuk pemeriksaan kompatibilitas, tetapi tidak secara mandiri membuktikan bahwa setiap fungsi diimplementasikan dengan benar.

Aplikasi yang menangani aset bernilai mungkin juga memerlukan tinjauan kode, pengujian, dan simulasi transaksi.

Fungsi Inti ERC-721

Antarmuka ERC-721 wajib mencakup kueri kepemilikan, fungsi transfer, dan fungsi pengelolaan persetujuan.

Fungsi utamanya adalah

balanceOf
,
ownerOf
,
safeTransferFrom
,
transferFrom
,
approve
,
setApprovalForAll
,
getApproved
, dan
isApprovedForAll
.

Implementasi yang patuh harus mengikuti perilaku yang diwajibkan standar, termasuk pemeriksaan otorisasi dan kondisi kegagalan.

Mint, burn, royalti, batas suplai, harga, dan administrasi koleksi tidak sepenuhnya ditentukan oleh antarmuka inti.

Proyek biasanya menambahkan logika terpisah untuk fitur-fitur tersebut.

Fungsi balanceOf

Fungsi

balanceOf
mengembalikan jumlah NFT yang dimiliki sebuah alamat dalam satu kontrak ERC-721.

Fungsi ini tidak mengembalikan jumlah token yang dapat dibagi atau nilai finansial NFT.

Jika sebuah alamat memiliki token ID 4, 19, dan 83 dari koleksi yang sama, saldonya adalah tiga.

Standar mengharuskan kueri untuk alamat nol gagal.

Fungsi ini tidak mengungkap token ID tertentu yang dimiliki alamat tersebut.

Untuk menemukan token ID tersebut, diperlukan pengindeksan peristiwa transfer atau antarmuka enumerable opsional.

Fungsi ownerOf

Fungsi

ownerOf
mengembalikan pemilik terkini dari token ID tertentu.

Untuk token yang ada, alamat pemilik yang dikembalikan tidak boleh berupa alamat nol.

Kueri untuk token yang tidak valid atau tidak ada harus gagal berdasarkan standar.

Kepemilikan yang dicatat kontrak mengendalikan hak transfer inti yang terkait dengan NFT tersebut.

Kepemilikan ini tidak selalu membuktikan kepemilikan hak cipta, merek dagang, properti fisik, atau hak hukum lainnya.

Hak tersebut bergantung pada perjanjian proyek, hukum yang berlaku, dan catatan eksternal.

Fungsi transferFrom

Fungsi

transferFrom
mentransfer NFT dari satu alamat ke alamat lain setelah memeriksa otorisasi dan kepemilikan.

Pemanggil harus merupakan pemilik, alamat yang secara khusus disetujui, atau operator yang disetujui oleh pemilik.

Alamat

from
harus sesuai dengan pemilik NFT saat ini.

Penerima tidak boleh berupa alamat nol.

Fungsi ini tidak mengharuskan smart contract penerima mengonfirmasi bahwa kontrak tersebut dapat menangani NFT.

NFT yang dikirim menggunakan

transferFrom
ke kontrak yang tidak kompatibel dapat menjadi tidak dapat diakses secara permanen.

Pengguna dan developer umumnya sebaiknya memilih safe transfer saat mengirim NFT ke kontrak yang belum dikenal.

Fungsi safeTransferFrom

ERC-721 mendefinisikan dua versi overload

safeTransferFrom
.

Satu versi mencakup pengirim, penerima, dan token ID.

Versi lainnya menambahkan kolom bytes yang dapat membawa data khusus aplikasi.

Kedua fungsi melakukan pemeriksaan kepemilikan dan otorisasi yang sama.

Jika penerima adalah smart contract, proses transfer akan memanggil

onERC721Received
pada kontrak tersebut.

Penerima harus mengembalikan selector yang diharapkan atau seluruh transfer akan dibatalkan.

Pemeriksaan penerima ini mengurangi kemungkinan pengiriman NFT ke kontrak yang tidak dapat mengelolanya.

Pemeriksaan ini tidak membuktikan bahwa kontrak penerima dapat dipercaya atau bahwa NFT nantinya dapat ditarik.

Apa Itu IERC721Receiver?

IERC721Receiver
adalah antarmuka yang diimplementasikan smart contract saat ingin menerima NFT melalui
safeTransferFrom
.

Fungsi yang diwajibkan adalah

onERC721Received
.

Fungsi ini menerima operator, pemilik sebelumnya, token ID, dan data opsional.

Penerima yang berhasil mengembalikan selector fungsinya, yang umumnya direpresentasikan sebagai

0x150b7a02
.

Nilai pengembalian yang keliru atau pemanggilan yang dibatalkan menyebabkan safe transfer gagal.

Dokumentasi implementasi ERC-721 terkini mencakup antarmuka penerima dan utilitas holder dasar untuk kontrak yang perlu menerima safe transfer.

Penerima sebaiknya memverifikasi kontrak NFT yang memanggilnya sebelum menggunakan callback untuk memperbarui pencatatan penting.

Risiko Callback Penerima ERC-721

Safe transfer ke kontrak membuat pemanggilan eksternal ke penerima tersebut.

Penerima dapat menjalankan kode tambahan sebelum transaksi awal selesai.

Hal ini menciptakan potensi jalur reentrancy jika aplikasi pengirim belum menyelesaikan pembaruan state internalnya.

Penerima berbahaya dapat mencoba memanggil fungsi lain dalam kontrak awal selama callback berlangsung.

Panduan keamanan smart contract Solidity menyarankan agar pemeriksaan dan perubahan state penting diselesaikan sebelum interaksi eksternal jika desain yang dimaksud memungkinkan urutan tersebut.

Developer sebaiknya menguji safe transfer NFT dengan kontrak penerima berbahaya, bukan berasumsi bahwa callback tidak berbahaya.

Fungsi approve

Fungsi

approve
memberikan izin kepada satu alamat untuk mentransfer satu NFT tertentu.

Pemilik token atau operator yang berwenang biasanya dapat memberikan persetujuan ini.

Alamat yang disetujui tidak menjadi pemilik.

Alamat tersebut mendapat wewenang untuk mentransfer token ID yang ditentukan.

Persetujuan khusus token umumnya dihapus saat NFT ditransfer.

Memanggil

approve
dengan alamat nol dapat menghapus persetujuan yang ada.

Pengguna sebaiknya memverifikasi alamat yang disetujui karena penyerang dengan persetujuan yang valid dapat mentransfer NFT tanpa tanda tangan tambahan dari pemilik.

Fungsi getApproved

Fungsi

getApproved
mengembalikan alamat yang saat ini disetujui untuk satu token ID.

Jika tidak ada alamat yang memiliki persetujuan khusus token, fungsi ini biasanya mengembalikan alamat nol.

Fungsi ini hanya berlaku untuk NFT valid yang sudah ada.

Fungsi ini tidak melaporkan persetujuan operator yang mencakup seluruh saldo koleksi milik pemegang.

Aplikasi juga sebaiknya memeriksa

isApprovedForAll
untuk menentukan apakah alamat lain dapat mentransfer token tersebut.

Fungsi setApprovalForAll

Fungsi

setApprovalForAll
memberikan atau mencabut otorisasi operator untuk semua token ERC-721 yang dimiliki pemanggil dalam kontrak tersebut.

Operator yang disetujui dapat mentransfer NFT yang sudah dimiliki serta NFT dari koleksi yang sama yang diterima pemilik di kemudian hari.

Izin ini lebih luas daripada persetujuan untuk satu token ID.

Fungsi ini umum digunakan saat aplikasi perlu mengelola beberapa NFT tanpa meminta persetujuan terpisah untuk masing-masing NFT.

Operator berbahaya dapat mentransfer semua NFT yang terdampak selama izin tersebut aktif.

Wallet sebaiknya menampilkan dengan jelas alamat koleksi dan cakupan persetujuan operator.

Fungsi isApprovedForAll

Fungsi

isApprovedForAll
melaporkan apakah operator memiliki wewenang atas seluruh koleksi milik pemilik tertentu.

Fungsi ini mengembalikan nilai Boolean, bukan jumlah token.

Wewenang operator hanya berlaku dalam kontrak ERC-721 yang memberikannya.

Persetujuan dalam satu koleksi NFT tidak otomatis berlaku untuk koleksi lain.

Pengguna sebaiknya meninjau izin operator aktif secara berkala dan mencabut izin yang tidak lagi diperlukan.

Peristiwa ERC-721

Antarmuka inti ERC-721 mendefinisikan peristiwa

Transfer
,
Approval
, dan
ApprovalForAll
.

Log peristiwa ini memungkinkan wallet, indexer, sistem analitik, dan blockchain explorer melacak aktivitas NFT yang distandardisasi.

Peristiwa membantu software off-chain menyusun kembali riwayat kepemilikan dan izin.

Peristiwa kontrak merupakan bukti yang dikeluarkan kontrak selama execution, tetapi aplikasi tetap harus memastikan transaksi berhasil dan berasal dari kontrak yang diharapkan.

Peristiwa Transfer

Peristiwa

Transfer
mencatat pemilik sebelumnya, pemilik baru, dan token ID.

Transfer biasa mencakup alamat pengirim dan penerima yang bukan alamat nol.

Mint biasanya direpresentasikan dengan menerbitkan transfer dari alamat nol kepada pemilik pertama.

Burn biasanya direpresentasikan dengan menerbitkan transfer dari pemilik ke alamat nol.

Antarmuka ERC-721 tidak mendefinisikan fungsi mint atau burn publik, meskipun pola peristiwa ini mendukung pelacakan siklus hidup token.

Peristiwa yang menunjukkan bahwa NFT telah di-mint tidak membuktikan bahwa suplai koleksi tetap atau wewenang mint dibatasi.

Peristiwa Approval

Peristiwa

Approval
mencatat persetujuan untuk satu token ID.

Peristiwa ini mengidentifikasi pemilik, alamat yang disetujui, dan token ID.

Aplikasi dapat menggunakannya untuk melacak perubahan wewenang transfer khusus token.

Peristiwa ini tidak boleh disamakan dengan transfer kepemilikan karena pemiliknya tetap sama.

Peristiwa ApprovalForAll

Peristiwa

ApprovalForAll
mencatat apakah pemilik mengaktifkan atau menonaktifkan operator.

Peristiwa ini mencakup pemilik, operator, dan status persetujuan.

Memantau peristiwa ini penting karena satu persetujuan operator dapat memengaruhi setiap NFT yang dimiliki pemilik dalam koleksi tersebut.

Peristiwa pencabutan tidak membatalkan transfer yang sudah dilakukan saat otorisasi masih aktif.

Antarmuka Metadata ERC-721 Opsional

Ekstensi metadata menambahkan

name
,
symbol
, dan
tokenURI
.

ID antarmuka ERC-165-nya adalah

0x5b5e139f
.

Ekstensi ini opsional menurut spesifikasi resmi, meskipun banyak kontrak NFT mengimplementasikannya.

Fungsi

name
mengembalikan nama deskriptif koleksi.

Fungsi

symbol
mengembalikan pengenal singkat yang dipilih developer kontrak.

Fungsi

tokenURI
mengembalikan URI yang terkait dengan token ID tertentu.

Nama dan simbol koleksi tidak bersifat unik sehingga tidak boleh digunakan sebagai satu-satunya pemeriksaan autentisitas.

Cara Kerja tokenURI

Fungsi

tokenURI
biasanya mengarah ke dokumen metadata JSON.

Dokumen tersebut dapat berisi kolom seperti nama tampilan, deskripsi, lokasi gambar, animasi, dan atribut khusus proyek.

URI dapat menggunakan alamat HTTPS, pengenal konten terdesentralisasi, atau URI data on-chain.

Standar ERC-721 resmi mengizinkan metadata yang dapat berubah.

Artinya, konten yang ditampilkan untuk NFT dapat berubah setelah mint kecuali kontrak atau proyek memberikan jaminan immutability yang lebih kuat.

Panduan pengembangan ERC-721 terkini mencatat bahwa metadata off-chain dapat diubah oleh pihak yang mengendalikan lokasi penyimpanannya.

Kepemilikan token tidak otomatis menjamin ketersediaan permanen gambar atau file eksternal.

Antarmuka Enumerable ERC-721 Opsional

Ekstensi enumerable memungkinkan aplikasi menemukan token ID melalui kueri on-chain.

ID antarmuka ERC-165-nya adalah

0x780e9d63
.

Ekstensi ini menambahkan

totalSupply
,
tokenByIndex
, dan
tokenOfOwnerByIndex
.

Fungsi

totalSupply
mengembalikan jumlah token yang saat ini valid dan dicatat kontrak.

Fungsi indeks memungkinkan pemanggil mengambil token ID dari seluruh suplai atau kepemilikan satu pemilik.

Enumeration bersifat opsional karena pemeliharaan indeks kepemilikan tambahan meningkatkan penulisan storage dan konsumsi gas.

Banyak aplikasi justru menyusun kembali kepemilikan NFT dari peristiwa

Transfer
menggunakan pengindeksan off-chain.

Mint dan Burn

Antarmuka inti ERC-721 tidak mewajibkan fungsi mint publik.

Setiap proyek menentukan apakah mint terbuka, dibatasi, terjadwal, dibatasi jumlahnya, atau dinonaktifkan secara permanen.

Standar ini juga tidak mewajibkan fungsi burn publik.

Burn menghapus token dari catatan kepemilikan yang valid sesuai implementasi kontrak.

Pengguna sebaiknya memeriksa siapa yang dapat melakukan mint atau burn NFT dan apakah administrator dapat memengaruhi token yang dimiliki akun lain.

Antarmuka transfer yang sesuai standar tidak membuktikan bahwa suplai token bersifat tetap.

Antarmuka ERC-721 vs. Implementasi ERC-721

Antarmuka menetapkan perilaku eksternal yang diwajibkan untuk kompatibilitas.

Implementasi berisi logika penyimpanan, otorisasi, transfer, mint, metadata, dan administrasi yang sebenarnya.

Dua kontrak dapat mendukung antarmuka ERC-721 yang sama tetapi menggunakan desain internal yang sangat berbeda.

Satu implementasi dapat bersifat immutable, sedangkan implementasi lain dapat beroperasi melalui proxy yang dapat di-upgrade.

Satu implementasi dapat memiliki suplai tetap, sedangkan implementasi lain memungkinkan administrator melakukan mint tanpa batas.

Satu implementasi dapat menyimpan metadata on-chain, sedangkan implementasi lain menunjuk ke server yang dapat diubah.

Pengguna sebaiknya meninjau implementasinya, bukan menganggap dukungan antarmuka sebagai penilaian keamanan yang lengkap.

ERC-721 vs. ERC-20

ERC-20 merepresentasikan saldo fungibel, sedangkan ERC-721 merepresentasikan token yang diidentifikasi secara individual.

Akun ERC-20 dapat memiliki jumlah yang dapat dibagi, misalnya 250 unit.

Akun ERC-721 memiliki sejumlah token ID yang berbeda.

Fungsi ERC-721

balanceOf
melaporkan jumlah NFT yang dimiliki akun, bukan jumlah satu token tertentu.

ERC-721 tidak mewajibkan kolom desimal karena setiap token biasanya ditransfer sebagai satu unit utuh.

Persetujuan juga berbeda karena ERC-721 mendukung persetujuan untuk satu token atau kendali operator atas seluruh koleksi.

ERC-721 vs. ERC-1155

ERC-721 berfokus pada token nonfungibel yang diidentifikasi secara individual.

ERC-1155 memungkinkan satu kontrak mengelola banyak token ID, termasuk aset fungibel, semi-fungibel, dan nonfungibel.

Akun ERC-1155 dapat memiliki beberapa unit dari satu token ID.

Token ID ERC-721 memiliki satu pemilik dan tidak mencatat saldo kuantitas untuk setiap akun.

Standar terbaik bergantung pada model aset, pola transfer, kebutuhan operasi batch, dan persyaratan aplikasi.

Royalti dan Antarmuka ERC-721

Antarmuka inti ERC-721 tidak menetapkan royalti kreator.

Antarmuka royalti terpisah dapat menyampaikan penerima pembayaran dan jumlah yang disarankan.

Informasi royalti tidak otomatis memaksa setiap sistem transfer melakukan pembayaran tersebut.

Koleksi yang mengklaim memiliki royalti sebaiknya menjelaskan cara penghitungan informasi tersebut dan apakah nilainya dapat berubah.

Pengguna tidak boleh berasumsi bahwa NFT ERC-721 mencakup hak royalti yang permanen atau dapat ditegakkan.

Risiko Keamanan Persetujuan ERC-721

Phishing persetujuan merupakan salah satu risiko terpenting bagi pemegang NFT.

Situs web berbahaya dapat meminta

setApprovalForAll
sambil menggambarkan tanda tangan tersebut sebagai verifikasi akun atau akses koleksi.

Setelah persetujuan diberikan, operator dapat mentransfer setiap NFT yang terdampak tanpa otorisasi tambahan dari pemilik.

Persetujuan khusus token juga dapat memungkinkan pencurian NFT yang diidentifikasi.

Pengguna sebaiknya memeriksa alamat operator, kontrak NFT, jenis izin, dan jaringan sebelum menandatangani.

Memutuskan koneksi wallet dari situs web tidak mencabut persetujuan yang sudah tercatat on-chain.

Risiko Transfer yang Tidak Aman

Fungsi

transferFrom
dapat mengirim NFT ke kontrak yang tidak memiliki mekanisme pemulihan.

Transaksi dapat berhasil meskipun tidak ada pihak yang dapat membuat kontrak penerima mentransfer NFT tersebut kembali.

Inilah alasan

safeTransferFrom
lebih disarankan untuk transfer ke kontrak.

Namun, penerimaan aman hanya membuktikan bahwa kontrak mengembalikan nilai callback yang diharapkan.

Hal ini tidak menjamin bahwa penerima memiliki mekanisme penarikan yang sah.

Risiko Metadata dan Autentisitas

Siapa pun dapat menerapkan kontrak ERC-721 dengan nama atau simbol koleksi yang sudah dikenal.

Alamat kontrak adalah pengenal teknis paling penting untuk suatu koleksi.

Metadata juga dapat berisi nama yang menyesatkan, karya seni salinan, tautan eksternal berbahaya, atau file yang tidak tersedia.

URI token yang dikendalikan administrator proyek dapat mengarah ke konten berbeda di kemudian hari.

Kepemilikan on-chain tidak secara independen memverifikasi identitas kreator atau hak kekayaan intelektual.

Pengguna sebaiknya mengonfirmasi alamat koleksi dan informasi proyek melalui sumber otoritatif.

Risiko Kontrak yang Dapat Di-upgrade

Implementasi ERC-721 dapat beroperasi di balik proxy yang dapat di-upgrade.

Administrator yang berwenang mungkin dapat mengubah aturan transfer, logika metadata, hak mint, atau perilaku lain setelah pengguna memperoleh NFT.

Upgrade dapat memperbaiki bug, tetapi juga menimbulkan risiko tata kelola dan kompromi kunci.

Pengguna sebaiknya memeriksa izin upgrade, jeda waktu, kontrol multisignature, dan peran administrator.

Dukungan terhadap antarmuka ERC-721 tidak mengungkap semua fungsi istimewa dalam implementasi.

Cara Developer Mengimplementasikan ERC-721

Developer sebaiknya menggunakan implementasi yang telah ditinjau dan aktif dipelihara, bukan menulis ulang logika kepemilikan yang sensitif tanpa alasan kuat.

API ERC-721 OpenZeppelin terkini menyediakan komponen inti, metadata, enumerable, pausable, burnable, royalti, voting, dan komponen terkait penerima.

Akses mint sebaiknya dibatasi sesuai kebijakan suplai koleksi yang didokumentasikan.

Safe mint sebaiknya dipertimbangkan saat NFT dapat di-mint langsung ke smart contract.

Callback penerima sebaiknya diperlakukan sebagai pemanggilan eksternal yang berpotensi menimbulkan reentrancy.

Pengujian sebaiknya mencakup kepemilikan, persetujuan, izin operator, penerima aman, penerima berbahaya, burn, token ID tidak valid, dan transfer tanpa otorisasi.

Developer juga sebaiknya menguji apakah deteksi antarmuka mengembalikan nilai yang benar untuk setiap ekstensi yang diimplementasikan.

Cara Aplikasi Mendeteksi Dukungan ERC-721

Aplikasi dapat memanggil

supportsInterface
dengan ID antarmuka inti ERC-721.

Nilai pengembalian

true
menunjukkan bahwa kontrak mengklaim mengimplementasikan antarmuka tersebut.

Aplikasi dapat memeriksa ID antarmuka metadata atau enumerable secara terpisah.

Deteksi antarmuka lebih andal daripada menebak hanya berdasarkan nama fungsi.

Namun, kontrak yang ditulis dengan buruk atau menipu dapat memberikan informasi yang tidak akurat.

Aplikasi sebaiknya menangani kegagalan pemanggilan dan perilaku tak terduga dengan aman, bukan berasumsi bahwa setiap kontrak mematuhi standar.

Contoh Transfer ERC-721

Misalnya, Alice memiliki token ID 42 dalam kontrak ERC-721.

Fungsi

ownerOf
pada kontrak mengembalikan alamat Alice untuk token ID 42.

Alice memutuskan mengirim NFT tersebut ke smart contract.

Wallet Alice memanggil

safeTransferFrom
dengan alamat Alice, kontrak penerima, dan token ID 42.

Kontrak NFT memverifikasi bahwa Alice memiliki token tersebut dan berwenang mentransfernya.

Kontrak memperbarui kepemilikan dan memanggil

onERC721Received
pada penerima.

Penerima memeriksa kontrak NFT, operator, pemilik sebelumnya, dan token ID.

Jika penerima mengembalikan selector yang benar, transfer selesai dan peristiwa

Transfer
diterbitkan.

Jika penerima menolak callback, seluruh transaksi dibatalkan dan Alice tetap menjadi pemiliknya.

Kesalahan Umum terkait Antarmuka ERC-721

Salah satu kesalahan umum adalah menganggap nama koleksi dapat mengidentifikasi kontrak NFT secara unik.

Kesalahan lainnya adalah menganggap

balanceOf
sebagai jumlah satu token ID.

Kesalahan ketiga adalah menggunakan

transferFrom
saat mengirim ke smart contract yang belum dikenal.

Kesalahan keempat adalah memberikan persetujuan operator untuk seluruh koleksi tanpa memeriksa alamat operator.

Kesalahan kelima adalah menganggap pemutusan koneksi wallet mencabut persetujuan on-chain.

Kesalahan keenam adalah menganggap metadata tersimpan permanen on-chain tanpa memeriksa token URI.

Kesalahan ketujuh adalah menganggap ERC-721 mencakup royalti wajib.

Kesalahan kedelapan adalah menganggap semua kontrak ERC-721 mendukung enumeration.

Kesalahan kesembilan adalah mengabaikan reentrancy selama callback penerima.

Kesalahan kesepuluh adalah menganggap dukungan ERC-165 membuktikan implementasi aman atau autentik.

FAQ

Apa itu antarmuka ERC-721?

Antarmuka ERC-721 adalah sekumpulan fungsi dan peristiwa standar untuk melacak kepemilikan, persetujuan, dan transfer non-fungible token.

Apa ID antarmuka ERC-721?

ID antarmuka inti ERC-721 adalah

0x80ac58cd
.

Apa yang dikembalikan balanceOf untuk kontrak ERC-721?

Fungsi ini mengembalikan jumlah NFT berbeda dari kontrak tersebut yang dimiliki suatu alamat.

Apa fungsi ownerOf?

Fungsi ini mengembalikan pemilik terkini dari token ID yang valid.

Apa perbedaan transferFrom dan safeTransferFrom?

safeTransferFrom
memeriksa apakah kontrak penerima mendukung callback penerima ERC-721, sedangkan
transferFrom
tidak.

Apa itu onERC721Received?

Fungsi ini adalah callback yang diimplementasikan smart contract untuk mengonfirmasi bahwa kontrak dapat menerima NFT melalui safe transfer.

Bisakah safe transfer NFT gagal?

Ya, transfer gagal jika pemeriksaan otorisasi gagal atau kontrak penerima tidak mengembalikan selector callback yang diharapkan.

Apa fungsi approve?

Fungsi ini memberi otorisasi kepada satu alamat untuk mentransfer satu NFT tertentu.

Apa fungsi setApprovalForAll?

Fungsi ini memberikan wewenang kepada operator atas semua NFT yang dimiliki pemanggil dalam kontrak ERC-721 tersebut.

Apakah persetujuan operator kedaluwarsa secara otomatis?

Tidak. Persetujuan standar untuk seluruh koleksi tetap aktif sampai pemilik mencabutnya atau kontrak menerapkan aturan khusus tambahan.

Apakah transfer NFT menghapus persetujuan khusus tokennya?

Ya, implementasi ERC-721 biasa menghapus persetujuan yang terkait dengan token tersebut saat transfer.

Apakah metadata diwajibkan oleh ERC-721?

Tidak. Antarmuka metadata bersifat opsional, meskipun sebagian besar koleksi NFT mengimplementasikannya.

Apa ID antarmuka metadata ERC-721?

Ekstensi metadata menggunakan ID antarmuka

0x5b5e139f
.

Apa ID antarmuka enumerable ERC-721?

Ekstensi enumerable menggunakan ID antarmuka

0x780e9d63
.

Apakah setiap kontrak ERC-721 mendukung totalSupply?

Tidak.

totalSupply
merupakan bagian dari ekstensi enumerable opsional.

Apakah ERC-721 mewajibkan fungsi mint?

Tidak. Antarmuka inti tidak menetapkan cara pengguna atau administrator melakukan mint NFT.

Apakah ERC-721 mewajibkan fungsi burn?

Tidak. Burn merupakan fitur implementasi, bukan fungsi inti yang diwajibkan.

Apakah ERC-721 menerapkan royalti?

Tidak. Royalti berada di luar antarmuka inti ERC-721 dan memerlukan logika atau standar terpisah.

Bisakah metadata ERC-721 berubah?

Ya. Standar ini mengizinkan token URI yang dapat berubah kecuali implementasinya memberikan jaminan immutability yang lebih kuat.

Apakah kepatuhan ERC-721 membuktikan NFT autentik?

Tidak. Siapa pun dapat menerapkan kontrak yang kompatibel, sehingga pengguna harus memverifikasi alamat kontrak dan penerbitnya secara independen.

Kesimpulan

Antarmuka ERC-721 menyediakan aturan umum untuk kepemilikan, persetujuan, transfer, dan peristiwa yang digunakan non-fungible token di berbagai aplikasi yang kompatibel dengan Ethereum.

ID antarmuka intinya adalah

0x80ac58cd
, yang diumumkan kontrak melalui deteksi antarmuka ERC-165.

Fungsi yang diwajibkan memungkinkan aplikasi memeriksa saldo dan pemilik, menyetujui wewenang transfer, serta memindahkan token ID unik.

Fungsi safe transfer mengurangi transfer yang tidak disengaja ke kontrak yang tidak kompatibel dengan mewajibkan callback penerima ERC-721.

Callback tersebut juga menciptakan risiko pemanggilan eksternal dan reentrancy yang harus ditangani developer dengan cermat.

Metadata dan enumeration adalah antarmuka opsional dengan pengenal terpisah serta pertimbangan tambahan terkait gas dan kepercayaan.

Standar ini tidak menetapkan akses mint, hak burn, royalti, batas suplai, keabadian metadata, kepemilikan hukum, atau autentisitas koleksi.

Pengguna sebaiknya memverifikasi alamat kontrak, meninjau persetujuan operator, memeriksa penyimpanan metadata, dan memahami izin upgrade sebelum berinteraksi dengan NFT.

Developer sebaiknya menggunakan implementasi yang terpelihara, menguji setiap jalur otorisasi, dan memperlakukan callback penerima NFT sebagai kode yang berpotensi berbahaya.

Memahami antarmuka ERC-721 membantu pengguna kripto membedakan kompatibilitas NFT yang distandardisasi dari karakteristik ekonomi, hukum, dan keamanan koleksi tertentu secara lebih luas.
Menarik Kembali / Peluang?
Menarik Kembali / Peluang?Menarik Kembali / Peluang?
Simak arus masuk ETF BTC $2,4 miliar pada likuidasi