Skip to content
Semua panduan opsi dan kontrak berjangka
Keamanan dompet kripto12 menit

Persetujuan dan allowance token: cara memeriksa dan mencabut ERC-20

Pahami izin dari approval ERC-20, cara kerja allowance tak terbatas dan tanda tangan permit, serta perubahan yang terjadi—dan tidak terjadi—saat izin dicabut.

Dalam panduan iniKoneksi dompet dan persetujuan token adalah izin yang berbeda

Ringkasan singkat

Pemanggilan ERC-20 `approve` biasanya tidak langsung mengirim token. Pemanggilan ini mencatat jumlah yang dapat diminta spender tertentu nanti melalui `transferFrom`. Memutus koneksi dompet dari situs tidak otomatis menghapus allowance on-chain, dan mengubahnya menjadi nol tidak membatalkan transfer yang sudah selesai.

Koneksi dompet dan persetujuan token adalah izin yang berbeda

Koneksi situs biasanya membuat aplikasi dapat melihat alamat publik dan meminta tanda tangan. Itu sendiri tidak memberi hak untuk memindahkan semua token ERC-20. Allowance disimpan terpisah di kontrak token. MetaMask juga membedakan memutus koneksi dapp dan mencabut persetujuan token.

Allowance ERC-20 terikat pada kontrak token, jaringan, alamat pemilik, dan alamat spender. Persetujuan di Ethereum bukan persetujuan untuk token bernama sama di Polygon atau token lain. Jika hanya mengingat “saya menyetujui situs ini”, Anda bisa lupa token dan jaringan mana yang masih memiliki izin aktif.

Panduan ini membahas approve, allowance, dan transferFrom ERC-20 di Ethereum dan jaringan yang kompatibel. Transfer ETH native, setApprovalForAll NFT, standar lain, dan koneksi masuk dompet memakai model izin berbeda. Untuk pencadangan dan pemulihan kunci, lihat panduan frasa pemulihan dan pemulihan dompet.

`approve` mencatat batas penggunaan, bukan mengirim token

Pemilik dapat memanggil approve(spender, amount) pada kontrak token agar spender tertentu boleh menggunakan token sampai batas itu. transferFrom memungkinkan spender memindahkan token atas nama pemilik. Jadi, approve biasanya tidak mengubah saldo saat itu, tetapi pemanggilan kontrak berikutnya dapat memakai allowance. Alur ini ditentukan oleh standar ERC-20.

Contoh: dompet memiliki 300 token dan memberi router allowance 80. Pada ERC-20 biasa, batas efektif adalah nilai yang lebih kecil antara saldo dan allowance tersisa. Izin tidak harus terbatas pada satu transaksi; kontrak dapat memanggil transferFrom beberapa kali. Jika kontrak yang disetujui atau jalur pemanggilannya disalahgunakan, token dapat berpindah di luar yang Anda perkirakan. Perilaku token yang tidak standar juga perlu diperiksa.

Persetujuan biasanya berupa transaksi on-chain ke kontrak token dan dapat dikenai biaya jaringan. Sebagian aplikasi memisahkan persetujuan dan swap; sebagian lain menggabungkan tanda tangan izin dengan transaksi berikutnya. Periksa isi yang diminta dompet untuk ditandatangani serta jaringan yang dipilih, bukan hanya tombol “Approve”.

Allowance tak terbatas bukan penarikan langsung

Label “Unlimited” sering berarti allowance mendekati nilai integer maksimum token. Ini tidak menciptakan token tanpa batas atau langsung memindahkan saldo saat disetujui. Namun spender dapat memakai izin tersisa nanti terhadap token sejenis yang masuk ke dompet yang sama di jaringan yang sama. Sebagian implementasi tidak mengurangi allowance bernilai maksimum setelah pemakaian; periksa perilaku tokennya.

Aplikasi dapat meminta batas besar agar Anda tidak perlu menyetujui berulang kali, tetapi kemudahan dan risikonya perlu dinilai bersama. Kerentanan atau penyalahgunaan kontrol kontrak spender dapat membuat persetujuan lama dipakai kemudian. Panduan pencabutan Ethereum.org menjelaskan mengapa allowance besar tetap relevan setelah aset dikembalikan ke dompet.

Batas yang lebih kecil tidak menghapus semua risiko. Menyetujui token palsu atau spender yang salah dapat merugikan meski jumlahnya kecil; persetujuan berulang juga menambah biaya dan peluang salah klik. Pertimbangkan jumlah yang direncanakan, frekuensi penggunaan, kepercayaan pada kontrak, dan kemampuan memeriksa izin lagi.

