Beli Kripto
Pasar
Spot
Futures OILBTC
Tabungan
Pusat Acara
Hub Hadiah
Lainnya
Fest. 0-Biaya
Fungsi Permit (EIP-2612): Apa Itu Fungsi Permit (EIP-2612)?Fungsi Permit, yang ditetapkan dalam EIP-2612, adalah ekstensi token ERC-20 yang memungkinkan pemilik token menyetujui spender dengan menandatangani pesan off-chain, aFungsi Permit (EIP-2612): Apa Itu Fungsi Permit (EIP-2612)?Fungsi Permit, yang ditetapkan dalam EIP-2612, adalah ekstensi token ERC-20 yang memungkinkan pemilik token menyetujui spender dengan menandatangani pesan off-chain, a

Fungsi Permit (EIP-2612)

2026/10/13 16:44
#Advanced
Humanity
H$0.05592-0.69%
PX
PX$0.0129+0.78%
TokenFi
TOKEN$0.001999-0.34%
Smart Blockchain
SMART$0.004474+3.39%
Data Network
DATA$0.2035-1.78%

Apa Itu Fungsi Permit (EIP-2612)?

Fungsi Permit, yang ditetapkan dalam EIP-2612, adalah ekstensi token ERC-20 yang memungkinkan pemilik token menyetujui spender dengan menandatangani pesan off-chain, alih-alih mengirim transaksi persetujuan on-chain secara terpisah.

Dalam kripto, fitur ini penting karena membuat persetujuan token lebih praktis, lebih murah, dan lebih mudah digabungkan dengan tindakan smart contract lainnya.

Spesifikasi resmi EIP-2612 menjelaskan bahwa standar ini memperluas ERC-20 dengan fungsi baru bernama

permit
, yang mengubah mapping allowance melalui pesan bertanda tangan, bukan melalui
msg.sender
.

Sederhananya, EIP-2612 memungkinkan pengguna menyatakan, “Saya menyetujui smart contract ini untuk menggunakan token saya sejumlah ini,” dengan menandatangani pesan di wallet.

Akun atau kontrak lain kemudian dapat mengirimkan persetujuan bertanda tangan tersebut ke blockchain.

Artinya, pemilik token tidak perlu mengirim sendiri transaksi persetujuan.

Pemilik token juga mungkin tidak perlu memiliki token gas native jaringan hanya untuk menyetujui penggunaan token ERC-20.

Fungsi Permit tidak mentransfer token dengan sendirinya.

Fungsi ini hanya menetapkan allowance, yang nantinya dapat digunakan oleh

transferFrom
atau alur kontrak lain yang menggunakan allowance yang disetujui tersebut.

Perbedaan ini sangat penting karena menyetujui spender tidak sama dengan mengirim token kepada spender tersebut.

Permit paling tepat dipahami sebagai otorisasi bertanda tangan yang memperbarui status allowance ERC-20 secara on-chain setelah tanda tangan dikirimkan.

Poin Penting tentang Fungsi Permit

    • EIP-2612 menambahkan
      permit
      ,
      nonces
      , dan
      DOMAIN_SEPARATOR
      ke token ERC-20.

    • Fungsi Permit memungkinkan pengguna menyetujui penggunaan token ERC-20 melalui tanda tangan off-chain.

    • Pesan bertanda tangan mengikuti aturan data terstruktur bertipe EIP-712.

    • Permit mengubah allowance, tetapi tidak mentransfer token dengan sendirinya.

    • Nonce mencegah tanda tangan permit yang sama digunakan kembali.

    • Batas waktu membatasi durasi validitas permit bertanda tangan.

    • Permit meningkatkan pengalaman pengguna, tetapi tidak menghilangkan risiko persetujuan maupun risiko phishing tanda tangan.

Mengapa EIP-2612 Dibuat

Token ERC-20 menggunakan model persetujuan yang memungkinkan satu alamat memberi wewenang kepada alamat lain untuk menggunakan token atas namanya.

Standar ERC-20 asli menetapkan fungsi seperti

approve
,
allowance
, dan
transferFrom
.

Model persetujuan ini memungkinkan token digunakan di berbagai wallet, smart contract, sistem pembayaran, antarmuka trading, protokol pinjaman, kontrak staking, dan aplikasi terdesentralisasi lainnya.

Namun, alur persetujuan ERC-20 biasa sering kali memerlukan dua transaksi on-chain.

Transaksi pertama adalah transaksi

approve
.

Transaksi kedua adalah tindakan smart contract yang menggunakan token yang telah disetujui.

Hal ini menyulitkan pengguna karena mereka harus membayar gas dua kali, menunggu dua konfirmasi, dan memahami dua permintaan wallet yang terpisah.

