Beli Kripto
Pasar
Spot
Futures OILBTC
Tabungan
Pusat Acara
Hub Hadiah
Lainnya
Fest. 0-Biaya
ERC-777: Apa Itu ERC-777?ERC-777 adalah standar token Ethereum untuk aset kripto fungibel yang menambahkan hook transfer, izin operator, data transaksi, dan pemeriksaan penerima kontrak yang lebih aman pada moERC-777: Apa Itu ERC-777?ERC-777 adalah standar token Ethereum untuk aset kripto fungibel yang menambahkan hook transfer, izin operator, data transaksi, dan pemeriksaan penerima kontrak yang lebih aman pada mo

ERC-777

2026/10/13 15:31
#Advanced
Humanity
H$0.05386-10.39%
PX
PX$0.0125-4.58%
TokenFi
TOKEN$0.001993-6.34%
Data Network
DATA$0.2035+0.04%
Smart Blockchain
SMART$0.004337-3.47%

Apa Itu ERC-777?

ERC-777 adalah standar token Ethereum untuk aset kripto fungibel yang menambahkan hook transfer, izin operator, data transaksi, dan pemeriksaan penerima kontrak yang lebih aman pada model token dasar.

Seperti ERC-20, ERC-777 merepresentasikan unit yang dapat dipertukarkan, dengan nilai dan karakteristik yang sama untuk setiap unit token yang sama.

Spesifikasi ERC-777 resmi merupakan standar Ethereum Request for Comments berstatus Final yang dibuat untuk meningkatkan interaksi token fungibel dengan wallet dan smart contract.

Fitur utamanya mencakup fungsi

send
, hook pengirim dan penerima, operator yang diberi otorisasi, fungsi burn bawaan, serta data opsional yang dilampirkan pada perpindahan token.

ERC-777 dirancang agar kompatibel dengan ERC-20 sehingga satu kontrak token dapat mendukung kedua antarmuka.

Namun, adopsi ERC-777 terbatas dibandingkan ERC-20 karena perilaku callback dan ketergantungannya pada ERC-1820 membuat integrasi lebih kompleks dan dapat menimbulkan risiko reentrancy serius.

Apakah ERC-777 Masih Menjadi Standar Aktif?

ERC-777 masih tercantum sebagai standar Final di repositori Ethereum Improvement Proposal resmi.

Status Final berarti spesifikasinya telah menyelesaikan proses standardisasi EIP, tetapi tidak menjamin adopsi luas, dukungan library aktif, atau kesesuaiannya untuk setiap token baru.

Sebuah library smart contract besar melakukan deprecated pada implementasi ERC-777 di versi 4.9 dan menghapusnya pada versi 5.0.

Catatan perubahan OpenZeppelin Contracts terkini mencatat berakhirnya dukungan implementasi, sementara antarmuka standar terkait masih tersedia.

Keputusan library ini tidak membatalkan ERC-777 atau mengubah status Final-nya.

Namun, developer sebaiknya tidak mengharapkan implementasi token ERC-777 yang dipelihara dalam versi terkini library tersebut.

Kontrak ERC-777 yang sudah ada dapat terus beroperasi sesuai kode yang telah diterapkan, tetapi integrasi baru sebaiknya mengevaluasi perilaku callback, dependensi, audit, dan dukungan ekosistemnya dengan cermat.

Mengapa ERC-777 Dibuat?

ERC-777 dibuat untuk mengatasi sejumlah keterbatasan kegunaan dan keamanan yang terkait dengan transfer ERC-20 dasar.

Transfer ERC-20 ke kontrak tidak mengharuskan kontrak penerima mengakui atau memproses token tersebut.

Akibatnya, token dapat terjebak jika kontrak tidak memiliki fungsi untuk memulihkan atau mencatatnya.

Aplikasi ERC-20 juga umumnya menggunakan alur dua langkah: pengguna terlebih dahulu menyetujui spender, lalu spender memanggil

transferFrom
.

ERC-777 memperkenalkan

send
agar token dapat dikirim dengan data terlampir sekaligus memberi tahu penerima yang kompatibel dalam transaksi yang sama.

Standar ini juga memperkenalkan operator sebagai model otorisasi dengan peran yang jelas bagi akun atau kontrak yang memindahkan token atas nama pemegangnya.

