Abstraksi akun di Ethereum memiliki dua alamat kanonis yang perlu diingat. EntryPoint v0.6 berada di 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789. EntryPoint v0.7, yang diluncurkan pada awal 2024, berada di 0x0000000071727De22E5E9d8BAf0edAc6f37da032. Setiap transaksi ERC-4337 di mainnet, Arbitrum, Optimism, Base, Polygon, dan sebagian besar chain EVM lainnya melewati salah satu dari dua kontrak singleton tersebut. Jika Anda memahami fungsi kontrak-kontrak itu beserta lima peran lain di sekitarnya, Anda memahami ERC-4337.
Ini adalah bagian 2 dari seri Smart Accounts kami. Bagian 1 membahas alasan EOA bukan pilihan bawaan yang baik. Di sini, kita akan melihat cara kerjanya dari dalam: susunan enam peran, struct UserOperation, proses yang terjadi saat Anda menukar token dari akun pintar, perubahan dari v0.6 ke v0.7, paymaster, alt-mempool publik dibandingkan bundler privat, serta biaya tambahan yang perlu Anda perhitungkan.
Enam peran dalam satu diagram
ERC-4337 membagi pekerjaan yang dilakukan EOA dalam satu langkah menjadi enam aktor yang bekerja sama. Tidak satu pun memerlukan hard fork Ethereum — seluruh sistem terdiri atas kontrak dan infrastruktur off-chain.
- Pengirim (akun pintar): Dompet kontrak yang menyimpan aset Anda dan mengimplementasikan
validateUserOp. Dari sudut pandang DApp mana pun yang berinteraksi dengannya, akun ini adalahmsg.sender. Contoh: Safe, Kernel, Biconomy Nexus, Coinbase Smart Wallet, Light Account dari Alchemy. - UserOperation: Struct transaksi semu (bukan transaksi Ethereum sungguhan) yang menjelaskan tindakan yang ingin dilakukan pengirim. Pengguna menandatangani UserOp, bukan transaksi.
- Bundler: Node off-chain yang mengumpulkan UserOp dari mempool, menyimulasikannya, mengemasnya ke dalam satu panggilan
handleOps, lalu membayar gas L1. Bundler mendapat keuntungan dari selisih antara jumlah yang diganti oleh pengirim (atau paymaster) dan jumlah yang dibayarkannya kepada validator. - EntryPoint: Kontrak singleton tepercaya yang memproses bundel, memanggil
validateUserOpmilik setiap pengirim, menjalankan data panggilan, serta menangani pengembalian dana dan pembatalan transaksi. Setiap versi memiliki tepat satu EntryPoint di setiap chain. - Paymaster (opsional): Kontrak yang bersedia membayar gas atas nama pengirim, baik dengan mensponsori biaya (gratis bagi pengguna) maupun sebagai imbalan dalam bentuk ERC-20 seperti USDC.
- Aggregator (opsional): Kontrak yang memvalidasi banyak UserOp dengan satu pemeriksaan tanda tangan — berguna untuk skema BLS atau bukti zk. Saat ini, kontrak ini jarang diterapkan di lingkungan produksi.
Ingat susunan peran ini. Bagian selanjutnya hanya membahas interaksi di antara keenamnya.
Struct UserOperation
UserOperation adalah kumpulan field yang kompatibel dengan JSON-RPC. Setelah ditandatangani, kumpulan ini menyatakan maksud tanpa langsung memasukkannya ke L1. Susunan v0.7 memiliki 11 field logis:
sender— alamat akun pintar.nonce— nilai 256-bit dengan 192 bit teratas sebagai kunci (jalur nonce paralel) dan 64 bit terbawah sebagai urutan. Dengan cara ini, ERC-4337 mendukung nonce paralel, sedangkan EOA harus memproses semuanya secara berurutan.factorydanfactoryData— untuk penerapan pertama kali melalui CREATE2; nilainya null setelah diterapkan.callData— panggilan yang harus dilakukan akun pintar setelah divalidasi.callGasLimit,verificationGasLimit,preVerificationGas— tiga batas anggaran gas yang terpisah.maxFeePerGas,maxPriorityFeePerGas— menggunakan semantik EIP-1559 yang sama dengan transaksi biasa.paymasterAndData(v0.6) dipecah menjadipaymaster,paymasterVerificationGasLimit,paymasterPostOpGasLimit,paymasterData(v0.7).signature— byte buram yang ditafsirkan akun pintar menggunakanvalidateUserOpmiliknya sendiri.
Dompet menentukan skema tanda tangannya. ECDSA dengan secp256k1 umum digunakan, tetapi verifikasi P-256/passkey, multisig, ambang pemulihan sosial, dan penanda tangan kunci sesi juga bisa digunakan melalui antarmuka yang sama. Fleksibilitas itulah tujuan utamanya.
Dari awal hingga akhir: proses penukaran USDC ke ETH oleh akun pintar
Ikuti proses penukaran sungguhan untuk melihat urutan kerja setiap peran.
- Pengguna mengetuk "Swap" di antarmuka dompet. Dompet menyusun UserOperation:
sender = 0xUserSafe,callData = swapUSDCforETH(amount)yang diarahkan ke Uniswap. - Estimasi gas. Dompet memanggil
eth_estimateUserOperationGasmelalui RPC bundler. Bundler menyimulasikan operasi terhadap EntryPoint, lalu mengembalikan tiga batas gas. - Pengguna menandatangani. Dompet membuat hash UserOp dengan alamat EntryPoint dan ID chain, meminta pengguna menandatanganinya (dengan passkey, kunci perangkat keras, atau metode lain), lalu menyertakan tanda tangan tersebut.
- Pengiriman. UserOp yang sudah ditandatangani dikirim melalui
eth_sendUserOperationke satu atau beberapa bundler. UserOp masuk ke alt-mempool, jaringan P2P terpisah dari mempool transaksi biasa Ethereum. - Simulasi bundler. Bundler menyimulasikan ulang dengan
eth_callterhadapsimulateValidation. Bundler memeriksa aturan akses penyimpanan ERC-7562: selama validasi, UserOp hanya boleh mengakses penyimpanannya sendiri. Jika tidak, bundler berisiko menjadi sasaran gangguan. - Pengemasan bundel. Bundler mengemas UserOp ini bersama hingga sekitar 10 UserOp lain ke dalam satu panggilan
handleOps([...userOps], beneficiary)ke EntryPoint. - Eksekusi on-chain. EntryPoint memproses operasi satu per satu: memanggil
validateUserOppada pengirim, memotong dana prefund, lalu menjalankancallData. Penukaran Uniswap dilakukan oleh akun pintar. - Pengembalian dana. EntryPoint mengembalikan gas yang tidak terpakai kepada pengirim (atau paymaster), lalu membayar alamat penerima milik bundler.
Jika langkah 5 gagal, bundler membuang operasi tersebut dan pengguna melihat kode kesalahan AAxx. Yang paling umum adalah AA21 (prefund tidak dibayar), AA23 (kesalahan tanda tangan), AA25 (nonce tidak valid), AA33 (paymaster membatalkan transaksi), dan AA40 (batas gas verifikasi terlampaui). Ingat daftar ini — Anda akan menjumpainya.
EntryPoint v0.6 dibandingkan v0.7
v0.6 dirilis pada Maret 2023 di 0x5FF1…2789. Versi ini berfungsi, tetapi memiliki tiga masalah yang cukup mengganggu: satu blob paymasterAndData yang mencampur tiga dimensi gas, pengemasan initCode yang merepotkan, dan perhitungan gas yang membebankan biaya berlebih kepada pengirim. v0.7 mengatasi ketiganya.
Perubahan utama v0.7 yang perlu diketahui:
- Alamat:
0x0000000071727De22E5E9d8BAf0edAc6f37da032(perhatikan nol di awal alamat — alamat ini dipilih melalui vanity mining agar biaya gas calldata lebih murah, karena setiap byte nol membutuhkan 4 gas, sedangkan byte bukan nol membutuhkan 16). - Field paymaster dipisah:
paymaster,paymasterVerificationGasLimit,paymasterPostOpGasLimit,paymasterDatakini menjadi field terpisah. Estimasi lebih mudah dan anggaran lebih kecil kemungkinannya terlewat. - Field factory dipisah: prinsip yang sama —
factorydanfactoryDatakini menjadi field terpisah, bukan satuinitCodeyang dikemas. - Penalti untuk gas yang tidak terpakai: pengirim dikenai biaya sebesar 10% dari
callGasLimit/paymasterPostOpGasLimityang tidak terpakai. Ini mencegah estimasi operasi yang terlalu tinggi. - Hook kompatibilitas EIP-7702: v0.7 menambahkan mekanisme yang memungkinkan EOA biasa mendelegasikan sementara ke implementasi akun pintar. Mekanisme ini menjadi fondasi jalur peningkatan EIP-7702 yang diluncurkan di Pectra.
v0.6 masih aktif dan masih digunakan — banyak dompet baru merilis modul yang kompatibel dengan v0.7 setelah 2024 berjalan cukup lama. Sebagian besar chain menjalankan kedua EntryPoint secara paralel selama bertahun-tahun.
Paymaster: siapa yang membayar gas
Paymaster adalah kontrak yang menyimpan stake ETH di EntryPoint dan bersedia menanggung gas untuk UserOp yang sesuai dengan kebijakannya. Ada tiga jenis utama:
- Paymaster verifikasi (disponsori). Backend menandatangani persetujuan off-chain; paymaster memverifikasi tanda tangan itu on-chain lalu membayar gas. Digunakan oleh aplikasi yang ingin menyediakan proses awal tanpa biaya gas — Coinbase Smart Wallet, Farcaster Frames, dan sebagian besar pencetakan NFT.
- Paymaster ERC-20. Pengguna membayar dengan USDC, USDT, atau DAI; paymaster menukarnya dengan ETH di backend (atau menggunakan persediaan ETH yang dimilikinya). Pimlico, Biconomy, dan Stackup masing-masing mengoperasikan paymaster publik.
- Paymaster token dengan permit. Menggunakan permit EIP-2612 agar pengguna dapat menandatangani UserOp sekaligus persetujuan token dalam satu tanda tangan.
validatePaymasterUserOp milik paymaster dijalankan selama tahap validasi EntryPoint. Jika gagal, Anda akan menerima AA33. Jika stake-nya habis, EntryPoint menyita stake tersebut dan bundler menanggung kerugiannya — karena itulah bundler memelihara daftar reputasi paymaster. ERC-7562 menetapkan aturan reputasi ini agar mempool bundler tetap tahan terhadap spam. Primitif yang sama menjelaskan mengapa praktik persetujuan DeFi dan multisig yang baik dapat diterapkan dengan mudah di dunia 4337: ancamannya sama, pembungkusnya berbeda.
Alt-mempool publik vs. bundler privat
Ada dua cara untuk memasukkan UserOp ke blockchain.
Alt-mempool publik: Bundler yang mematuhi ERC-7562 menyebarkan UserOp melalui jaringan libp2p. Siapa pun yang menjalankan node Pimlico, Stackup, Alchemy, Etherspot, atau Voltaire dapat mengambil UserOp Anda. Cara ini terbuka bagi siapa saja dan tahan sensor, tetapi Anda menghadapi risiko MEV yang sama seperti tx Ethereum biasa: pencari peluang dapat melihat op Anda sebelum dimasukkan ke blockchain.
Bundler privat: Anda mengirim eth_sendUserOperation langsung ke RPC milik satu penyedia. Penyedia itu menyimulasikan, menggabungkan, lalu mengirimkannya secara privat (sering kali melalui Flashbots). Prosesnya lebih cepat dan terlindungi dari MEV, tetapi Anda harus memercayai bundler agar tidak menyensor atau mendahului transaksi Anda. Pada 2026, sebagian besar dompet konsumen menggunakan bundler privat secara default.
Perbedaan ini serupa dengan pilihan antara mempool publik dan Flashbots Protect untuk tx biasa. Jika Anda belum membaca penjelasan tentang siklus transaksi sejak era L1, panduan tersebut menjelaskan apa yang berubah saat bundler mengambil alih.
Aggregator, adopsi, dan biayanya
Aggregator adalah kontrak yang memvalidasi sekumpulan transaksi dengan satu pemeriksaan tanda tangan. Contoh penggunaan utamanya adalah BLS: Anda mengumpulkan 50 UserOp yang ditandatangani dengan BLS, menggabungkan tanda tangannya menjadi satu pemeriksaan pairing, lalu menghemat sekitar 95% gas untuk tanda tangan. Adopsinya berjalan lambat karena membuat dompet yang menggunakan tanda tangan BLS sulit dilakukan, sementara penghematan gas baru terasa pada volume tinggi. Hingga pertengahan 2026, kurang dari 1% UserOp di mainnet menggunakan aggregator.
Angka adopsi (Q1 2026 dari bundlebear.com): sekitar 380 juta UserOp secara kumulatif di semua chain, dengan Base, Polygon, dan Arbitrum mencakup sebagian besar jumlahnya. Pangsa mainnet sekitar 6–8%—paling kecil dari segi volume, tetapi terbesar dari segi nilai yang ditransfer. Coinbase Smart Wallet, Farcaster, dan Argent mendominasi penggunaan konsumen.
Biaya tambahan: UserOp v0.7 membutuhkan sekitar 30,000–40,000 gas lebih banyak daripada transaksi EOA yang setara. Biaya ini mencakup loop EntryPoint, validasi, dan penataan bundle. Di mainnet dengan biaya 20 gwei, jumlahnya hanya sebagian kecil dari satu dolar per op. Deployment akun pertama kali melalui factoryData menambah sekitar 250,000 gas. Di L2, tempat calldata menjadi komponen biaya utama, biaya tambahannya hanya satu digit persen. UserOp bersponsor mengalihkan biaya ini ke dApp. Karena itu, transaksi di aplikasi konsumen bisa gratis, sedangkan di DeFi serius tidak. Panduan biaya transaksi yang lebih lengkap menjelaskan dampak biaya tambahan ini di berbagai pasar biaya.
Singkatnya: ERC-4337 terdiri atas enam peran (pengirim, UserOp, bundler, EntryPoint, paymaster, aggregator), satu struct, dua alamat EntryPoint yang perlu Anda hafal, serta biaya tambahan sekitar 30–40 ribu gas. Sebagai gantinya, Anda mendapat skema tanda tangan yang fleksibel, sponsor gas, batching, dan nonce paralel. Bagian 3 seri ini membahas EIP-7702—jalur paralel Pectra yang memungkinkan EOA Anda yang sudah ada meminjam mekanisme yang sama tanpa mengubah alamatnya.



