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

  1. Start Bundler:

yarn bundler --config ./localconfig/bundler.config.json --unsafe --auto

  1. Send UserOperation with Paymaster:

yarn runop \ --deployFactory \ --network http://localhost:18545 \ --entryPoint 0x5FF1...2789 \ --paymaster 0xAaBb...1122 \ --verifierMnemonic ./verifier.txt \ --pmValidFor 300 \ --pmAutoTopUp

  1. 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?