Hal ini juga menjadi kendala bagi pengguna yang memiliki token ERC-20, tetapi tidak memiliki token gas native yang diperlukan untuk mengirim transaksi persetujuan.

EIP-2612 mengatasi masalah khusus ini dengan memungkinkan persetujuan melalui pesan bertanda tangan.

Pemilik token menandatangani permit secara off-chain, lalu pihak lain dapat mengirimkannya secara on-chain.

Dengan demikian, alur smart contract dapat menggabungkan persetujuan dan tindakan secara lebih efisien.

Contohnya, pengguna dapat menandatangani permit, lalu meminta kontrak menggunakan permit tersebut dan memindahkan token dalam satu alur transaksi.

Ini tidak membuat transaksi gratis di tingkat jaringan.

Seseorang tetap harus membayar gas untuk mengirim permit secara on-chain.

Manfaatnya adalah pihak yang membayar gas tidak harus merupakan pemilik token.

Cara Kerja Fungsi Permit

Fungsi inti EIP-2612 memiliki format berikut:

permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
.

owner
adalah pemegang token yang menandatangani persetujuan.

spender
adalah alamat yang akan menerima allowance.

value
adalah jumlah token yang disetujui untuk digunakan.

deadline
adalah waktu terakhir permit dapat digunakan.

Nilai

v
,
r
, dan
s
merupakan bagian dari tanda tangan kriptografis.

Saat permit dikirimkan, kontrak token memeriksa apakah tanda tangannya valid.

Kontrak juga memeriksa apakah batas waktunya telah lewat.

Kontrak memeriksa apakah nonce yang digunakan dalam pesan bertanda tangan cocok dengan nonce terkini milik pemilik token.

Jika semua pemeriksaan yang diwajibkan berhasil, kontrak menetapkan

allowance[owner][spender]
ke nilai yang disetujui.

Kontrak kemudian menaikkan nonce pemilik agar tanda tangan yang sama tidak dapat digunakan kembali.

Kontrak juga mengeluarkan event

Approval
agar perilakunya tetap selaras dengan ketentuan persetujuan ERC-20.

Proses ini mengubah tanda tangan wallet menjadi pembaruan allowance on-chain.

Tiga Fungsi Utama dalam EIP-2612

EIP-2612 mewajibkan token yang kompatibel menambahkan tiga fungsi di atas ERC-20.

Fungsi pertama adalah

permit
.

Fungsi

permit
memverifikasi persetujuan bertanda tangan dan memperbarui allowance.

Fungsi kedua adalah

nonces
.

Fungsi

nonces
mengembalikan nonce terkini untuk alamat pemilik.

Fungsi ketiga adalah

DOMAIN_SEPARATOR
.

Fungsi

DOMAIN_SEPARATOR
mengembalikan pemisah domain EIP-712 yang digunakan untuk mengaitkan tanda tangan dengan kontrak token dan domain penandatanganan tertentu.

Ketiga fungsi ini bekerja bersama.

Tanda tangan permit menentukan persetujuan.

Nonce mencegah replay.

Pemisah domain membantu mengikat tanda tangan ke konteks kontrak dan jaringan yang benar.

Tanpa komponen pendukung ini, tanda tangan permit akan jauh lebih mudah disalahgunakan atau diputar ulang dalam konteks yang keliru.

Apa Itu Allowance?

Allowance adalah jumlah token ERC-20 yang telah disetujui pemilik untuk digunakan oleh spender.

Contohnya, jika Alice menyetujui sebuah smart contract untuk menggunakan 100 token, allowance dari Alice kepada smart contract tersebut menjadi 100 token.

Spender kemudian dapat memanggil

transferFrom
untuk memindahkan token hingga jumlah yang disetujui, bergantung pada kontrak token dan alur aplikasi.

Fungsi Permit tidak menghapus sistem allowance.

Fungsi ini mengubah cara allowance dibuat.

Alih-alih mengharuskan pemilik token memanggil

approve
secara langsung, EIP-2612 memungkinkan pemilik menandatangani pesan yang mengotorisasi pembaruan allowance.

Hal ini meningkatkan kemudahan penggunaan sekaligus mempertahankan kompatibilitas dengan model allowance ERC-20 yang sudah dikenal.

Pengguna tetap harus berhati-hati dengan allowance karena spender yang disetujui mungkin dapat memindahkan token hingga jumlah yang diizinkan.

Persetujuan permit tanpa batas dapat memudahkan penggunaan, tetapi juga dapat menimbulkan kerugian besar jika kontrak spender bersifat berbahaya, diretas, atau disalahpahami.

Fungsi Permit vs Fungsi Approve

Fungsi

approve
tradisional dipanggil langsung oleh pemilik token melalui transaksi on-chain.

