Account Abstraction Deployment Report
Environment: BlockDAG Network Version: EntryPoint v0.6, Bundler Service, Verifying Paymaster
1. Introduction
We have successfully deployed Account Abstraction (AA) components on the BlockDAG test network in line with ERC-4337 specifications.
This deployment includes:
EntryPoint v0.6 Contract – the central router for UserOperations.
Bundler Service – a spec-compliant service for UserOperation validation, mempooling, and bundling.
Verifying Paymaster Contract – an on-chain paymaster enabling sponsored (gasless) transactions with signature validation.
Together, these provide a secure and user-friendly foundation for gas abstraction and next-generation dApps.
2. Components Deployed
2.1 EntryPoint v0.6
Core contract validating and executing UserOperations.
Provides replay protection, batching, and signature verification.
Fully aligned with ERC-4337.
2.2 Bundler Service
The bundler was deployed using the Eth Infinitism reference implementation and extended for our BlockDAG environment.
Key Features:
Spec RPC Endpoints: eth_sendUserOperation, eth_estimateUserOperationGas, eth_getUserOperationReceipt, eth_getUserOperationByHash.
Validation Pipeline: Uses simulateValidation to ensure correctness before acceptance.
Mempool & Reputation: Valid UserOps are queued, invalid ones filtered with reputation checks.
Execution Flow: Validate → Prefund/Paymaster check → Mempool → Bundle → Submit → Event tracking.
Diagnostics: Detailed logging for signatures, prefund, gas fields, and execution results.
2.3 Verifying Paymaster Contract
The Verifying Paymaster allows transactions to be sponsored by an on-chain contract, removing the need for users to hold native gas tokens.
How It Works
The paymasterAndData field is built as:
paymaster(20 bytes)
+ abi.encode(uint48 validUntil, uint48 validAfter)
+ signature
Implementation in VerifyingPaymasterAPI.ts:
Ensures the local verifying signer matches the on-chain verifyingSigner.
Computes preVerificationGas with a placeholder 65-byte signature.
Signs getHash(op, validUntil, validAfter).
If PVG changes, re-computes and re-signs.
Runner Usage
The runner (runop.ts) provides flexible integration:
--paymaster <address> – specify Paymaster contract.
--verifierMnemonic <file> – load verifying signer.
--pmValidFor <seconds> – define validity window.
--pmAutoTopUp – automatically fund Paymaster deposit if required.
It verifies both account owner signatures and Paymaster signatures before sending.
Prerequisites
EntryPoint deployed and registered.
Paymaster staked and funded on-chain.
Verifying signer configured on-chain and locally available.
Outputs & Diagnostics
Logs PVG components and computed hashes.
Signature length and recovery checks.
Detailed failure dumps for gas or validation errors.
Example Workflow
Start Bundler:
yarn bundler --config ./localconfig/bundler.config.json --unsafe --auto
Send UserOperation with Paymaster:
yarn runop \ --deployFactory \ --network http://localhost:18545 \ --entryPoint 0x5FF1...2789 \ --paymaster 0xAaBb...1122 \ --verifierMnemonic ./verifier.txt \ --pmValidFor 300 \ --pmAutoTopUp
paymasterAndData Layout:
0x<20-byte paymaster address>
<validUntil: 48 bits>
<validAfter: 48 bits>
<signature: dynamic length>
3. Benefits to the User
Gasless Transactions: Users interact without holding native tokens.
Custom Sponsorship Policies: Time-bound or conditional approvals.
Diagnostics & Security: Strong validation checks and transparent failure reporting.
Future-proof: Compatible with ERC-4337 tooling and SDKs.
Last updated
Was this helpful?