Standar ini bertujuan membuat token fungibel berperilaku lebih menyerupai transfer ETH native, sekaligus memberi pengirim dan penerima kendali terprogram atas perpindahan token.

Cara Kerja ERC-777

Kontrak ERC-777 menyimpan saldo token dan total suplai, sekaligus menyediakan fungsi standar untuk mengirim, melakukan burn, dan mendelegasikan kendali token.

Saat token dikirim, kontrak memeriksa apakah pengirim telah mendaftarkan hook pengirim melalui ERC-1820.

Jika ada hook pengirim, token akan memanggilnya sebelum mengubah saldo.

Token kemudian mengurangi saldo pengirim dan menambah saldo penerima.

Setelah memperbarui saldo, token memeriksa apakah penerima telah mendaftarkan hook penerima dan memanggil hook tersebut jika diwajibkan.

Hook dapat menerima perpindahan, menjalankan logika tambahan, atau membatalkan seluruh transaksi.

Karena operasinya bersifat atomik, pembatalan oleh hook yang diwajibkan biasanya membatalkan perpindahan token dan semua perubahan state terkait dalam transaksi tersebut.

Fungsi Inti ERC-777

Antarmuka ERC-777 mencakup fungsi untuk metadata token, saldo, granularity, operator, transfer, dan burn.

Fungsi

name
,
symbol
,
totalSupply
, dan
balanceOf
menyediakan informasi yang juga dikenal pada token ERC-20.

Fungsi

granularity
melaporkan jumlah terkecil yang tidak dapat dibagi lagi untuk dicetak, dikirim, atau di-burn.

Fungsi

defaultOperators
mengembalikan operator yang secara default diberi otorisasi untuk semua pemegang, dengan tunduk pada hak setiap pemegang untuk mencabutnya.

Fungsi

isOperatorFor
memeriksa apakah suatu alamat dapat bertindak sebagai operator bagi pemegang tertentu.

Fungsi

authorizeOperator
dan
revokeOperator
memungkinkan pemegang mengelola otorisasi operator.

Fungsi

send
dan
operatorSend
memindahkan token, sedangkan
burn
dan
operatorBurn
mengurangi suplai secara permanen.

Fungsi send

Fungsi

send
memungkinkan pemegang mentransfer token langsung ke alamat lain dan melampirkan kolom bytes bernama
data
.

Data terlampir dapat menjelaskan pembayaran, tindakan aplikasi, nomor referensi, atau informasi lain yang dipahami sistem penerima.

Fungsi ini memicu hook pengirim dan penerima yang terdaftar sesuai aturan ERC-777.

Jika penerima adalah kontrak, fungsi send native ERC-777 harus dibatalkan apabila kontrak tersebut belum mendaftarkan implementasi penerima ERC-777 melalui ERC-1820.

Pemeriksaan penerima ini dimaksudkan untuk mengurangi risiko transfer yang tidak disengaja ke kontrak yang tidak dapat menangani token.

Pemeriksaan ini tidak membuktikan bahwa penerima yang terdaftar jujur, aman, atau aman secara ekonomi.

Fungsi operatorSend

Fungsi

operatorSend
memungkinkan operator yang telah diberi otorisasi memindahkan token dari pemegang ke penerima.

Operator harus sudah mendapat otorisasi dari pemegang berdasarkan aturan operator token.

data
yang diberikan pemegang dan
operatorData
yang diberikan operator dapat sama-sama ikut dikirim bersama perpindahan tersebut.

Alamat operator, pemegang, penerima, jumlah, dan data disertakan dalam peristiwa standar

Sent
.

Pemanggilan operator tanpa otorisasi harus dibatalkan.

Otorisasi operator harus diperlakukan sebagai hal sensitif karena dapat memungkinkan alamat lain memindahkan atau melakukan burn token pemegang.

Apa Itu Operator ERC-777?

Operator adalah alamat yang diberi otorisasi untuk mengirim atau melakukan burn token ERC-777 atas nama pemegang.

Pemegang token selalu menjadi operator untuk saldonya sendiri.

Pemegang dapat memberi otorisasi kepada akun atau smart contract lain, lalu mencabut otorisasi tersebut kapan saja.