Ilustrasi tanpa teks berupa dompet, token emas, dan katup yang menggambarkan batas izin token yang berbeda.
Allowance mengizinkan kontrak tertentu memakai token nanti; periksa alamat dan jumlah sebelum menandatangani.

Periksa jaringan, token, spender, dan jumlah sebelum menandatangani

Sebelum menandatangani, periksa empat hal: apakah jaringan yang dipilih sesuai petunjuk aplikasi; apakah alamat kontrak token benar, bukan hanya simbolnya; apakah alamat spender cocok dengan dokumentasi resmi atau data kontrak yang dapat diverifikasi; dan apakah batasnya sesuai tindakan yang direncanakan atau meninggalkan izin luas.

Jangan menghubungkan dompet melalui tautan pesan langsung, kode QR, obrolan dukungan, atau iklan yang belum diverifikasi. Situs phishing dapat meniru aplikasi asli. Mulailah dari alamat resmi yang disimpan atau dokumentasi proyek. Nama kontrak yang terasa akrab tidak membuktikan alamatnya benar; tanda verifikasi di penjelajah blok juga bukan jaminan aman.

Hardware signer dapat membantu memisahkan kunci privat dari peramban biasa, tetapi tidak menentukan apakah spender atau jumlah yang Anda setujui aman. Jika perangkat tidak menampilkan permintaan dengan jelas, berhenti dan periksa penjelasan resmi penyedia dompet. Rincian yang sedikit berarti lebih sedikit hal yang dapat Anda verifikasi.

`permit` mengubah jalur persetujuan, tetapi tetap membuat izin

Sebagian ERC-20 mendukung ERC-2612 permit. Alih-alih mengirim transaksi approve biasa, pemilik menandatangani typed data; pihak lain dapat mengirim tanda tangan itu untuk menetapkan allowance. Pesan standar memuat pemilik, spender, nilai, nonce, dan deadline, dengan domain yang mengikat tanda tangan ke jaringan dan kontrak.

deadline ERC-2612 adalah batas akhir untuk mengirim permit yang ditandatangani. Ini bukan waktu kedaluwarsa otomatis bagi allowance yang berhasil dibuat. Izin dapat tetap aktif sampai digunakan, diubah, atau dicabut. Beberapa token memakai desain permit berbeda atau aturan masa berlaku tambahan; jangan anggap semua permintaan bernama “permit” mengikuti ERC-2612.

Tanda tangan dapat memungkinkan akun lain membayar biaya jaringan, tetapi bukan berarti tanda tangan itu hanya konfirmasi masuk yang aman. Jika dompet tidak menampilkan token, spender, nilai, dan batas waktu dengan jelas—atau berbeda dari penjelasan aplikasi—tolak dan periksa dokumentasi resmi. Tanda tangan yang belum dikirim masih dapat dikirim pihak lain sebelum deadline.

Memutus koneksi situs tidak mencabut allowance on-chain

Keluar atau memutus dompet mengubah sesi peramban atau izin koneksi. Allowance ERC-20 yang sudah dicatat di kontrak token dapat tetap ada. Sebaliknya, mencabut allowance tidak menghapus alamat publik yang sudah diketahui situs atau riwayat on-chain. Panduan pemutusan MetaMask menjelaskan perbedaannya.

Pencabutan biasanya memerlukan transaksi on-chain untuk mengatur allowance token dan spender tersebut menjadi nol. Transaksi ini dikenai biaya jaringan, dan izin lama dapat tetap aktif sebelum dikonfirmasi. Setelahnya, segarkan daftar persetujuan atau baca kontrak lagi dan pastikan nilainya nol untuk dompet, jaringan, token, serta spender yang sama. MetaMask dan Ethereum.org menjelaskan pemeriksaan khusus jaringan; verifikasi domain resmi dan jaringan yang dipilih.

Setiap jaringan menyimpan status sendiri. Mengatur allowance Ethereum ke nol tidak mengubah izin token yang sama di jaringan lain. Periksa tiap akun, kontrak token, spender, dan jaringan yang relevan, lalu pastikan hasilnya setelah transaksi dikonfirmasi. Alat pencabut izin tidak memerlukan frasa pemulihan atau kunci privat.

Pencabutan mencegah penggunaan berikutnya, bukan membalik transfer yang selesai

Setelah allowance nol dikonfirmasi, izin itu tidak dapat mendukung transferFrom baru. Namun, pencabutan tidak membalik transfer yang telah selesai, mengambil token dari penerima, atau menghapus izin kontrak lain. Jika spender mencurigakan sudah memindahkan token, pencabutan saja tidak menjamin pemulihan.

