Mencabut persetujuan token dari SSP

·7 mnt baca·Oleh SSP Editorial Team
Ilustrasi pencabutan persetujuan token ERC-20 dari wallet SSP: allowance dikembalikan ke nol dan SSP Key ikut menandatangani transaksi.

Mencabut persetujuan token dari SSP

Setiap kali Anda mengonfirmasi swap, deposit, atau listing NFT di sebuah chain EVM, Anda memberi izin pada dApp untuk memindahkan token ERC-20 tertentu atas nama Anda. Izin-izin itu — disebut persetujuan atau allowance — tetap on-chain setelah transaksi diselesaikan. Beberapa bulan kemudian, kontrak yang Anda percayai pada bulan Maret bisa saja masih diizinkan untuk menguras token itu pada bulan Juni. Solusinya jelas: cabut persetujuan yang sudah tidak Anda perlukan. Panduan ini menunjukkan cara melakukannya dari SSP, wallet self-custodial 2-dari-2 di mana setiap transaksi (termasuk pencabutan) ditandatangani bersama oleh SSP Key Anda.

Jika konsepnya baru bagi Anda, baca dulu Persetujuan Token: Izin yang Terus Anda Berikan. Di sana dijelaskan mengapa persetujuan ada dan mengapa allowance tak terbatas adalah permukaan serangan default di DeFi. Artikel ini adalah pendamping pembersihannya.

Ringkasan singkat

Saat Anda menandatangani panggilan approve(spender, amount), kontrak token mencatat bahwa spender (biasanya kontrak router, vault, atau marketplace) diizinkan untuk mentransfer hingga amount token tersebut dari alamat Anda. Banyak dApp meminta 2^256 - 1 — yang praktis tak terbatas — untuk menghemat gas Anda pada interaksi-interaksi berikutnya. Kepraktisan itu sekaligus risikonya: jika kontrak spender kemudian diretas, atau Anda berhenti memakai dApp tapi allowance-nya tetap menggantung, penyerang bisa menguras seluruh saldo kapan pun mereka mau.

Pencabutan membalik pemberian itu. Ia tidak membatalkan transfer yang sudah terjadi dan tidak "menghapus" apa pun — ia hanya mengembalikan allowance ke nol.

Bagaimana pencabutan bekerja secara teknis

Pencabutan hanyalah transaksi lain. Anda memanggil approve(spender, 0) pada kontrak token yang sama, di chain yang sama tempat persetujuan asli diberikan. Satu panggilan fungsi tunggal itu menulis 0 baru ke dalam mapping allowance[owner][spender] di kontrak, menimpa nilai lama.

Beberapa hal teknis yang perlu dipahami:

  • Satu pencabutan per chain per pasangan token-spender. Jika Anda menyetujui sebuah spender USDC di Ethereum dan spender yang sama di Polygon, Anda butuh dua transaksi pencabutan — satu di tiap chain. Allowance tidak dibagi antar-chain.
  • Pencabutan adalah transaksi mandiri. Ia memerlukan gas, sama seperti transfer mana pun. Persiapkan: sediakan aset native chain (ETH di Ethereum, MATIC di Polygon, dst.) untuk menutup biayanya.
  • Bisa lebih murah dari yang Anda khawatirkan. Pencabutan adalah satu operasi tulis sederhana, sering kali lebih murah daripada swap. Di Layer 2 seperti Base biasanya hanya beberapa sen.
  • SSP tetap ikut menandatangani. Karena SSP adalah wallet 2-dari-2, transaksi pencabutan melalui alur yang sama seperti transaksi lain: extension mengusulkan, SSP Key meninjau dan ikut menandatangani. Perlindungan Anda meluas hingga ke proses pembersihan itu sendiri — tidak ada perangkat tunggal yang bisa mencabut secara sepihak, dan tidak ada perangkat tunggal yang bisa ditipu untuk menyetujui sesuatu yang menyamar sebagai pencabutan.

Dua jalur untuk mencabut

Anda punya dua cara yang sama-sama valid untuk mencabut persetujuan dari SSP. Pilih yang sesuai dengan situasi.

Jalur 1: gunakan block explorer yang tepercaya

Ini rute manual dan transparan. Berguna ketika Anda tahu persis token dan spender yang ingin dicabut, atau ketika Anda tidak ingin terhubung dengan alat pihak ketiga.

  1. Buka halaman kontrak token di explorer yang sesuai:
    • Ethereum: etherscan.io
    • Polygon: polygonscan.com
    • Base: basescan.org
    • BNB Smart Chain: bscscan.com
    • Avalanche: snowtrace.io
  2. Pergi ke tab Contract, lalu Write Contract (atau Write as Proxy jika token tersebut adalah kontrak proxy — sebagian besar stablecoin besar memang demikian).
  3. Temukan fungsi approve. Inputnya adalah spender (alamat yang ingin Anda cabut) dan amount (allowance baru).
  4. Atur amount ke 0. Tempelkan alamat spender — salin dari riwayat transaksi Anda sebelumnya, jangan pernah ketik dari ingatan.
  5. Hubungkan wallet Anda. Sebagian besar explorer mendukung WalletConnect, yang merupakan cara yang direkomendasikan untuk menghubungkan SSP. Setujui koneksi di extension.
  6. Klik Write. Explorer akan menyusun transaksi approve(spender, 0) dan menyerahkannya ke SSP. Extension SSP menampilkan detail panggilan; SSP Key ikut menandatangani; pencabutan disiarkan.

Jalur ini bertele-tele tapi tidak menyisakan keraguan tentang apa yang Anda tandatangani.

Jalur 2: gunakan alat pencabutan khusus