Fungsi Permit diotorisasi oleh pemilik token melalui tanda tangan off-chain dan kemudian dikirimkan secara on-chain oleh pihak lain.

Dengan

approve
, pemilik token harus membayar gas untuk transaksi persetujuan.

Dengan

permit
, pemilik token menandatangani pesan, lalu relayer, aplikasi, atau spender dapat membayar gas untuk mengirimkannya.

Dengan

approve
, tindakan persetujuan langsung dikaitkan dengan
msg.sender
.

Dengan

permit
, tindakan persetujuan dikaitkan dengan tanda tangan pemilik yang telah diverifikasi.

Hasilnya dapat berupa pembaruan allowance yang sama, tetapi pengalaman pengguna berbeda.

Perbedaan inilah yang membuat EIP-2612 sering disebut memungkinkan persetujuan tanpa gas.

Lebih tepatnya, standar ini memungkinkan persetujuan tanpa mengharuskan pemilik token mengirim transaksi persetujuan.

Blockchain tetap memerlukan transaksi dan gas untuk memperbarui status.

Mengapa EIP-712 Penting bagi Permit

EIP-2612 menggunakan data terstruktur bertipe berdasarkan EIP-712.

EIP-712 adalah standar untuk melakukan hashing dan menandatangani data terstruktur, bukan string byte yang sulit dipahami.

Hal ini penting karena pengguna wallet perlu memahami apa yang mereka tandatangani.

Permintaan tanda tangan heksadesimal mentah dapat membingungkan dan berbahaya.

Tanda tangan bertipe dapat menampilkan kolom seperti owner, spender, value, nonce, dan deadline dengan lebih jelas.

EIP-712 juga menggunakan pemisah domain.

Pemisah domain membantu membedakan satu konteks penandatanganan dari konteks lainnya.

Untuk EIP-2612, pemisah ini biasanya mencakup informasi seperti nama token, versi, ID chain, dan alamat kontrak verifikasi.

Desain ini membantu mencegah tanda tangan yang ditujukan untuk satu token atau chain agar tidak valid dalam konteks lain.

EIP-712 sendiri menyatakan bahwa standar ini tidak menyediakan perlindungan replay.

EIP-2612 menambahkan perlindungan replay melalui nonce per pemilik.

Nonce dan Perlindungan Replay

Nonce adalah angka yang hanya digunakan satu kali.

Dalam EIP-2612, setiap alamat pemilik memiliki nonce yang dilacak oleh kontrak token.

Saat pengguna menandatangani permit, data yang ditandatangani mencakup nonce terkini milik pemilik.

Setelah permit berhasil digunakan, kontrak token menaikkan nonce tersebut.

Jika seseorang mencoba mengirim permit yang sama lagi, nonce-nya tidak akan cocok.

Akibatnya, tanda tangan yang digunakan ulang akan gagal.

Perlindungan nonce sangat penting karena tanda tangan dapat disalin.

Tanpa perlindungan nonce, spender atau penyerang mungkin dapat menggunakan permit bertanda tangan yang sama berulang kali.

Implementasi permit yang baik harus memperlakukan nonce sebagai bagian dari pesan bertanda tangan dan hanya memperbaruinya jika permit berhasil.

Bagi pengguna, makna praktisnya sederhana.

Tanda tangan permit yang valid seharusnya hanya dapat digunakan sekali, bukan selamanya.

Batas Waktu dan Kedaluwarsa Tanda Tangan

Parameter

deadline
membatasi berapa lama tanda tangan permit dapat digunakan.

Jika timestamp blok saat ini melewati batas waktu, permit seharusnya gagal.

Hal ini melindungi pengguna dari tanda tangan lama yang dikirimkan jauh setelah tujuan penggunaannya.

Batas waktu yang singkat dapat mengurangi risiko karena membatasi jangka waktu pengiriman.

Batas waktu yang panjang dapat meningkatkan kemudahan karena tanda tangan tetap dapat digunakan lebih lama.

Batas waktu tanpa batas atau yang sangat jauh dapat berisiko karena persetujuan bertanda tangan mungkin tetap valid dalam waktu lama, kecuali telah digunakan, dibatalkan, atau diganti melalui mekanisme nonce.

Pengguna perlu memperhatikan batas waktu saat wallet menampilkan data permit bertipe.

Developer sebaiknya menghindari penggunaan batas waktu yang terlalu luas, kecuali ada alasan yang jelas.

Aplikasi perlu menjelaskan arti batas waktu dengan cara yang mudah dipahami pengguna.

Pemisah Domain dan Konteks Chain

Pemisah domain merupakan bagian penting dari penandatanganan EIP-712.

Untuk EIP-2612, pemisah ini membantu mengikat permit ke kontrak token dan domain tertentu.