Operator dapat mendukung pembayaran otomatis, pengelolaan akun berbasis kontrak, aktivitas terjadwal, sistem pemulihan, atau alur kerja pendelegasian token lainnya.

Berbeda dengan allowance ERC-20 yang dinyatakan dalam angka, otorisasi operator biasa tidak dibatasi pada jumlah token tertentu.

Wewenang yang lebih luas ini dapat meningkatkan kemudahan penggunaan, tetapi juga memperbesar potensi kerugian jika operator bertindak jahat atau akunnya disusupi.

Wallet sebaiknya menjelaskan dengan jelas bahwa otorisasi operator dapat memberikan kendali berkelanjutan atas saldo pemegang.

Operator Default

Token ERC-777 dapat menentukan operator default yang sejak awal diberi otorisasi untuk setiap pemegang.

Daftar operator default harus ditetapkan saat kontrak token dibuat dan tidak dapat diperluas atau dikurangi setelahnya berdasarkan standar.

Setiap pemegang harus dapat mencabut operator default untuk token miliknya sendiri.

Pemegang juga harus dapat memberi otorisasi kembali kepada operator default yang sebelumnya dicabut.

Operator default dapat mendukung layanan berskala sistem tanpa mengharuskan setiap pemegang melakukan transaksi otorisasi awal.

Namun, operator default menimbulkan pertimbangan kepercayaan penting karena memiliki wewenang luas atas pemegang token sejak awal.

Pengguna sebaiknya memeriksa daftar operator default dan memahami tujuannya sebelum menyimpan ERC-777 dalam jumlah signifikan.

Hook Pengirim

Hook pengirim ERC-777 disebut

tokensToSend
.

Pemegang dapat mendaftarkan kontrak yang mengimplementasikan hook ini melalui registry ERC-1820.

Kontrak token harus memanggil hook sebelum mengurangi saldo pemegang dalam proses send atau burn ERC-777.

Hook menerima operator, pengirim, penerima, jumlah, data pemegang, dan data operator.

Hook dapat memeriksa perpindahan yang diajukan dan membatalkannya jika aturan terprogram pemegang menolaknya.

Smart wallet dapat menggunakan hook pengirim untuk menerapkan kebijakan pengeluaran, notifikasi, atau logika otorisasi tambahan.

Kontrak hook harus memverifikasi bahwa panggilan berasal dari kontrak token yang diharapkan karena hook terdaftar yang sama dapat menerima panggilan dari berbagai token ERC-777.

Hook Penerima

Hook penerima ERC-777 disebut

tokensReceived
.

Alamat penerima dapat mendaftarkan kontrak yang mengimplementasikan hook ini melalui ERC-1820.

Token memanggil hook setelah menambah saldo penerima dalam proses send atau mint.

Hook dapat memperbarui pencatatan internal, memicu tindakan kontrak lain, mencatat data pembayaran, atau menolak penerimaan dengan membatalkan transaksi.

Desain ini memungkinkan transfer token dan respons penerima berlangsung dalam satu transaksi atomik.

Artinya, penerimaan token ERC-777 dapat menjalankan kode eksternal sebelum pemanggilan token awal selesai.

Setiap protokol yang menerima token ERC-777 harus memperhitungkan perilaku callback ini di semua fungsi pengubah state yang relevan.

Apa Itu ERC-1820?

ERC-777 bergantung pada ERC-1820 untuk menemukan hook pengirim, hook penerima, dan antarmuka yang didukung.

Spesifikasi ERC-1820 menetapkan registry universal tempat sebuah alamat dapat mengumumkan antarmuka yang didukung serta kontrak yang mengimplementasikannya.

Registry ini dapat mewakili antarmuka untuk akun biasa maupun smart contract.

Akun dapat mendaftarkan dirinya sebagai implementer atau menunjuk kontrak terpisah untuk menangani antarmuka atas namanya.

Sebelum memanggil hook ERC-777, token meminta implementasi pengirim atau penerima yang relevan dari registry.

Ketergantungan pada registry ini menambahkan pencarian kontrak eksternal ke operasi ERC-777.

Jaringan yang didukung harus memiliki penerapan registry ERC-1820 dan perilaku integrasi yang diharapkan agar implementasi standar dapat berfungsi dengan benar.

