Trừu tượng hóa tài khoản trên Ethereum có hai địa chỉ chuẩn tắc đáng ghi nhớ. EntryPoint v0.6 nằm tại 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789. EntryPoint v0.7, được triển khai vào đầu năm 2024, nằm tại 0x0000000071727De22E5E9d8BAf0edAc6f37da032. Mọi giao dịch ERC-4337 trên mainnet, Arbitrum, Optimism, Base, Polygon và hầu hết các chuỗi EVM khác đều đi qua một trong hai hợp đồng singleton này. Nếu hiểu chức năng của các hợp đồng đó và năm vai trò khác xoay quanh chúng, bạn sẽ hiểu ERC-4337.
Đây là phần 2 trong loạt bài về Smart Accounts của chúng tôi. Phần 1 giải thích vì sao EOA không phải lựa chọn mặc định tốt. Trong phần này, chúng ta sẽ tìm hiểu sâu hơn về sáu vai trò, cấu trúc UserOperation, những gì thực sự diễn ra khi bạn hoán đổi token từ một tài khoản thông minh, các thay đổi từ v0.6 sang v0.7, paymaster, alt-mempool công khai so với bundler riêng tư, và mức chi phí phát sinh bạn nên dự kiến.
Sáu vai trò trong một sơ đồ
ERC-4337 chia những gì EOA thực hiện trong một bước thành sáu tác nhân phối hợp với nhau. Không vai trò nào đòi hỏi phải có đợt hard fork Ethereum — toàn bộ hệ thống gồm các hợp đồng và hạ tầng ngoài chuỗi.
- Người gửi (tài khoản thông minh): Ví dạng hợp đồng nắm giữ tài sản của bạn và triển khai
validateUserOp. Với mọi DApp mà nó tương tác, đây làmsg.sender. Ví dụ: Safe, Kernel, Biconomy Nexus, Coinbase Smart Wallet, Light Account của Alchemy. - UserOperation: Một cấu trúc dữ liệu giả giao dịch (không phải giao dịch Ethereum thực) mô tả việc người gửi muốn thực hiện. Người dùng ký UserOp, chứ không ký giao dịch.
- Bundler: Một nút ngoài chuỗi thu thập UserOp từ mempool, mô phỏng chúng, đóng gói vào một lệnh gọi
handleOpsduy nhất và trả phí gas L1. Bundler hưởng phần chênh lệch giữa khoản người gửi (hoặc paymaster) hoàn trả và khoản họ trả cho validator. - EntryPoint: Hợp đồng singleton đáng tin cậy duyệt qua gói, gọi
validateUserOpcủa từng người gửi, thực thi dữ liệu lệnh gọi, đồng thời xử lý hoàn phí và hoàn tác. Mỗi phiên bản trên mỗi chuỗi chỉ có đúng một EntryPoint. - Paymaster (không bắt buộc): Hợp đồng đồng ý trả phí gas thay cho người gửi, theo hình thức được tài trợ (người dùng không mất phí) hoặc đổi lấy một token ERC-20 như USDC.
- Aggregator (không bắt buộc): Hợp đồng xác thực nhiều UserOp chỉ bằng một lần kiểm tra chữ ký — hữu ích cho các cơ chế BLS hoặc bằng chứng zk. Hiện nay, vai trò này hiếm khi được triển khai trong môi trường thực tế.
Hãy ghi nhớ các vai trò này. Phần còn lại của bài viết chỉ mô tả cách sáu vai trò trao đổi với nhau.
Cấu trúc UserOperation
UserOperation là một gói trường thân thiện với JSON-RPC, sau khi được ký sẽ thể hiện ý định mà chưa ghi lên L1. Bố cục v0.7 có 11 trường logic:
sender— địa chỉ tài khoản thông minh.nonce— giá trị 256 bit, trong đó 192 bit cao là khóa (làn nonce song song), còn 64 bit thấp là số thứ tự. Nhờ vậy, ERC-4337 hỗ trợ nonce song song, khác với EOA vốn phải xử lý mọi thứ tuần tự.factoryvàfactoryData— dùng để triển khai lần đầu qua CREATE2; có giá trị null sau khi triển khai.callData— lệnh gọi mà tài khoản thông minh cần thực hiện sau khi được xác thực.callGasLimit,verificationGasLimit,preVerificationGas— ba ngân sách gas riêng biệt.maxFeePerGas,maxPriorityFeePerGas— có ngữ nghĩa EIP-1559 giống giao dịch thông thường.paymasterAndData(v0.6) được tách thànhpaymaster,paymasterVerificationGasLimit,paymasterPostOpGasLimit,paymasterData(v0.7).signature— các byte không có định dạng cố định mà tài khoản thông minh diễn giải theovalidateUserOpriêng.
Ví quyết định cơ chế chữ ký. ECDSA trên secp256k1 là lựa chọn phổ biến, nhưng xác minh P-256/passkey, đa chữ ký, ngưỡng khôi phục xã hội và người ký bằng khóa phiên đều có thể hoạt động sau cùng một giao diện. Chính sự linh hoạt đó là mục tiêu cốt lõi.
Từ đầu đến cuối: điều gì xảy ra khi tài khoản thông minh hoán đổi USDC lấy ETH
Hãy theo dõi một giao dịch hoán đổi thực tế để thấy các vai trò hoạt động theo thứ tự.
- Người dùng chạm vào “Hoán đổi” trong giao diện ví. Ví tạo UserOperation:
sender = 0xUserSafe,callData = swapUSDCforETH(amount)hướng đến Uniswap. - Ước tính gas. Ví gọi
eth_estimateUserOperationGastrên RPC của bundler. Bundler mô phỏng thao tác với EntryPoint rồi trả về ba giới hạn gas. - Người dùng ký. Ví băm UserOp cùng địa chỉ EntryPoint và chain ID, yêu cầu người dùng xác nhận (bằng passkey, khóa phần cứng hoặc phương thức khác), rồi đính kèm chữ ký.
- Gửi đi. UserOp đã ký được gửi qua
eth_sendUserOperationđến một hoặc nhiều bundler. Nó đi vào alt-mempool — một mạng P2P tách biệt với mempool giao dịch thông thường của Ethereum. - Bundler mô phỏng. Bundler mô phỏng lại bằng
eth_callvớisimulateValidation. Bundler kiểm tra các quy tắc truy cập bộ nhớ lưu trữ của ERC-7562: trong quá trình xác thực, UserOp chỉ được phép truy cập bộ nhớ lưu trữ của chính nó; nếu không, bundler có nguy cơ bị phá hoại. - Đóng gói. Bundler gộp UserOp này cùng tối đa khoảng 10 UserOp khác vào một lệnh gọi
handleOps([...userOps], beneficiary)đến EntryPoint. - Thực thi trên chuỗi. EntryPoint duyệt qua từng thao tác: gọi
validateUserOptrên người gửi, khấu trừ khoản trả trước, rồi thực thicallData. Giao dịch hoán đổi Uniswap được thực hiện từ tài khoản thông minh. - Hoàn phí. EntryPoint hoàn lại phần gas chưa dùng cho người gửi (hoặc paymaster), đồng thời thanh toán cho địa chỉ nhận tiền của bundler.
Nếu bước 5 thất bại, bundler loại bỏ thao tác và người dùng thấy mã lỗi AAxx. Các lỗi thường gặp nhất là AA21 (không trả khoản trả trước), AA23 (lỗi chữ ký), AA25 (nonce không hợp lệ), AA33 (paymaster hoàn tác) và AA40 (vượt giới hạn gas xác minh). Hãy ghi nhớ bảng này — bạn sẽ gặp các lỗi đó.
EntryPoint v0.6 và v0.7
v0.6 ra mắt vào tháng 3 năm 2023 tại 0x5FF1…2789. Phiên bản này hoạt động được, nhưng có ba vấn đề dai dẳng: một khối paymasterAndData duy nhất gộp lẫn ba chiều gas, cách đóng gói initCode bất tiện và cách tính gas khiến người gửi bị tính phí cao hơn thực tế. v0.7 đã khắc phục cả ba.
Những thay đổi chính trong v0.7 bạn nên biết:
- Địa chỉ:
0x0000000071727De22E5E9d8BAf0edAc6f37da032(hãy để ý các số 0 ở đầu — đây là địa chỉ được chọn bằng phương pháp vanity mining để giảm phí gas calldata, vì mỗi byte 0 tốn 4 gas, so với 16 gas cho byte khác 0). - Tách các trường paymaster:
paymaster,paymasterVerificationGasLimit,paymasterPostOpGasLimit,paymasterDatahiện là các trường riêng biệt. Nhờ đó, việc ước tính dễ hơn và khó bỏ sót một ngân sách hơn. - Tách factory: tương tự —
factoryvàfactoryDatalà các trường riêng thay vì được gộp tronginitCode. - Phạt gas chưa dùng: người gửi bị tính 10% phần
callGasLimit/paymasterPostOpGasLimitchưa dùng, nhằm hạn chế việc ước tính gas cao hơn nhiều so với mức cần thiết. - Các hook tương thích EIP-7702: v0.7 bổ sung cơ chế cho phép EOA thông thường tạm thời ủy quyền cho một triển khai tài khoản thông minh, tạo nền tảng cho lộ trình nâng cấp EIP-7702 được phát hành trong Pectra.
v0.6 vẫn đang hoạt động và vẫn được sử dụng — nhiều ví phải đến tận năm 2024 mới phát hành mô-đun tương thích v0.7. Trên hầu hết các chuỗi, cả hai EntryPoint cùng hoạt động song song trong nhiều năm.
Paymaster: ai trả phí gas
Paymaster là hợp đồng nắm giữ một khoản stake bằng ETH tại EntryPoint và đồng ý chi trả gas cho những UserOp đáp ứng chính sách của mình. Có ba loại phổ biến:
- Paymaster xác minh (được tài trợ). Backend ký phê duyệt ngoài chuỗi; paymaster xác minh chữ ký trên chuỗi và thanh toán. Loại này được các ứng dụng muốn giúp người dùng bắt đầu sử dụng mà không mất phí gas lựa chọn — chẳng hạn Coinbase Smart Wallet, Farcaster Frames và hầu hết các đợt phát hành NFT.
- Paymaster ERC-20. Người dùng trả bằng USDC, USDT hoặc DAI; paymaster hoán đổi sang ETH ở phía máy chủ (hoặc duy trì lượng ETH dự trữ). Pimlico, Biconomy và Stackup đều vận hành các paymaster công khai.
- Paymaster token dùng permit. Loại này sử dụng permit EIP-2612 để người dùng ký UserOp và chấp thuận token trong cùng một chữ ký.
validatePaymasterUserOp của paymaster chạy trong giai đoạn xác thực của EntryPoint. Nếu lệnh này bị hoàn tác, bạn sẽ gặp AA33. Nếu paymaster cạn stake, EntryPoint sẽ tịch thu khoản stake đó và bundler chịu khoản lỗ — vì vậy bundler duy trì danh sách uy tín của paymaster. ERC-7562 chuẩn hóa các quy tắc uy tín này để mempool của bundler chống spam. Những cơ chế nền tảng tương tự cũng cho thấy vì sao các biện pháp an toàn khi phê duyệt DeFi và dùng đa chữ ký có thể áp dụng thuận lợi trong thế giới 4337: mối đe dọa vẫn vậy, chỉ lớp vỏ đã thay đổi.
Mempool thay thế công khai và bundler riêng tư
Có hai cách đưa UserOp lên blockchain.
Mempool thay thế công khai: Các bundler tuân thủ ERC-7562 truyền UserOp qua mạng libp2p. Bất kỳ ai chạy một nút Pimlico, Stackup, Alchemy, Etherspot hoặc Voltaire đều có thể nhận được UserOp của bạn. Cách này không cần cấp quyền và chống kiểm duyệt, nhưng bạn vẫn đối mặt với những lo ngại về MEV như khi gửi giao dịch Ethereum thông thường: các searcher có thể xem UserOp của bạn trước khi nó được đưa vào khối.
Bundler riêng tư: Bạn gửi trực tiếp eth_sendUserOperation đến RPC của một nhà cung cấp. Họ mô phỏng, gom nhóm và gửi giao dịch riêng tư (thường qua Flashbots). Cách này nhanh hơn và được bảo vệ khỏi MEV, nhưng bạn phải tin rằng bundler sẽ không kiểm duyệt hoặc front-run giao dịch của bạn. Năm 2026, hầu hết ví dành cho người dùng phổ thông mặc định dùng bundler riêng tư.
Sự đánh đổi này tương tự như giữa mempool công khai và Flashbots Protect đối với giao dịch thông thường. Nếu bạn chưa xem vòng đời giao dịch từ thời L1, bài tổng quan đó giải thích những gì thay đổi khi bundler tham gia.
Aggregator, mức độ phổ biến và chi phí
Aggregator là các hợp đồng xác thực nhiều giao dịch cùng lúc chỉ bằng một lần kiểm tra chữ ký. Trường hợp sử dụng điển hình là BLS: bạn thu thập 50 UserOp được ký bằng BLS, gộp các chữ ký thành một lần kiểm tra pairing và tiết kiệm khoảng 95% lượng gas dùng cho chữ ký. Việc áp dụng còn chậm vì khó xây dựng ví ký bằng BLS, còn khoản tiết kiệm gas chỉ đáng kể khi khối lượng giao dịch lớn. Tính đến giữa năm 2026, chưa đến 1% UserOp trên mainnet sử dụng aggregator.
Số liệu áp dụng (Q1 2026, theo bundlebear.com): tổng cộng khoảng 380 triệu UserOp trên tất cả các chuỗi; Base, Polygon và Arbitrum chiếm phần lớn. Mainnet chiếm khoảng 6–8% — thấp nhất về khối lượng nhưng cao nhất về giá trị chuyển giao. Coinbase Smart Wallet, Farcaster và Argent chiếm phần lớn hoạt động của người dùng phổ thông.
Chi phí phụ trội: Một UserOp v0.7 tốn nhiều hơn khoảng 30,000–40,000 gas so với giao dịch EOA tương đương — phần chênh lệch đến từ vòng lặp EntryPoint, quá trình xác thực và các công việc phụ trợ khi gom giao dịch. Trên mainnet ở mức 20 gwei, khoản này tương đương một phần nhỏ của một đô la cho mỗi UserOp. Lần đầu triển khai tài khoản thông qua factoryData tốn thêm khoảng 250,000 gas. Trên các L2, nơi calldata chiếm phần lớn chi phí, phần phụ trội chỉ ở mức một chữ số phần trăm. UserOp được tài trợ chuyển chi phí này sang dApp; vì vậy, bạn thấy giao dịch miễn phí trên các ứng dụng phổ thông nhưng không phải trên các ứng dụng DeFi chuyên sâu. Bài tổng quan về phí giao dịch giải thích thêm cách khoản phụ trội này được tính trong các thị trường phí khác nhau.
Tóm lại: ERC-4337 gồm sáu vai trò (sender, UserOp, bundler, EntryPoint, paymaster, aggregator), một struct, hai địa chỉ EntryPoint bạn nên ghi nhớ và khoản phụ trội khoảng 30–40k gas. Đổi lại, bạn có thể dùng các cơ chế chữ ký tùy ý, được tài trợ gas, gom giao dịch và sử dụng nonce song song. Phần 3 của loạt bài chuyển sang EIP-7702 — hướng phát triển song song trong Pectra, cho phép EOA hiện có của bạn sử dụng cùng cơ chế này mà không phải đổi địa chỉ.