Domain yang umum mencakup nama token, versi token, ID chain, dan alamat kontrak verifikasi.

Hal ini mengurangi risiko permit yang ditandatangani untuk satu kontrak diputar ulang terhadap kontrak lain.

Hal ini juga mengurangi risiko permit yang ditandatangani di satu chain digunakan kembali di chain lain.

Namun, keamanan pemisah domain bergantung pada implementasi yang benar.

Jika kontrak token menggunakan pemisah domain yang tidak lengkap, risiko replay dapat meningkat.

Jika ID chain berubah atau kontrak diterapkan di beberapa jaringan, developer harus mempertimbangkan dengan cermat cara memisahkan tanda tangan.

Bagi pengguna, pemisah domain biasanya tersembunyi di balik antarmuka wallet.

Bagi developer, pemisah domain merupakan salah satu detail terpenting dalam implementasi permit yang aman.

Penjelasan tentang Persetujuan Tanpa Gas

Istilah “persetujuan tanpa gas” dapat membingungkan.

EIP-2612 tidak membuat transaksi Ethereum atau EVM menjadi gratis.

Standar ini memungkinkan pemilik token menyetujui penggunaan token dengan menandatangani pesan, bukan mengirim transaksi.

Relayer, aplikasi, smart contract, atau spender kemudian dapat mengirim permit bertanda tangan secara on-chain dan membayar gas.

Hal ini dapat membantu pengguna yang memiliki token ERC-20, tetapi tidak memiliki cukup token gas native untuk menyetujuinya.

Hal ini juga dapat membantu aplikasi menghadirkan pengalaman satu langkah yang lebih praktis.

Contohnya, pengguna dapat menandatangani permit lalu menyelesaikan deposit, pembayaran, atau tindakan token tanpa harus mengirim persetujuan terpisah secara manual terlebih dahulu.

Pengalaman pengguna terasa lebih sederhana, tetapi blockchain tetap mencatat perubahan status melalui transaksi on-chain.

Developer perlu menjelaskannya dengan baik agar pengguna tidak mengira pesan bertanda tangan tidak memiliki konsekuensi.

Tanda tangan permit dapat menimbulkan konsekuensi nyata di blockchain setelah seseorang mengirimkannya.

Kasus Penggunaan Umum EIP-2612 dalam Kripto

EIP-2612 sering digunakan dalam keuangan terdesentralisasi dan aplikasi berbasis token.

Protokol pinjaman dapat menggunakan permit agar pengguna menyetujui agunan dan melakukan deposit dalam satu alur.

Kontrak staking dapat menggunakan permit agar pengguna menyetujui token staking tanpa transaksi persetujuan terpisah.

Aplikasi pembayaran dapat menggunakan permit agar pembayar mengotorisasi pemindahan token melalui proses checkout yang lebih praktis.

Wallet dapat menggunakan permit untuk mengurangi langkah transaksi dalam interaksi ERC-20 yang umum.

Layanan relayer dapat menggunakan permit untuk membayar gas atas nama pengguna dan memulihkan biaya melalui cara lain.

Smart contract dapat menggabungkan permit dengan

transferFrom
agar persetujuan dan pemindahan token terjadi dalam satu alur transaksi.

Pola ini dapat mengurangi kegagalan alur pengguna karena persetujuan tidak perlu ditambang secara terpisah sebelum tindakan utama.

Pola ini juga dapat mengurangi kebingungan karena aplikasi dapat memandu pengguna melalui satu proses terpadu.

Manfaat utamanya bukan hanya menghemat gas.

Manfaat utamanya adalah mengurangi hambatan dalam otorisasi token.

Fungsi Permit dan Account Abstraction

Fungsi Permit terkadang dibahas bersama account abstraction karena keduanya meningkatkan pengalaman pengguna wallet.

Permit memungkinkan pemilik token ERC-20 mengotorisasi perubahan allowance melalui tanda tangan.

Account abstraction bertujuan membuat akun kripto lebih mudah diprogram dan lebih fleksibel.

Keduanya merupakan alat yang berbeda, tetapi memiliki tujuan serupa.

Keduanya berupaya mengurangi hambatan dalam interaksi blockchain.

Permit berfokus pada persetujuan token.

Account abstraction berfokus pada cara akun mengotorisasi dan membayar tindakan secara lebih luas.

Aplikasi kripto dapat menggunakan kedua konsep tersebut dalam desain produk yang sama.

Contohnya, sistem wallet atau smart account dapat mendukung transaksi bersponsor sekaligus menggunakan persetujuan token yang kompatibel dengan permit.

Pengguna tidak perlu memahami setiap lapisan teknis, tetapi developer harus menerapkan tiap lapisan dengan benar.

Risiko Keamanan Fungsi Permit