Peristiwa ERC-777

ERC-777 mendefinisikan peristiwa

Sent
,
Minted
,
Burned
,
AuthorizedOperator
, dan
RevokedOperator
.

Peristiwa

Sent
mengidentifikasi operator, pengirim, penerima, jumlah, data pemegang, dan data operator.

Peristiwa

Minted
mencatat pembuatan token baru dan alamat penerima.

Peristiwa

Burned
mencatat pemusnahan token dan pemegang yang terdampak.

Peristiwa operator memungkinkan wallet dan layanan pemantauan melacak perubahan wewenang yang didelegasikan.

Token yang juga mendukung ERC-20 dapat menerbitkan peristiwa ERC-20

Transfer
selain peristiwa ERC-777 yang diwajibkan spesifikasi.

Aplikasi sebaiknya menghindari penghitungan ganda atas satu perpindahan ekonomi ketika kedua jenis peristiwa menggambarkan transfer yang sama.

Granularity dan Tampilan Desimal

Granularity adalah jumlah token internal terkecil yang diizinkan kontrak ERC-777 untuk dicetak, dikirim, atau di-burn.

Nilainya ditetapkan saat kontrak dibuat dan tidak dapat diubah berdasarkan standar.

Setiap saldo dan jumlah perpindahan harus merupakan kelipatan granularity token.

Sebagian besar token menggunakan granularity satu sehingga setiap unit internal utuh dapat dipindahkan.

ERC-777 menetapkan denominasi tampilan sebesar 18 angka desimal relatif terhadap unit internal.

Jika token ERC-777 juga menyediakan fungsi

decimals
ERC-20 yang opsional, spesifikasi mengharuskan fungsi tersebut mengembalikan 18.

Aplikasi sebaiknya menggunakan aritmetika bilangan bulat dan memformat nilai untuk ditampilkan, bukan menghitung saldo token menggunakan angka floating-point.

Kompatibilitas ERC-777 dan ERC-20

ERC-777 dirancang agar token dapat mengimplementasikan fungsi ERC-20 bersama antarmuka ERC-777.

Standar ERC-20 mendefinisikan fungsi yang umum dikenal, seperti

transfer
,
approve
,
allowance
, dan
transferFrom
.

Token yang kompatibel dengan kedua standar dapat digunakan oleh wallet dan aplikasi lama yang hanya memahami ERC-20.

Hook ERC-777 tetap dapat berlaku pada transfer yang kompatibel dengan ERC-20 jika pengirim atau penerima terkait telah mendaftarkan hook.

Namun, perlindungan penerima kontrak berbeda antara kedua antarmuka.

Fungsi

send
native ERC-777 ke kontrak penerima yang belum terdaftar harus dibatalkan, sedangkan transfer yang kompatibel dengan ERC-20 dapat tetap berlangsung dan meninggalkan token di kontrak tersebut.

Integrator harus mengidentifikasi fungsi yang dipanggil, bukan berasumsi bahwa setiap perpindahan token yang sama memiliki perilaku callback dan penerima yang identik.

Allowance ERC-777 vs. ERC-20

ERC-20 umumnya memberikan allowance numerik kepada spender yang membatasi jumlah token yang dapat dipindahkan spender dari pemiliknya.

ERC-777 memberikan wewenang kepada operator atas saldo pemegang sampai wewenang tersebut dicabut.

Model operator menyediakan peran bernama yang lebih jelas serta mendukung tindakan send dan burn yang distandardisasi.

Model allowance dapat memberikan batas jumlah yang lebih sempit, meskipun terkadang pengguna menyetujui jumlah yang jauh lebih besar daripada yang dibutuhkan.

Kedua sistem dapat menimbulkan kerugian jika pengguna memberi otorisasi kepada kontrak yang jahat atau disusupi.

Wallet sebaiknya menampilkan dengan jelas apakah suatu tindakan membuat allowance tetap, allowance tanpa batas, atau wewenang operator ERC-777.

Mencabut satu jenis izin belum tentu mencabut jenis lainnya jika token mendukung kedua standar.

Risiko Reentrancy ERC-777

Risiko integrasi ERC-777 yang paling penting berasal dari hook-nya.