Jika kunci privat dompet bocor, penyerang mungkin tetap menandatangani transaksi lewat cara lain. Persetujuan untuk spender atau token lain, izin operator NFT, tanda tangan permit, dan izin khusus kontrak juga dapat tetap ada. Tafsirkan hasil hanya dalam cakupan dompet dan jaringan yang Anda periksa.

Setelah pencabutan, swap, deposit, atau penarikan berikutnya mungkin memerlukan persetujuan baru. Sebelum melakukannya, periksa apakah transaksi tertunda atau posisi aktif memakai izin tersebut dan baca bantuan resmi protokol bila perlu. Pahami apa yang berubah pada langkah berikutnya.

Mengubah allowance dapat menimbulkan kondisi balapan ERC-20

Standar ERC-20 menyarankan antarmuka mengatur allowance nonnol menjadi nol sebelum menggantinya dengan nilai nonnol lain. Jika transaksi spender masuk di antara persetujuan lama dan baru, jumlah yang dapat dipakai mungkin melebihi perkiraan. Misalnya, saat mengubah 100 menjadi 25, spender dapat memakai 100 lama sebelum 25 baru tercatat, lalu memakai 25 baru juga.

Mengonfirmasi nilai nol terlebih dahulu mengurangi kemungkinan nilai lama dan baru berlaku bersamaan, tetapi tidak membalik penggunaan allowance lama sebelum transaksi nol dikonfirmasi. Kedua langkah mungkin dikenai biaya, dan perilaku token berbeda-beda. Ikuti cara pembaruan aman yang dijelaskan dompet atau token dan tunggu konfirmasi.

Jika tidak tahu allowance saat ini, periksa kontrak token pada jaringan yang dipilih sebelum menggantinya. Jika dompet menunjukkan nilai kosong atau tak terduga, pastikan Anda tidak sedang melihat jaringan atau alamat lain. Alamat pemilik dan kontrak token harus sama-sama cocok.

Gunakan rutinitas singkat untuk memeriksa izin dompet dan token

  1. Pastikan domain resmi proyek dan jaringan yang dipilih.
  2. Periksa alamat kontrak token dan spender; bandingkan batasnya dengan jumlah yang dibutuhkan.
  3. Baca transaksi atau typed data yang benar-benar ditampilkan dompet. Jangan tanda tangani permintaan yang tidak Anda pahami.
  4. Periksa spender yang tidak lagi digunakan atau dipercaya pada jaringan terkait; bila perlu, nolkan allowance dan pastikan hasilnya.
  5. Saat membandingkan dompet, periksa dukungan jaringan, kejelasan tampilan persetujuan, serta panduan pembaruan dan pemulihan.

Hardware wallet adalah salah satu pilihan untuk menyimpan kunci dan meninjau tanda tangan, bukan jaminan keamanan kontrak atau penghalang agar Anda tidak menyetujui batas yang luas. Periksa sendiri spender, token, jaringan, dan jumlahnya. Memahami bahwa allowance dapat bertahan terpisah dari koneksi situs membantu membandingkan fitur keamanan dompet dan batas nyatanya.

Pertanyaan umum

Q1Apakah memutus dompet menghapus persetujuan token yang sudah ada?

Tidak. Koneksi situs adalah sesi; allowance ERC-20 adalah status on-chain di kontrak token. Periksa spender pada jaringan dan token yang tepat, lalu cabut secara terpisah bila perlu.

Q2Jika allowance dinolkan, bisakah token yang sudah dipindahkan dikembalikan?

Tidak. Setelah dikonfirmasi, nilai nol mencegah penggunaan berikutnya tetapi tidak membalik transfer selesai. Periksa persetujuan lain dan kemungkinan kebocoran kunci secara terpisah.

Q3Apakah semua token kripto dan NFT memakai allowance ERC-20?

Tidak. Panduan ini membahas approve dan transferFrom ERC-20. Izin operator NFT, aset native, standar lain, dan izin khusus jaringan mengikuti aturan berbeda.

Sumber dan bacaan lanjutan

Laporkan masalah

Kami akan menyiapkan email berisi tautan artikel ini. Mark menerima laporan setelah Anda mengirimkannya

Cek cepat

Sudah membaca panduannya? Uji diri dengan 3 pertanyaan

Pertanyaan 1 / 3

Pertanyaan 01

Apa yang terutama dilakukan `approve(spender, amount)` ERC-20?

Pilih jawaban untuk melihat penjelasannya

Glosarium opsi