Risiko terbesar bagi pengguna adalah phishing tanda tangan.

Situs berbahaya dapat meminta pengguna menandatangani permit yang menyetujui spender berbahaya.

Karena tanda tangan permit bukan transfer token biasa, sebagian pengguna mungkin mengira tanda tangan ini tidak berbahaya.

Anggapan tersebut berbahaya.

Permit dapat memberi wewenang kepada spender untuk memindahkan token di kemudian hari.

Pengguna harus memeriksa alamat spender, jumlah token, nama token, dan batas waktu sebelum menandatangani.

Pengguna harus menolak tanda tangan yang tidak jelas, tidak terduga, atau diminta oleh situs yang tidak dikenal.

Risiko lainnya adalah persetujuan tanpa batas.

Jika pengguna menandatangani permit dengan nilai yang sangat besar, spender dapat memperoleh wewenang luas untuk menggunakan allowance token tersebut.

Risiko ketiga adalah implementasi yang buruk.

Jika kontrak token menangani nonce, pemisahan domain, pemulihan tanda tangan, atau batas waktu secara keliru, tanda tangan dapat diputar ulang atau diterima padahal seharusnya gagal.

Risiko keempat adalah kebingungan antarmuka pengguna.

Jika wallet tidak menampilkan data bertipe dengan jelas, pengguna dapat menyetujui sesuatu yang tidak mereka pahami.

Permit meningkatkan kemudahan penggunaan, tetapi juga membuat edukasi tentang tanda tangan semakin penting.

Permit Tidak Menghilangkan Risiko Persetujuan

EIP-2612 mengubah cara persetujuan diotorisasi, tetapi tidak mengubah risiko dasar saat menyetujui spender.

Jika spender berbahaya, diretas, atau diberi allowance terlalu besar, pengguna tetap dapat kehilangan token.

Persetujuan permit dapat sama kuatnya dengan transaksi

approve
biasa.

Perbedaannya adalah persetujuan dimulai sebagai tanda tangan, bukan transaksi dari pemilik token.

Artinya, pengguna harus memperlakukan tanda tangan permit dengan kehati-hatian yang sama seperti transaksi persetujuan.

Pengguna sebaiknya menghindari penandatanganan permit tanpa batas, kecuali mereka sepenuhnya memercayai spender dan memahami risikonya.

Pengguna sebaiknya mencabut allowance yang tidak lagi diperlukan.

Pengguna sebaiknya menggunakan wallet terpisah untuk interaksi dApp berisiko tinggi dan untuk menyimpan aset jangka panjang.

Pengguna sebaiknya memverifikasi alamat kontrak melalui sumber tepercaya sebelum menyetujui akses ke token bernilai tinggi.

Permit dan Front-Running

Siapa pun yang memiliki pesan bertanda tangan dapat mengirimkan tanda tangan permit.

Hal ini menimbulkan pertimbangan khusus terkait front-running.

Jika pengguna menandatangani permit dan mengirimkannya ke aplikasi, pihak lain yang melihat tanda tangan tersebut mungkin dapat mengirimkan permit lebih dahulu.

Dalam banyak kasus, hal ini hanya menggunakan permit dan menetapkan allowance yang sama dengan tujuan pengguna.

Namun, jika aplikasi mengharapkan permit dijalankan bersamaan dengan tindakan lain, permit yang dikirim lebih dahulu oleh pihak lain dapat menyebabkan transaksi gabungan berikutnya gagal karena nonce sudah berubah.

Developer sebaiknya merancang alur yang dapat menangani situasi ini dengan baik.

Smart contract sering kali dapat memeriksa apakah allowance yang diharapkan sudah tersedia, lalu melanjutkan proses alih-alih gagal tanpa perlu.

Antarmuka pengguna juga perlu menjelaskan kegagalan alur permit dengan jelas.

Bagi pengguna, hal utama yang perlu diketahui adalah bahwa permit bertanda tangan dapat digunakan oleh pihak lain hingga digunakan atau kedaluwarsa.

Jangan membagikan data permit bertanda tangan kecuali Anda memercayai alurnya.

Pertimbangan Implementasi bagi Developer

Developer sebaiknya mengikuti spesifikasi EIP-2612 dengan saksama.

Type hash permit harus sesuai dengan struktur tanda tangan yang diharapkan.

Digest harus menggunakan encoding EIP-712 dengan pemisah domain dan struct hash permit.

Kontrak harus menolak permit yang kedaluwarsa.

Kontrak harus menolak tanda tangan yang tidak valid.

Kontrak harus menolak permit jika signer yang dipulihkan bukan pemiliknya.

Kontrak harus menolak kasus owner alamat nol yang tidak sesuai.

Kontrak harus menaikkan nonce pemilik setelah permit berhasil dijalankan.