Hook penerima menjalankan kode kontrak eksternal selama proses transfer token.

Kode eksternal tersebut dapat memanggil kembali protokol pengirim sebelum fungsi awal protokol selesai.

Perilaku ini disebut reentrancy.

Protokol yang rentan dapat menghitung saldo, mengirim token ERC-777, menerima callback, lalu memungkinkan callback mengulangi tindakan menggunakan pencatatan internal yang sudah tidak aktual.

Masalah ini dapat terjadi sekalipun protokol memanggil fungsi bergaya ERC-20 karena token ERC-777 yang kompatibel dengan kedua standar dapat tetap memicu hook terdaftar.

Developer tidak boleh berasumsi bahwa transfer token fungibel bebas callback hanya karena nama fungsinya menyerupai transfer ERC-20 biasa.

Mengurangi Risiko Reentrancy

Protokol sebaiknya memperbarui pencatatan kritisnya sendiri sebelum melakukan pemanggilan token eksternal, jika urutan tersebut sesuai dengan logika yang dimaksud.

Protokol sebaiknya menggunakan reentrancy guard yang sesuai pada entry point sensitif.

Fungsi terkait harus ditinjau secara bersamaan karena mencegah reentrancy pada satu fungsi belum tentu menutup celah eksploit pada fungsi lain.

Protokol sebaiknya memvalidasi kontrak token, bukan menerima aset sembarang dengan perilaku callback yang tidak diketahui.

Pengujian sebaiknya mencakup hook pengirim berbahaya, hook penerima berbahaya, perpindahan token bersarang, callback yang dibatalkan, dan reentrancy lintas fungsi.

Developer juga sebaiknya meninjau jalur mint dan burn karena hook ERC-777 tidak hanya berlaku pada pengiriman biasa.

Audit dapat mengurangi risiko, tetapi tidak dapat menjamin bahwa setiap interaksi callback aman.

Perlindungan Penerima dan Batasannya

Pemeriksaan penerima ERC-777 dimaksudkan untuk mengurangi risiko token terjebak secara permanen dalam kontrak yang tidak dapat memprosesnya.

Kontrak penerima token melalui

send
harus mendaftarkan implementasi penerima ERC-777 atau operasi akan dibatalkan.

Ini memberikan perlindungan yang lebih kuat dibandingkan transfer ERC-20 dasar, yang dapat berhasil meskipun kontrak penerima tidak memiliki logika penanganan token.

Namun, pendaftaran hanya membuktikan bahwa implementasi telah didaftarkan untuk antarmuka tersebut.

Pendaftaran tidak membuktikan bahwa penerima mencatat saldo dengan benar, mengizinkan penarikan, atau telah lolos audit keamanan.

Penerima berbahaya dapat dengan sengaja menerima token lalu menerapkan logika yang merugikan.

Pengguna tetap harus memverifikasi kontrak tujuan dan maksud transaksi.

Manfaat ERC-777

ERC-777 dapat memberi tahu kontrak saat menerima token fungibel.

ERC-777 dapat menggabungkan transfer dan pemrosesan penerima dalam satu transaksi.

ERC-777 memungkinkan pengirim dan penerima menolak perpindahan melalui hook terprogram.

ERC-777 mendukung data terlampir yang dapat digunakan aplikasi untuk memahami pembayaran atau tindakan.

Model operatornya menyediakan kendali terdelegasi yang distandardisasi dan pencabutan izin yang eksplisit.

Pengiriman native ERC-777 mengurangi transfer yang tidak disengaja ke kontrak yang tidak mendaftarkan dukungan penerima token.

Kompatibilitas mundur memungkinkan satu token bekerja dengan infrastruktur ERC-20 sekaligus menawarkan perilaku lebih canggih kepada aplikasi yang memahami ERC-777.

Keterbatasan ERC-777

Hook membuat smart contract lebih sulit menangani perpindahan token dengan aman.

Pencarian ERC-1820 menambahkan dependensi eksternal dan kompleksitas integrasi.

Wewenang operator dapat lebih luas daripada yang diperkirakan pengguna.

Operator default menimbulkan pertimbangan penting terkait kepercayaan dan izin.

Kompatibilitas ganda ERC-20 menimbulkan perilaku berbeda tergantung antarmuka transfer yang digunakan.

