EIP-7702: Delegasi Kode EOA dan Risikonya
Pelajari cara EIP-7702 mengarahkan EOA ke kode terapan, apa yang ditandatangani otorisasi tipe 4, serta izin dan risikonya.
Dalam panduan iniEIP-7702 mengubah jalur eksekusi, bukan kunci akun
Ringkasan singkat
EIP-7702 memungkinkan akun milik eksternal (EOA) yang sudah ada menetapkan penanda yang menunjuk ke kode terapan. Alamat dan kuncinya tetap, tetapi panggilan dapat menjalankan kode itu dengan otoritas akun. Standar ini tidak menjamin izin terbatas atau keamanan. Periksa kode tujuan dan pengendalinya sebelum menandatangani.
EIP-7702 mengubah jalur eksekusi, bukan kunci akun
EOA biasa menandatangani transaksi dengan kunci privat dan tidak menyimpan kode yang dapat dijalankan pada alamatnya sendiri. EIP-7702 mengarahkannya ke kode yang sudah terpasang di alamat lain, lalu menjalankan kode itu dalam konteks EOA. Jadi saldo dan penyimpanan yang dipakai tetap milik akun delegasi, walaupun kode berada di alamat berbeda. Ini bukan pemindahan ke alamat kontrak baru atau penggantian kunci.
Spesifikasi EIP-7702 menetapkan transaksi set-code tipe 4 dengan daftar otorisasi. Panduan Pectra Ethereum.org juga menjelaskan penunjuk ke kode terapan. Label “smart account” pada dompet tidak menjelaskan aturan validasi, pemulihan, atau kode yang sebenarnya. Periksa siapa yang mengendalikan dan dapat memperbarui kode serta dampaknya pada aset dan penyimpanan.
Transaksi tipe 4 membawa otorisasi yang ditandatangani terpisah
Tipe 4 memakai byte 0x04 dan memuat daftar otorisasi. Setiap tuple berisi ID chain, alamat kode tujuan, nonce akun pemberi otorisasi, dan tanda tangannya. Otoritas menandatangani tuple; pengirim menandatangani transaksi luar secara terpisah. Keduanya tidak harus akun yang sama.
ID chain biasanya membatasi otorisasi ke satu chain. Nilai 0 membuka cakupan pada chain yang mendukung EIP-7702, tetapi tidak menjamin berhasil di semua jaringan: nonce dan keadaan akun tetap harus cocok. Bandingkan jaringan, akun, dan alamat tujuan lengkap pada layar tanda tangan dengan penjelajah blok tepercaya. Tuple dapat dilewati jika nonce atau pemeriksaan lain tidak valid.
Dokumentasi transaksi Ethereum.org menyebut daftar otorisasi tipe 4. Transaksi luar tetap memiliki syarat gas dan pembayar biaya. Tipe ini berbeda dari UserOperation dan paymaster ERC-4337 yang dibahas dalam panduan smart account.
Penanda delegasi menunjuk ke kode, bukan memuatnya
Kode EOA menerima penanda 0xef0100 disertai alamat tujuan. Klien membaca penanda dan mengambil kode tujuan saat panggilan berjalan. Alamat akun dan alamat kode itu berbeda. Kode diambil dari chain yang sedang digunakan; alamat sama dapat memiliki kode berbeda atau tidak ada di chain lain.
Kode delegasi berjalan dalam konteks akun dan dapat memakai penyimpanannya. Bergantung pada implementasi, ia dapat mengirim ETH atau token, memanggil kontrak luar, dan mengubah nilai tersimpan. EIP-7702 sendiri tidak membatasi kode pada token atau panggilan tertentu. Jika tujuan adalah proxy, periksa administrator dan kuasa peningkatannya.
Kode delegasi dapat memiliki kuasa luas
Validasi yang buruk dapat mengizinkan transfer aset, persetujuan token, panggilan kontrak bebas, atau perubahan penyimpanan. Pertimbangan keamanan EIP menyoroti perlindungan replay serta pengikatan tujuan, calldata, nilai ETH, dan gas pada tanda tangan. Tanpa pemeriksaan itu, sponsor dapat mengirim panggilan lain atau membuat transaksi gagal.
Periksa kontrak yang dapat dipanggil, validasi tanda tangan, pemegang kuasa darurat atau upgrade, dan kecocokan kode dengan sumber terverifikasi. Lencana audit bukan bukti bahwa alamat dan versi dalam permintaan sudah diperiksa. Untuk bundel seperti persetujuan token dan swap, baca kedua panggilan dan pastikan allowance hanya sebesar yang diperlukan.
Kegagalan transaksi luar dapat meninggalkan delegasi aktif
Daftar otorisasi diproses sebelum eksekusi transaksi luar. EIP menyatakan penanda delegasi yang sudah diproses tidak dibatalkan jika eksekusi berikutnya gagal atau revert. Maka status gagal tidak berarti seluruh keadaan akun kembali seperti semula. Periksa kuitansi transaksi dan kode akun terkini secara terpisah.
Otorisasi dapat berhasil sementara panggilan inisialisasi atau aplikasi gagal. Delegasi mungkin tetap aktif walau pengaturan belum selesai. Sebelum mencoba lagi, cocokkan hash transaksi, akun pemberi kuasa, nonce, dan penunjuk kode. Nonce yang berubah dapat membuat otorisasi lama tidak berlaku.
Menghapus delegasi tidak menghapus keadaan lain
Otorisasi baru dapat mengganti tujuan. Otorisasi ke alamat null menghapus penanda delegasi, tetapi tidak membersihkan penyimpanan akun, allowance ERC-20, transfer yang selesai, atau perubahan kontrak luar. Periksa dan cabut allowance pada kontrak token secara terpisah.
Kode baru dapat memaknai penyimpanan lama dengan cara berbeda. Periksa tata letak dan rencana migrasi sebelum mengganti tujuan. Untuk allowance, baca panduan persetujuan dan allowance token. Jika kunci atau frasa pemulihan bocor, menghapus kode tidak memulihkan kunci; ikuti panduan pemulihan dompet.
Periksa jaringan, tujuan, dan keadaan setelah kegagalan
Pastikan dokumentasi resmi dompet menyatakan EIP-7702 didukung pada jaringan yang dipilih. Periksa ID chain, akun, alamat tujuan, kode terverifikasi, dan pengelola proxy. Bedakan tanda tangan otorisasi dari pengirim dan pembayar transaksi luar; sponsorship tidak membuat kode aman.
Jika delegasi sudah aktif, periksa penanda dan alamat kode saat ini, bukan hanya status transaksi. Jika berbeda dari perkiraan, hentikan panggilan dan persetujuan tambahan. Untuk gas lihat panduan biaya Ethereum; untuk nonce dan transaksi tertunda, lihat panduan transaksi tertunda.
Pisahkan fungsi protokol dari janji dompet
EIP-7702 menstandarkan transaksi yang menghubungkan EOA ke kode terapan. Bundel panggilan, sponsor gas, izin sesi, dan pemulihan bergantung pada kode serta layanan tertentu. Pengumuman Pectra mainnet Ethereum Foundation menjelaskan penggantian atau pencabutan otorisasi; UserOperation dan paymaster ERC-4337 adalah mekanisme lain.
Label “smart account” tidak memberi tahu siapa memegang kunci, siapa mengubah kode, atau siapa mengendalikan pemulihan. Periksa implementasi dan dukungan dompet sebelum mengubah akun berisi aset. Panduan ini menjelaskan mekanika dan tidak merekomendasikan dompet atau delegasi tertentu.
Pertanyaan umum
Q1Apakah EIP-7702 menjadikan EOA dompet kontrak pintar biasa?
Tidak. EOA dapat mendelegasikan panggilan ke kode, tetapi kebijakan dompet, pemulihan, dan izin tertentu tidak otomatis ditambahkan.
Q2Apakah kedua tanda tangan sama?
Tidak. Akun otoritas menandatangani tujuan, ID chain, dan nonce; pengirim menandatangani transaksi luar secara terpisah.
Q3Apakah menghapus delegasi mencabut persetujuan token?
Tidak. Kontrak token menyimpan allowance secara terpisah. Periksa dan cabut melalui kontrak token atau alur dompet tepercaya.
Q4Apa yang harus diperiksa pada tujuan delegasi?
Periksa alamat dan kode di chain saat ini, sumber terverifikasi, pengelola upgrade, serta izin atas aset dan penyimpanan akun.
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 01
Apa yang mungkin terjadi jika eksekusi luar gagal setelah otorisasi diproses?
Pilih jawaban untuk melihat penjelasannya
Glosarium opsi
Proses ketika kewajiban memenuhi kontrak setelah pemberitahuan exercise dialokasikan kepada penjual opsi dan dapat menimbulkan penyerahan atau pembelian saham.
Baca panduan lengkapSelisih harga beli dan jualPerbedaan antara harga penawaran beli tertinggi dan harga penawaran jual terendah. Selisih ini merupakan biaya implisit untuk membeli lalu menjual kontrak dan dapat melebar ketika pasar kurang likuid.
Baca panduan lengkap0DTEAn option that expires on the current trading day; little time remains for the thesis to work, while gamma and execution risk can change quickly.
Baca panduan lengkap