Kontrak harus mengeluarkan event

Approval
standar setelah allowance berubah.

Developer sebaiknya menggunakan library yang telah ditinjau dengan baik jika memungkinkan.

Dokumentasi ERC20Permit dari OpenZeppelin menyediakan pola implementasi yang banyak digunakan untuk proyek Solidity.

OpenZeppelin juga mendokumentasikan penggunaan ERC-20 Permit di lingkungan lain, seperti ERC-20 Permit untuk Stylus.

Meskipun menggunakan library, developer tetap harus menguji perilaku token yang sebenarnya dengan cermat.

Fungsi Permit vs Meta-Transaction

Meta-transaction adalah pola yang lebih luas ketika pengguna menandatangani pesan dan pihak lain mengirimkan transaksi atas nama pengguna.

EIP-2612 dapat dipandang sebagai pola tanda tangan khusus untuk persetujuan.

Standar ini tidak mengubah setiap tindakan token menjadi tindakan bertanda tangan.

Standar ini hanya menstandardisasi persetujuan bertanda tangan untuk allowance ERC-20.

Cakupan yang terbatas ini memang disengaja.

Standar minimal lebih mudah diadopsi dan diintegrasikan di berbagai wallet, kontrak, dan aplikasi.

Developer yang menginginkan transfer bertanda tangan, tindakan batch, atau sponsor gas khusus mungkin memerlukan kontrak atau standar tambahan.

Permit berguna karena menyelesaikan masalah umum tanpa mengubah seluruh model ERC-20.

Permit melengkapi sistem meta-transaction, bukan menggantikannya secara keseluruhan.

Fungsi Permit vs Transfer Token

Permit bukan transfer.

Transfer memindahkan token dari satu alamat ke alamat lain.

Permit memperbarui allowance yang diberikan satu alamat kepada alamat lain.

Artinya, pengguna dapat menandatangani permit dan tetap menyimpan token di wallet yang sama hingga spender menggunakan allowance tersebut.

Pemindahan token sebenarnya biasanya terjadi melalui

transferFrom
.

Perbedaan ini penting bagi keamanan wallet.

Saldo token pengguna mungkin tidak langsung berubah setelah menandatangani permit.

Namun, bukan berarti tanda tangan tersebut tidak berbahaya.

Spender mungkin tetap memiliki izin untuk memindahkan token di kemudian hari.

Pengguna sebaiknya memeriksa allowance aktif setelah menggunakan dApp dan mencabut persetujuan yang tidak lagi diperlukan.

Fungsi Permit vs Permit2

EIP-2612 adalah standar di tingkat token.

Kontrak token itu sendiri harus mengimplementasikan fungsi permit agar token mendukung EIP-2612.

Sistem persetujuan lain dapat menyediakan perilaku serupa permit melalui kontrak eksternal.

Sistem tersebut tidak sama dengan dukungan EIP-2612 native.

Perbedaan ini penting karena permintaan wallet, alamat spender, sistem nonce, cakupan persetujuan, dan cara pencabutan dapat berbeda.

Saat menandatangani persetujuan serupa permit, pengguna harus memeriksa kontrak mana yang menerima wewenang.

Saat mengintegrasikan permit, developer harus memastikan apakah token mendukung EIP-2612 secara langsung atau memerlukan mekanisme persetujuan lain.

Menyebut semua persetujuan bertanda tangan sebagai “EIP-2612” dapat menimbulkan kebingungan.

EIP-2612 memiliki antarmuka dan struktur tanda tangan yang spesifik.

Cara Pengguna Membaca Permintaan Tanda Tangan Permit

Pengguna harus terlebih dahulu memeriksa nama token.

Selanjutnya, pengguna perlu memeriksa alamat spender atau aplikasi yang meminta izin.

Pengguna perlu memeriksa jumlah yang disetujui.

Pengguna perlu memeriksa apakah nilainya terbatas atau pada praktiknya tanpa batas.

Pengguna perlu memeriksa batas waktunya.

Pengguna perlu memastikan apakah permintaan tersebut muncul setelah tindakan yang memang sengaja dilakukan.

Pengguna harus menolak permintaan jika muncul secara tidak terduga.

Pengguna harus ekstra berhati-hati jika situs meminta banyak tanda tangan secara berurutan.

Pengguna sebaiknya tidak menandatangani pesan permit dari tautan dalam pesan langsung, obrolan dukungan palsu, iklan mencurigakan, atau halaman token yang tidak dikenal.

Pengguna harus ingat bahwa menandatangani permit dapat memberikan wewenang kepada alamat lain untuk menggunakan token.

Permintaan wallet yang aman seharusnya menampilkan kolom-kolom ini dengan jelas, tetapi pengguna tidak boleh hanya mengandalkan desain antarmuka.