Aplikasi dapat menghitung transfer dua kali jika memproses peristiwa ERC-777 dan ERC-20 dengan keliru.

Banyak alat pengembangan dan aplikasi saat ini terutama berfokus pada ERC-20 sehingga manfaat praktis penerapan ERC-777 berkurang.

Penghapusan implementasi ERC-777 yang terpelihara dari library kontrak yang banyak digunakan menambah pekerjaan untuk membuat dan memelihara deployment baru dengan aman.

Mengapa Adopsi ERC-777 Terbatas?

Saat ERC-777 diperkenalkan, ERC-20 telah memiliki dukungan luas di berbagai wallet, aplikasi, alat analitik, dan sistem smart contract.

Menggantikan efek jaringan tersebut membutuhkan manfaat yang cukup besar untuk membenarkan logika callback dan registry baru.

Banyak protokol dibangun berdasarkan perilaku transfer dan allowance ERC-20 yang dapat diprediksi.

Hook ERC-777 memperkenalkan pemanggilan eksternal tak terduga ke dalam operasi yang terkadang dianggap integrator hanya sebagai pembaruan saldo sederhana.

Bagian motivasi ERC-2612 menyebutkan bahwa ERC-777 menambahkan fungsionalitas substansial yang dapat menimbulkan perilaku tak terduga pada kontrak arus utama.

Developer semakin banyak mengatasi masalah kegunaan tertentu melalui ekstensi ERC-20 yang lebih terbatas, alih-alih mengadopsi siklus transfer yang sepenuhnya berbeda.

Karena itu, ERC-777 tetap penting secara teknis, tetapi bukan pilihan standar untuk token fungibel pada sebagian besar proyek Ethereum baru.

Haruskah Developer Membuat Token ERC-777 Baru?

Developer sebaiknya terlebih dahulu menentukan fitur ERC-777 mana yang penting bagi token yang diusulkan.

Jika tujuan utamanya adalah persetujuan bertanda tangan, ekstensi ERC-20 yang lebih terbatas mungkin menyediakan fitur tersebut tanpa memperkenalkan hook transfer universal.

Jika callback penerima diperlukan, developer harus menilai apakah kontrak aplikasi yang dirancang khusus dapat memberikan perilaku yang lebih aman dan eksplisit.

Implementasi ERC-777 baru memerlukan peninjauan cermat terhadap spesifikasi lengkap, pendaftaran ERC-1820, hook, operator, peristiwa, mint, burn, dan kompatibilitas ERC-20.

Menggunakan kembali implementasi lama yang tidak lagi dipelihara tanpa meninjau perubahan compiler dan asumsi keamanan yang diketahui tidak aman.

Sebelum mengelola aset bernilai, kontrak sebaiknya menjalani pengujian unit, fuzz, invarian, dan integrasi secara ekstensif, serta peninjauan keamanan independen.

Developer juga sebaiknya memastikan wallet, sistem kustodi, bridge, dan aplikasi terdesentralisasi yang dituju mendukung perilaku callback token tersebut.

Cara Pengguna Mengevaluasi Token ERC-777

Langkah pertama adalah memverifikasi alamat kontrak token melalui sumber otoritatif.

Langkah kedua adalah memastikan apakah kontrak hanya mendukung ERC-777 atau juga menyediakan fungsi ERC-20.

Langkah ketiga adalah memeriksa operator default dan menentukan wewenang yang dimilikinya.

Langkah keempat adalah meninjau izin mint, burn, pause, freeze, upgrade, dan administrator.

Langkah kelima adalah memastikan apakah kontrak menggunakan proxy yang logikanya dapat berubah setelah pembelian.

Langkah keenam adalah memeriksa audit, verifikasi kode sumber, cakupan pengujian, dan riwayat insiden.

Langkah ketujuh adalah memeriksa otorisasi operator dan mencabut izin yang tidak lagi diperlukan.

Langkah kedelapan adalah memastikan aplikasi penerima secara eksplisit mendukung ERC-777 dan hook-nya.

Langkah kesembilan adalah mencoba transaksi kecil sebelum mengirim jumlah yang signifikan.