Bagi sebagian besar pengguna, ini opsi praktisnya. revoke.cash adalah alat open source yang banyak dipakai untuk pekerjaan ini. Ia memindai alamat Anda di seluruh chain yang didukung, mendaftar setiap allowance aktif, menandai yang berisiko (jumlah tak terbatas, kontrak asing), dan memungkinkan Anda mencabutnya — satu per satu atau dalam batch — melalui wallet yang terhubung.

Alurnya:

  1. Buka revoke.cash langsung di browser. Bookmark domain aslinya dan hanya akses lewat bookmark itu. Kloning phishing alat pencabutan ada justru karena pengguna tiba di sana sudah siap menandatangani transaksi.
  2. Hubungkan dengan WalletConnect, lalu pindai kode QR atau salin URI ke SSP.
  3. Pindahkan pemilih chain ke chain yang ingin Anda audit. revoke.cash akan mengambil persetujuan Anda di chain itu.
  4. Tinjau daftarnya. Setiap baris menampilkan token, spender, jumlah allowance, dan biasanya label untuk dApp tersebut.
  5. Klik Revoke di sebelah apa pun yang sudah tidak Anda pakai. Setiap pencabutan adalah transaksi approve(spender, 0) tersendiri, ditandatangani bersama oleh SSP.

Alur audit yang praktis

Sekali atau dua kali setahun, sisihkan 20 menit dan lewati alur ini:

  1. Hubungkan SSP ke revoke.cash via WalletConnect.
  2. Tinjau persetujuan aktif Anda di setiap chain yang Anda gunakan. Mulailah dari Ethereum — yang secara historis memiliki grafik persetujuan paling padat — lalu lanjutkan ke Polygon, Base, BNB Smart Chain, dan Avalanche.
  3. Ambil yang paling berisiko terlebih dulu. Urutkan atau pindai daftar untuk allowance tak terbatas dan nama dApp yang asing. Sebuah protocol yang Anda gunakan untuk swap sekali pada 2024 dan tidak pernah disentuh lagi adalah kandidat utama. Begitu pula kontrak mana pun yang sama sekali tidak bisa Anda identifikasi.
  4. Cabut. Konfirmasi transaksi di extension SSP Anda; SSP Key meminta Anda ikut menandatangani; pencabutan disiarkan.
  5. Tandatangani di SSP Key. Inilah momen untuk memeriksa ulang tujuannya. SSP Key menampilkan kontrak yang Anda panggil dan fungsinya — konfirmasi keduanya sesuai dengan yang Anda maksud.
  6. Ulangi per chain. Allowance bersifat per chain. Jangan berasumsi mencabut di Ethereum juga membersihkan Polygon.

Anda tidak perlu menyapu bersih semua. Tujuannya adalah mempertahankan allowance pada kontrak yang aktif Anda pakai dan menolkan sisanya.

Hal yang harus diwaspadai

  • Higiene domain. Gunakan hanya domain resmi revoke.cash. Kloning phishing menargetkan alur ini dengan tepat karena pengguna sudah dalam mode menandatangani transaksi. Bookmark; verifikasi bar URL sebelum menyambung.
  • Realita per chain. Mencabut persetujuan USDC di Ethereum tidak menyentuh persetujuan USDC di Polygon, meskipun token terlihat "sama saja" di portofolio Anda. Telusuri tiap chain secara eksplisit.
  • Anggaran gas. Pencabutan butuh gas. Di Ethereum, tumpukan pencabutan bisa terakumulasi; lakukan saat gas sedang tenang. Di Layer 2 biayanya nyaris tidak terasa.
  • Selalu verifikasi spender. Sebelum menandatangani transaksi "pencabutan" apa pun, pastikan alamat spender dalam panggilan tersebut sesuai dengan kontrak yang Anda maksudkan untuk dicabut. Situs jahat bisa menyajikan UI pencabutan palsu yang sebenarnya menerbitkan persetujuan baru kepada penyerang. Membaca nama fungsi (approve) dan jumlah (0) pada prompt SSP Key adalah garis pertahanan terakhir Anda.
  • Permit berbeda. Beberapa token (USDC, varian DAI) mendukung permit — tanda tangan off-chain yang bertindak seperti persetujuan. revoke.cash akan menampilkan pemberian berbasis permit yang dikenalinya semampu mungkin; perlakukan apa pun yang tidak Anda kenali sama seperti Anda memperlakukan allowance on-chain.

Keunggulan 2-dari-2 saat pembersihan

Inilah poin yang sering terlewat: pencabutan di SSP bukan satu klik di satu perangkat. Extension Anda menyusun pencabutannya, tapi tidak bisa menyiarkannya sendirian. SSP Key Anda harus ikut menandatangani, dan langkah penandatanganan bersama itu adalah saat Anda memeriksa apa yang sebenarnya akan dikirim. Jika extension Anda suatu hari diretas dan mencoba mengirim "pencabutan" jahat yang sebenarnya adalah persetujuan baru, SSP Key akan menampilkan fungsi dan jumlah yang sebenarnya pada layarnya. Dua perangkat, dua kesempatan untuk menangkap masalah.

Higiene persetujuan rutin adalah kebiasaan DeFi dengan daya ungkit tertinggi yang justru paling sering dilewatkan pengguna. Setel pengingat di kalender, lakukan auditnya, tidur lebih nyenyak. Dan teruskan membaca serinya — mulailah dari Ethereum di SSP jika Anda ingin meneguhkan detail spesifik per chain, atau kembali ke Persetujuan Token: Izin yang Terus Anda Berikan untuk mengingatkan diri sendiri mengapa hal ini penting.

Bagikan artikel ini

Artikel terkait