Mengapa Permit Meningkatkan Pengalaman Pengguna

Permit meningkatkan pengalaman pengguna dengan mengurangi jumlah transaksi on-chain yang diperlukan.

Permit dapat menghilangkan langkah persetujuan terpisah dari banyak alur dApp.

Permit dapat memungkinkan pengguna berinteraksi dengan token ERC-20 meskipun mereka tidak memiliki cukup token gas native untuk mengirim persetujuan secara terpisah.

Permit dapat membantu aplikasi mensponsori gas atau menggabungkan persetujuan dengan tindakan lain.

Permit dapat mengurangi kegagalan alur karena pengguna menyetujui token, tetapi lupa menyelesaikan transaksi kedua.

Permit dapat mempermudah proses orientasi bagi pengguna yang baru mengenal aplikasi on-chain.

Manfaat ini sangat penting karena persetujuan ERC-20 merupakan salah satu hambatan paling umum dalam penggunaan kripto.

Namun, persetujuan yang lebih praktis tidak otomatis berarti persetujuan yang lebih aman.

Pengalaman pengguna yang baik harus disertai permintaan tanda tangan yang jelas, desain spender yang cermat, dan pengelolaan allowance yang mudah.

Kesalahan Umum dalam Menggunakan EIP-2612

Kesalahan umum pertama adalah mengira permit langsung mentransfer token.

Permit hanya memperbarui allowance.

Kesalahan umum lainnya adalah mengira persetujuan tanpa gas berarti tidak ada pihak yang membayar gas.

Permit tetap memerlukan transaksi on-chain untuk memperbarui status kontrak.

Kesalahan ketiga adalah menandatangani persetujuan tanpa batas tanpa memahami risiko spender.

Kesalahan keempat adalah mengabaikan kolom batas waktu.

Kesalahan kelima adalah memercayai permintaan tanda tangan hanya karena tampilannya tidak seperti transaksi biasa.

Kesalahan keenam adalah menganggap semua token ERC-20 mendukung EIP-2612.

Kesalahan ketujuh adalah mengintegrasikan permit tanpa menguji perilaku ID chain, pemisah domain, dan nonce di berbagai deployment.

Kesalahan kedelapan adalah menganggap semua sistem serupa permit identik dengan EIP-2612.

Kesalahan kesembilan adalah tidak menangani pengiriman permit melalui front-running dalam alur kontrak gabungan.

Kesalahan kesepuluh adalah menampilkan permintaan permit dengan cara yang sulit dipahami pengguna.

Praktik Terbaik bagi Pengguna

Hanya tandatangani pesan permit di situs dan aplikasi yang Anda percayai.

Periksa token, spender, jumlah, dan batas waktu sebelum menandatangani.

Hindari persetujuan tanpa batas kecuali ada alasan kuat.

Gunakan jumlah persetujuan kecil jika memungkinkan.

Cabut allowance lama yang tidak lagi diperlukan.

Jangan menandatangani pesan permit dari tautan acak, pesan dukungan palsu, atau halaman airdrop yang tidak dikenal.

Gunakan wallet terpisah untuk dApp eksperimental dan wallet lain untuk menyimpan aset jangka panjang.

Periksa peringatan wallet dengan saksama.

Jangan menganggap tanda tangan aman hanya karena tidak langsung menampilkan biaya gas.

Ingat bahwa permit bertanda tangan dapat dikirimkan kemudian oleh pihak lain sebelum kedaluwarsa.

Praktik Terbaik bagi Developer

Gunakan implementasi permit yang telah diaudit dan terpelihara dengan baik jika memungkinkan.

Ikuti antarmuka resmi EIP-2612 dengan tepat saat menyatakan dukungan EIP-2612.

Gunakan data bertipe EIP-712 agar wallet dapat menampilkan informasi penandatanganan dengan jelas.

Terapkan pemisahan domain dengan benar.

Lacak nonce untuk setiap alamat pemilik.

Tolak tanda tangan yang kedaluwarsa.

Tolak signer yang tidak valid dan kasus owner alamat nol.

Keluarkan event

Approval
setelah pembaruan allowance berhasil.

Rancang alur permit gabungan agar tetap dapat berjalan jika permit dikirimkan sebelum transaksi utama.

Tampilkan nama spender, jumlah token, dan detail kedaluwarsa kepada pengguna dengan bahasa yang mudah dipahami.

Sediakan dokumentasi yang mudah diikuti tentang cara pengguna mencabut allowance.

Uji tanda tangan di berbagai ID chain, fork, upgrade, dan penyedia wallet.

Fungsi Permit dalam Satu Kalimat