Langkah kesepuluh adalah mengingat bahwa kepatuhan terhadap antarmuka token tidak membuktikan nilai finansial, solvabilitas, atau keamanan investasi.

Contoh Pembayaran ERC-777

Misalnya, pengguna ingin membayar kontrak langganan on-chain menggunakan token ERC-777.

Kontrak langganan mendaftarkan implementasi

ERC777TokensRecipient
melalui registry ERC-1820.

Pengguna memanggil

send
dengan alamat kontrak, jumlah pembayaran, dan referensi langganan yang dienkode.

Token memeriksa hook pengirim pengguna dan memanggilnya sebelum mengubah saldo jika hook tersebut terdaftar.

Token mengurangi saldo pengguna dan menambah saldo kontrak langganan.

Selanjutnya, token memanggil hook

tokensReceived
pada kontrak dengan detail pembayaran.

Kontrak langganan memverifikasi alamat token, pembayar, jumlah, dan referensi terlampir sebelum memperpanjang langganan.

Jika hook menolak pembayaran, seluruh transaksi dibatalkan dan saldo token kembali ke keadaan sebelumnya.

Alur ini menunjukkan fitur pembayaran dan notifikasi atomik yang menjadi alasan ERC-777 dibuat.

Kesalahan Umum ERC-777

Salah satu kesalahan umum adalah menganggap ERC-777 sekadar pengganti ERC-20 yang lebih baru.

Kesalahan lainnya adalah memperlakukan transfer token sebagai operasi tanpa callback.

Kesalahan ketiga adalah menerima panggilan ke

tokensReceived
tanpa memverifikasi kontrak token pemanggil.

Kesalahan keempat adalah memberi otorisasi kepada operator tanpa memahami bahwa izin tersebut dapat mencakup seluruh saldo pemegang.

Kesalahan kelima adalah mengabaikan operator default yang ditetapkan saat token dibuat.

Kesalahan keenam adalah memproses peristiwa

Sent
dan
Transfer
sebagai perpindahan ekonomi yang terpisah.

Kesalahan ketujuh adalah mengirim token ke kontrak melalui antarmuka ERC-20 dan berasumsi bahwa perlindungan penerima ERC-777 akan membatalkan transaksi.

Kesalahan kedelapan adalah menerapkan implementasi lama tanpa pengujian modern dan peninjauan dependensi.

Kesalahan kesembilan adalah menganggap status EIP Final berarti dukungan library saat ini atau adopsi ekosistem yang luas.

Kesalahan kesepuluh adalah menganggap kepatuhan standar sebagai bukti bahwa token sah atau aman.

FAQ

Apa arti ERC-777?

ERC-777 adalah standar token fungibel Ethereum berstatus Final yang menetapkan hook, operator, kolom data, pengiriman token, dan burn token.

Apakah ERC-777 fungibel atau nonfungibel?

ERC-777 adalah standar token fungibel yang unit-unit dari token sama dapat dipertukarkan.

Apakah ERC-777 masih berlaku?

Ya, proposal resminya masih berstatus Final, meskipun adopsinya terbatas dan sebuah library kontrak besar telah menghapus implementasi ERC-777.

Apakah ERC-777 sama dengan ERC-20?

Tidak. ERC-777 menambahkan hook, operator, data terlampir, dan pemeriksaan penerima, meskipun satu token dapat mendukung kedua standar.

Apa fitur utama ERC-777?

Fitur yang paling dikenal adalah kemampuannya memberi tahu kontrak pengirim dan penerima yang terdaftar selama perpindahan token.

Apa itu tokensReceived?

tokensReceived
adalah hook penerima yang dipanggil setelah saldo ERC-777 bertambah melalui send atau mint.

Apa itu tokensToSend?

tokensToSend
adalah hook pengirim yang dipanggil sebelum saldo ERC-777 berkurang melalui send atau burn.

Apa itu operator ERC-777?

Operator adalah alamat yang diberi otorisasi untuk mengirim atau melakukan burn token atas nama pemegang.

Bisakah operator ERC-777 memindahkan semua token pengguna?

Wewenang operator biasa bukan allowance numerik, sehingga operator yang diberi otorisasi dapat memiliki kendali luas sampai pemegang mencabutnya.

Apa itu operator default?

