Lompat ke konten

Abstraksi Akun

Pahami abstraksi akun Ethereum melalui akun pintar ERC-4337, versi EntryPoint, UserOperation, bundler, paymaster, jalur nonce, validasi, eksekusi, delegasi EIP-7702, biaya, dan risiko pemulihan.

Diperbarui

Hanya untuk tujuan edukasi; bukan merupakan nasihat investasi atau rekomendasi investasi. Investasi dapat mengakibatkan kerugian.

Jawaban langsung

Abstraksi akun membuat aturan otorisasi dan eksekusi suatu akun dapat diprogram. Di Ethereum, ERC-4337 menerapkannya tanpa mengubah jenis transaksi konsensus: dompet mengirim UserOperation melalui infrastruktur RPC khusus, bundler membungkus satu atau beberapa operasi dalam transaksi biasa ke EntryPoint berversi, lalu akun pintar memvalidasi dan mengeksekusi operasinya sendiri. Pemulihan, passkey, kunci sesi, batas pengeluaran, batching, dan sponsor biaya merupakan fitur akun atau layanan yang dibangun di atas alur tersebut, bukan jaminan otomatis ERC-4337.

Hal ini berbeda dari ERC-1271, yang menstandarkan cara kontrak memvalidasi tanda tangan pesan, dan EIP-7702, yang memungkinkan externally owned account (EOA) mendelegasikan eksekusi kepada kode. Mekanisme ini dapat berinteraksi, tetapi tidak memiliki satu antarmuka, nonce, deployment, atau model keamanan yang sama. Abstraksi akun tidak menghapus kredensial, biaya gas, risiko kontrak, atau kebutuhan untuk memverifikasi chain dan implementasi yang tepat.

Alur ERC-4337 dalam tujuh langkah

  1. Tetapkan lingkungannya: chainId, implementasi akun pintar beserta kendali upgrade, factory, versi EntryPoint, alamat dan hash kode yang terpasang, dukungan bundler, serta apakah chain mengaktifkan EIP-7702. Alamat yang valid untuk satu rilis EntryPoint atau chain bukan konstanta universal.
  2. Susun operasi yang cocok dengan versinya. Bidang logis saat ini meliputi sender, nonce, factory, factoryData, callData, callGasLimit, verificationGasLimit, preVerificationGas, maxFeePerGas, maxPriorityFeePerGas, bidang paymaster opsional, dan signature. Di on-chain, EntryPoint menerima representasi terkemas; panggilan target dikodekan di dalam callData yang ditentukan akun, bukan bidang target universal.
  3. Ikat otorisasi ke domain yang tepat. userOpHash mencakup operasi selain tanda tangannya dan mengikat EntryPoint serta chain sehingga mencegah penggunaan ulang lintas domain tersebut. Fungsi validateUserOp milik akun memeriksa pemilik, multisignature, passkey, sesi, atau kebijakan lain. ERC-1271 isValidSignature merupakan antarmuka tanda tangan kontrak yang terpisah; aggregator opsional dapat memvalidasi tanda tangan agregat. Tuple otorisasi EIP-7702 disediakan terpisah dari UserOperation.
  4. Buktikan kapasitas biaya. Akun dapat melakukan prefund melalui saldonya di EntryPoint, atau paymaster dapat menerima kewajiban secara bersyarat dari depositnya sendiri. Paymaster dapat mensponsori pengguna, membebankan token, menerapkan daftar izin atau kuota, dan menjalankan postOp; tidak satu pun aturan komersial tersebut ditetapkan oleh ERC-4337. Stake dan deposit berbeda: stake mendukung aturan validasi dan reputasi, sedangkan deposit membayar gas.
  5. Estimasikan dan kirim melalui RPC ERC-7769. Bundler memvalidasi saat menerima, kembali sebelum memilih, dan kembali saat membangun bundle. ERC-7562 membatasi opcode serta akses penyimpanan tahap validasi dan mendukung kendali reputasi terhadap perilaku denial-of-service. Simulasi ini memeriksa penerimaan dan keamanan biaya; simulasi panggilan penuh yang terpisah diperlukan untuk memperkirakan eksekusi bisnis.
  6. Bundler memanggil handleOps. EntryPoint menjalankan deployment yang diizinkan, validasi akun dan paymaster, pemeriksaan prefund, serta agregasi opsional sebelum eksekusi. Validasi yang gagal mencegah operasi itu dieksekusi. Panggilan target tetap dapat revert setelah penerimaan yang valid dan menghabiskan gas. Kode eksekusi akun menentukan apakah panggilan dalam satu batch akun revert secara atomik atau mengizinkan keberhasilan parsial.
  7. Rekonsiliasi tanda terima dan state. Cocokkan tanda terima UserOperation, transaksi bundle yang mendasari, event EntryPoint, deployment akun, event target, gas aktual, beban token, refund, dan saldo akhir. Lalu pantau jalur nonce, perubahan pemilik dan pemulihan, pencabutan kunci sesi, modul, upgrade implementasi, alternatif bundler dan paymaster, reorganisasi chain, serta migrasi atau redelegasi EIP-7702.