Fungsi Permit dalam EIP-2612 memungkinkan pemilik token ERC-20 menyetujui spender melalui tanda tangan EIP-712, sehingga allowance dapat diperbarui secara on-chain tanpa pemilik mengirim transaksi persetujuan terpisah.

FAQ

Apa itu Fungsi Permit dalam EIP-2612?

Fungsi Permit adalah ekstensi ERC-20 yang memungkinkan pemilik token menyetujui spender melalui tanda tangan off-chain yang nantinya dapat dikirimkan secara on-chain.

Apakah permit mentransfer token?

Tidak. Permit hanya menetapkan allowance dan tidak mentransfer token dengan sendirinya.

Mengapa EIP-2612 berguna?

EIP-2612 berguna karena mengurangi hambatan persetujuan, memungkinkan pengalaman persetujuan tanpa gas, dan memungkinkan aplikasi menggabungkan persetujuan dengan tindakan smart contract lainnya.

Apakah pemilik token membayar gas saat menggunakan permit?

Pemilik token tidak perlu mengirim transaksi persetujuan, tetapi seseorang tetap harus membayar gas untuk mengirim permit bertanda tangan secara on-chain.

Apa perbedaan antara approve dan permit?

Approve adalah transaksi on-chain yang dikirim oleh pemilik token, sedangkan permit adalah tanda tangan off-chain yang dapat dikirimkan secara on-chain oleh pihak lain.

Apa hubungan EIP-712 dengan permit?

EIP-712 menyediakan penandatanganan data terstruktur bertipe, yang membantu wallet menampilkan detail permit dengan lebih jelas dan mengikat tanda tangan ke domain tertentu.

Apa itu nonce dalam EIP-2612?

Nonce adalah nilai khusus per pemilik yang mencegah tanda tangan permit yang sama digunakan kembali.

Apa itu batas waktu dalam permit?

Batas waktu adalah waktu kedaluwarsa setelahnya tanda tangan permit seharusnya tidak lagi valid.

Apakah EIP-2612 aman?

EIP-2612 dapat digunakan dengan aman jika diterapkan dan digunakan dengan benar, tetapi pengguna tetap harus waspada terhadap phishing tanda tangan, persetujuan tanpa batas, spender berbahaya, dan permintaan wallet yang tidak jelas.

Apakah semua token ERC-20 mendukung permit?

Tidak. Hanya token ERC-20 yang mengimplementasikan ekstensi EIP-2612 yang mendukung Fungsi Permit standar.

Bisakah tanda tangan permit mengalami front-running?

Ya. Siapa pun yang memiliki tanda tangan permit yang valid dapat mengirimkannya sebelum transaksi lain, sehingga developer perlu merancang alur yang dapat menangani kemungkinan ini.

Bagaimana pengguna dapat mengurangi risiko permit?

Pengguna dapat mengurangi risiko permit dengan memeriksa spender, membatasi jumlah persetujuan, menggunakan batas waktu yang singkat, menghindari situs mencurigakan, dan mencabut allowance yang tidak lagi digunakan.

Kesimpulan

Fungsi Permit dalam EIP-2612 merupakan salah satu peningkatan paling bermanfaat untuk pengalaman persetujuan ERC-20.

Fungsi ini memungkinkan pengguna mengotorisasi allowance token melalui tanda tangan, bukan transaksi persetujuan terpisah.

Hal ini dapat mengurangi hambatan biaya gas, mempermudah proses orientasi di dApp, mendukung alur transaksi bersponsor, dan memudahkan penggabungan interaksi ERC-20 dalam satu alur pengguna.

Standar ini mengandalkan data terstruktur bertipe EIP-712, pemisahan domain, nonce, dan batas waktu agar persetujuan bertanda tangan lebih aman dan spesifik.

Namun, permit tidak menghilangkan risiko dasar allowance token.

Permit bertanda tangan tetap dapat memberikan wewenang nyata kepada spender atas token pengguna.

Pengguna harus memperlakukan tanda tangan permit seserius transaksi persetujuan.

Developer harus menerapkan standar ini dengan cermat, menampilkan informasi penandatanganan dengan jelas, dan menangani kasus seperti perlindungan replay, tanda tangan kedaluwarsa, serta pengiriman permit melalui front-running.

Jika digunakan dengan benar, EIP-2612 membuat token ERC-20 lebih mudah digunakan tanpa mengubah konsep inti penggunaan token berbasis allowance.

Standar ini sederhana tetapi penting: meningkatkan kegunaan praktis aplikasi kripto sekaligus mempertahankan kompatibilitas dengan ekosistem ERC-20 yang lebih luas.
Menarik Kembali / Peluang?
Menarik Kembali / Peluang?Menarik Kembali / Peluang?
Simak arus masuk ETF BTC $2,4 miliar pada likuidasi