Operator default adalah alamat yang diberi otorisasi untuk setiap pemegang saat token dibuat, meskipun setiap pemegang harus dapat mencabutnya secara pribadi.

Mengapa ERC-777 menggunakan ERC-1820?

ERC-1820 memungkinkan token menemukan kontrak yang mengimplementasikan hook pengirim, hook penerima, dan antarmuka token yang didukung.

Bisakah token ERC-777 dikirim ke smart contract?

Ya, tetapi pengiriman native ERC-777 harus dibatalkan jika kontrak penerima belum mendaftarkan hook penerima yang diwajibkan.

Bisakah token ERC-777 terjebak dalam kontrak?

Pemeriksaan penerima mengurangi risiko ini untuk pengiriman native, tetapi transfer yang kompatibel dengan ERC-20 dan logika penerima yang keliru tetap dapat membuat saldo tidak dapat diakses.

Apakah ERC-777 memiliki desimal?

Standar ini menggunakan denominasi tampilan 18 angka desimal, dan fungsi

decimals
opsional yang kompatibel dengan ERC-20 harus mengembalikan 18.

Apa itu granularity ERC-777?

Granularity adalah jumlah internal terkecil yang dapat dicetak, dikirim, atau di-burn.

Mengapa ERC-777 dapat menyebabkan reentrancy?

Hook-nya menjalankan kode kontrak eksternal selama operasi token sehingga implementasi penerima atau pengirim dapat memanggil fungsi lain sebelum pemanggilan awal selesai.

Apakah setiap token ERC-777 tidak aman?

Tidak, tetapi setiap integrasi harus menangani callback, izin operator, pencarian ERC-1820, dan logika kontrak khusus token dengan sengaja.

Mengapa implementasi ERC-777 dihapus dari OpenZeppelin Contracts?

Implementasi tersebut memiliki adopsi terbatas dan perilaku hook yang kompleks sulit didukung dengan aman sebagai komponen serbaguna.

Bisakah token ERC-777 yang sudah ada tetap berfungsi?

Ya, kontrak yang telah diterapkan tetap beroperasi sesuai kodenya, kecuali mekanisme upgrade atau administrasinya sendiri mengubah kontrak tersebut.

Haruskah token baru menggunakan ERC-777?

Keputusan bergantung pada apakah hook dan operator memberikan manfaat penting yang sepadan dengan kompleksitas keamanan, integrasi, dan pemeliharaan tambahan.

Kesimpulan

ERC-777 adalah standar token fungibel Ethereum berstatus Final yang dirancang untuk meningkatkan interaksi token melalui hook, operator, data transaksi, dan pemeriksaan penerima kontrak.

Fungsi

send
dapat mentransfer token sekaligus memberi tahu kontrak penerima yang kompatibel dalam satu transaksi atomik.

Hook

tokensToSend
dan
tokensReceived
memungkinkan penerapan aturan pengirim dan penerima secara terprogram.

Operator menyediakan kendali terdelegasi yang distandardisasi, sedangkan operator default dapat menyediakan fungsi tingkat sistem yang tetap dapat dicabut pemegang.

ERC-1820 menyediakan registry untuk menemukan hook dan antarmuka tersebut.

ERC-777 dapat tetap kompatibel dengan ERC-20, tetapi transfer melalui kedua antarmuka tidak selalu memiliki perilaku penerima yang identik.

Fitur callback yang meningkatkan composability juga dapat memungkinkan reentrancy dan membuat integrasi sulit dianalisis dengan aman.

Developer harus memverifikasi pemanggil, melindungi semua fungsi pengubah state terkait, memeriksa wewenang operator, menguji hook berbahaya, dan memahami seluruh siklus transfer.

Meskipun standar ini masih berstatus Final, adopsinya yang terbatas dan penghapusannya dari library kontrak besar yang masih digunakan menjadikannya pilihan khusus, bukan pilihan default untuk token baru.

Memahami ERC-777 membantu pengguna dan developer kripto mengenali manfaat callback token sekaligus risiko keamanan saat transfer token fungibel dapat menjalankan kode eksternal.
Menarik Kembali / Peluang?
Menarik Kembali / Peluang?Menarik Kembali / Peluang?
Simak arus masuk ETF BTC $2,4 miliar pada likuidasi