Empat contoh terhitung

  • Batas gas sederhana. Sebuah operasi menganggarkan 120,000 gas eksekusi, 90,000 gas validasi akun, 45,000 gas validasi paymaster, 40,000 gas pravalidasi, dan 30,000 gas pascaoperasi paymaster: 120,000 + 90,000 + 45,000 + 40,000 + 30,000 = 325,000 gas. Pada maxFeePerGas = 30 gwei, batas sederhana adalah 325,000 × 30 gwei = 0.009750 ETH. Jika penggunaan aktual yang dapat dibebankan adalah 210,000 gas pada 22 gwei, biayanya 0.004620 ETH. Aturan versi EntryPoint, penalti gas tidak terpakai, biaya data L1, dan harga rollup dapat menambah atau mengklasifikasi ulang jumlah, jadi ini buku besar anggaran, bukan rumus prefund universal.
  • Jalur nonce paralel. Dengan 192-bit key dan 64-bit sequence, key 7 dan sequence 42 dikodekan sebagai nonce = (7 << 64) | 42 = 129127208515966861354 = 0x7000000000000002a. Setelah berhasil dimasukkan, jalur tersebut mengharapkan sequence 43; pemutaran ulang 42 gagal. Key yang berbeda dapat memiliki sequence independen, tunduk pada logika akun dan aturan bundler.
  • Kapasitas paymaster. Paymaster memiliki deposit 0.50 ETH dan setiap operasi yang diterima memerlukan jaminan maksimum 0.03 ETH. Paymaster dapat menanggung floor(0.50 / 0.03) = 16 operasi semacam itu, mencadangkan 0.48 ETH dan menyisakan 0.02 ETH. Operasi ketujuh belas memerlukan deposit tambahan atau jaminan lebih kecil. Stake paymaster tidak dapat menggantikan deposit biaya ini.
  • Eksekusi revert setelah penerimaan. Sebuah operasi mencadangkan hingga 0.0060 ETH; validasi berhasil, tetapi eksekusi target revert setelah menghabiskan 180,000 gas × 25 gwei = 0.0045 ETH. Perubahan state target dibatalkan, tetapi akun atau paymaster tetap berutang 0.0045 ETH; sisa 0.0015 ETH tunduk pada aturan penyelesaian dan penalti yang berlaku. Karena itu, simulasi bundler yang berhasil tidak menjanjikan keberhasilan bisnis, penyertaan, atau finalitas.

Risiko dan pengendalian

  • Chain, alamat EntryPoint, rilis, atau hash kode terpasang yang salah dapat membuat operasi tidak valid atau salah arah.
  • Tanda tangan tanpa pengikatan domain chain atau EntryPoint dapat memungkinkan replay.
  • Factory, alamat kontrafaktual, data inisialisasi, atau salt deployment dapat diganti atau salah hitung.
  • Delegasi EIP-7702 dapat mengarahkan EOA ke kode berbahaya atau rentan dengan otoritas akun yang luas.
  • Front-running inisialisasi atau inisialisasi ulang dapat mengambil alih atau merusak akun.
  • Upgrade proxy atau redelegasi EIP-7702 dapat bertabrakan dengan tata letak penyimpanan yang ada.
  • Administrator upgrade atau pengelola modul yang dikompromikan dapat mengganti perilaku akun.
  • Bug validasi pemilik, multisignature, passkey, atau ERC-1271 dapat mengotorisasi pencurian atau mengunci dana.
  • Ambang, penundaan, guardian, dan jalur pembatalan pemulihan dapat gagal atau diambil alih.
  • Kunci sesi dapat melampaui cakupan target, token, jumlah, durasi, atau fungsi yang dimaksud.
  • Jalur nonce dapat bertabrakan, terputus, di-replay, atau memblokir operasi dependen.
  • Gangguan aggregator atau cacat agregasi tanda tangan dapat membuat operasi yang sebenarnya valid terlantar.
  • Bundler dapat menyensor, offline, menerapkan kebijakan lokal berbeda, atau menolak aturan mempool alternatif.
  • Alur UserOperation publik dapat membocorkan niat untuk front-running, korelasi, dan MEV.
  • Validasi dapat lolos sebelum perubahan state membuat operasi tidak valid saat bundle dibangun.
  • Kebijakan paymaster dapat menolak layanan, depositnya dapat habis, atau postOp dapat gagal.
  • Beban gas dalam token dapat mencakup risiko nilai tukar, allowance, spread, dan markup layanan.
  • Gas yang diremehkan dapat revert; batas berlebihan dapat meningkatkan reservasi atau paparan penalti.
  • Semantik batch akun dapat mengizinkan keberhasilan parsial saat pengguna mengharapkan rollback atomik.
  • Bug protokol target, antarmuka bermusuhan, reorganisasi chain, dan finalitas lemah tetap berada di luar abstraksi akun.

Kesalahpahaman umum

  • “Abstraksi akun menghapus kunci pribadi.” Abstraksi akun mengubah kebijakan kredensial yang dapat diprogram; tetap diperlukan kredensial untuk mengotorisasi tindakan.
  • “Paymaster membuat gas gratis.” Gas native tetap dibayar dan pengguna, sponsor, atau layanan pada akhirnya menanggung biayanya.
  • “Simulasi bundler menjamin keberhasilan.” Simulasi penerimaan tidak menjamin eksekusi, penyertaan, atau finalitas.
  • “ERC-1271, ERC-4337, dan EIP-7702 adalah antarmuka yang sama.” Ketiganya menyelesaikan masalah tanda tangan, alur transaksi, dan delegasi yang berbeda.
  • “Setiap chain, dompet, dan EntryPoint kompatibel serta lebih aman.” Dukungan, versi, deployment, kode, modul, dan kendali harus diverifikasi secara terpisah.

Topik terkait

Sumber

Navigasi

Cari di wiki...