Developer reviewing smart contract architecture diagrams on a glass wall in a modern WeWork space, standing desk in background, natural industrial aesthetic, candid engineering moment.
Protocols

Integrating WalletConnect with Account Abstraction (ERC-4337)

Patterns for adapting the WalletConnect session to work with smart accounts, including representing a smart account's address as a CAIP-10 identifier and handling userOp signing flows. Affects wallet SDK teams and dapp developers adopting ERC-4337.
introduction
SMART ACCOUNTS AND WALLETCONNECT

Introduction

Adapting the WalletConnect session model to work with ERC-4337 smart accounts requires careful handling of CAIP-10 identifiers and a shift from `eth_sign`-style methods to `userOp` signing flows.

Integrating WalletConnect with Account Abstraction (ERC-4337) is not a simple drop-in replacement. The core challenge is that a smart account's address is a deterministic contract address, not a private-key-derived EOA. This immediately impacts how a wallet represents the account in a session. The canonical CAIP-10 identifier must be constructed using the smart account's deterministic address, and the wallet must be prepared to prove on-chain deployment status to a dapp that may expect a counterfactual account.

The operational shift for wallet SDK teams is in the signing flow. A standard WalletConnect session uses personal_sign or eth_signTypedData to authenticate the user. For an ERC-4337 smart account, the fundamental action is signing a UserOperation. Dapps integrating with smart accounts must therefore request eth_sendUserOperation or a custom wallet_signUserOperation method, and the wallet must handle the complex gas estimation, paymaster data, and signature aggregation logic internally before submitting to a bundler. This changes the trust model: the dapp delegates transaction construction and gas sponsorship logic to the wallet.

For builders, the integration surface is multi-layered. A dapp must first check if a connected CAIP-10 address is a smart account using ERC-1271 or by checking for bytecode at the address. It must then adapt its session proposal to request the correct JSON-RPC methods for userOp signing. Wallets must manage the session's requiredNamespaces to signal ERC-4337 capability. Chainscore Labs can review this entire integration path—from CAIP-10 construction and session negotiation to userOp signing and bundler submission—to ensure compatibility with the AA transaction lifecycle and prevent silent failures in multi-chain sessions.

WALLETCONNECT + ERC-4337 COMPATIBILITY

Integration Quick Facts

Key operational changes and compatibility considerations when adapting WalletConnect sessions for smart accounts using the ERC-4337 transaction flow.

AreaWhat changesWho is affectedAction

Account Identifier

A smart account address must be represented as a CAIP-10 identifier (e.g., eip155:1:0xSmartAccount) instead of a raw hex string.

Wallet SDK teams, dapp frontends

Verify that all session proposals and responses use CAIP-10 for smart account addresses.

Signing Method

The standard eth_sign or personal_sign flow is replaced by eth_sendUserOperation or a custom wallet_signUserOperation method.

Wallet SDK teams, dapp backends

Implement and test the userOp signing flow; do not assume EOA signing methods will work.

Session Scoping

A session authorized for a smart account must scope permissions to the factory-deployed address, not a counterfactual address, to prevent replay issues.

Wallet developers, dapp session managers

Ensure session approval logic waits for counterfactual deployment or scopes to the deterministic address.

Chain ID Resolution

ERC-4337 deployments on new chains require a registered CAIP-2 chain ID; using an unregistered EIP-155 integer can break session negotiation.

Multi-chain dapp architects

Validate that the target chain's CAIP-2 ID is registered in the WalletConnect namespace registry.

Transaction Lifecycle

A userOp is not final when signed; dapps must monitor the bundler and EntryPoint for inclusion, not just wait for a transaction hash.

Dapp frontend and backend engineers

Update transaction monitoring logic to track userOpHash and EntryPoint events, not standard tx hashes.

Bundler Dependency

The wallet or dapp must select a bundler endpoint; a faulty bundler can delay or drop userOps, causing a broken UX.

Wallet infrastructure operators, dapp DevOps

Configure a reliable bundler and implement fallback logic; monitor bundler health.

Signature Validation

Smart accounts use validateUserOp which may have different replay protection than EOA nonces; signature verification logic must be updated.

Security engineers, wallet SDK teams

Review the smart account's replay protection and ensure the wallet's signing flow matches the account's validation scheme.

Paymaster Integration

If a paymaster sponsors gas, the userOp must include valid paymasterAndData; a missing or expired signature will cause the op to revert.

Dapp developers, paymaster services

Verify paymaster signature validity and expiry before sending the userOp to the bundler.

technical-context
ADAPTING THE SESSION FOR SMART ACCOUNTS

Technical Architecture and UserOp Lifecycle

How the WalletConnect session model and CAIP-10 identifiers must be adapted to represent smart accounts and handle the distinct lifecycle of ERC-4337 UserOperations.

Integrating WalletConnect with ERC-4337 account abstraction requires a fundamental shift in how a session represents the actor. In a standard Externally Owned Account (EOA) flow, the CAIP-10 identifier (eip155:1:0x...) points to a private-key-controlled address that signs a transaction payload. For a smart account, this identifier must point to the SmartAccount contract address, which is the persistent on-chain identity. The session's signing authority is not the account itself but the owner key(s) authorized to validate UserOperations on its behalf. This distinction is critical for dapp backends that use the CAIP-10 as a canonical user ID; they must be aware that the signing key may rotate without changing the account's address.

The operational lifecycle diverges sharply from a standard eth_sendTransaction flow. Instead of a single signing step, the wallet must handle a userOp signing flow. The dapp constructs a UserOperation struct, the wallet presents its fields (sender, nonce, callData, verificationGasLimit, etc.) for user review, and the wallet's embedded signer produces a signature over the userOpHash. The wallet then returns this signature to the dapp, which packages it into the UserOperation.signature field and submits it to a bundler. This changes the trust boundary: the dapp is responsible for gas estimation and bundler submission, while the wallet SDK must correctly implement the userOpHash computation and signature encoding scheme specific to the smart account's validation logic.

For teams implementing this pattern, the primary risks are identity mismatches and signature incompatibility. A dapp that treats the owner address as the user's identity will break composability with smart accounts. A wallet that signs the userOpHash using a standard eth_sign flow instead of the account's prescribed scheme will produce an invalid signature. Chainscore Labs can review the full integration—from CAIP-10 construction and userOp signing in the wallet SDK to bundler submission and signature verification in the dapp—to ensure compatibility with the ERC-4337 transaction lifecycle and prevent these common failure modes.

ERC-4337 INTEGRATION IMPACT

Affected Systems and Actors

Wallet SDK Teams

Smart account wallet developers must adapt the WalletConnect session to represent a smart account's address as a CAIP-10 identifier and handle userOp signing flows instead of traditional transaction signing. This requires modifying the session proposal to advertise ERC-4337 capabilities and ensuring the wallet can construct, sign, and return userOp objects within the WalletConnect JSON-RPC pipeline.

Key actions include implementing the eth_sendUserOperation method, managing paymaster selection during session negotiation, and handling bundler submission feedback. Teams should verify that session persistence works correctly when the smart account is not yet deployed, as counterfactual addresses must remain stable across session resumptions.

implementation-impact
AA INTEGRATION CHECKLIST

Implementation Impact and Required Changes

Adapting WalletConnect sessions for ERC-4337 smart accounts requires changes to account representation, signing flows, and session management. The following areas demand specific engineering attention.

01

CAIP-10 Identifier Construction for Smart Accounts

Wallets must represent a smart account's deterministic or counterfactual address as a standard CAIP-10 identifier (e.g., eip155:1:0x...). This is the canonical key for session state. The integration must ensure the address is available before deployment and remains stable post-deployment. Dapps relying on CAIP-10 for identity resolution must be tested against undeployed accounts to prevent lookup failures.

02

UserOperation Signing Flow Integration

The standard eth_sign and personal_sign methods are insufficient for ERC-4337. The wallet must handle eth_sendUserOperation or a custom wallet_signUserOperation method within the WalletConnect session. This requires the wallet to construct, sign, and potentially submit the UserOp to a bundler. Dapps must be updated to request this method and handle the asynchronous lifecycle of a UserOp instead of a standard transaction hash.

03

Session Scoping with Required Namespaces

During the CAIP-25 session proposal, a dapp must explicitly request the eip155 namespace with support for ERC-4337 capabilities. Wallets should scope the session to only expose accounts that are capable of UserOp signing. Failing to negotiate this correctly can lead to a dapp requesting a UserOp signature from an EOA-only wallet, breaking the user flow. Teams should review their CAIP-25 handshake logic for this capability check.

04

Transaction Simulation and User Consent

Unlike a simple value transfer, a UserOp contains complex callData that is opaque to the user. Wallet SDKs must integrate simulation services to decode the UserOp into a human-readable format before presenting it for user approval within the WalletConnect session. This is a critical security control to prevent blind signing of malicious operations. The consent screen must clearly show the target contract and the impact of the execution.

05

Bundler and Paymaster Configuration

The wallet is responsible for submitting the signed UserOp to a bundler and potentially selecting a paymaster for gas sponsorship. This infrastructure choice is a new trust assumption in the session flow. Wallet teams must configure reliable bundler endpoints and implement fallback logic. Dapp teams should be aware that transaction submission and confirmation latency will differ from standard EOA transactions, requiring updated UX patterns.

06

Session Resumption and Account State Changes

A smart account's state can change between sessions due to module upgrades, ownership transfers, or key rotations. WalletConnect session resumption logic must re-validate the account's capabilities and signing authority. A session established with a specific owner key may become invalid if that key is rotated out. Wallets should implement a session_update flow to inform dapps of critical account state changes without requiring a full re-pairing.

WALLETCONNECT AND ERC-4337

Integration Risk Matrix

Risk areas, failure modes, and required actions for wallet and dapp teams integrating WalletConnect sessions with ERC-4337 smart accounts and userOp signing flows.

AreaFailure ModeAffected ActorsSeverityMitigation / Action

CAIP-10 Identifier Construction

Smart account address is not a valid EOA; using it directly in legacy CAIP-10 parsing may cause downstream validation failures in dapps or block explorers.

Wallet SDK teams, dapp frontends

High

Verify that the smart account's deterministic address is correctly encoded as the CAIP-10 account address. Audit all address validation logic to ensure it does not reject contract addresses.

Session Request Handling

A dapp sends a standard eth_sendTransaction request, but the smart account wallet requires a userOp to be built and signed via eth_sendUserOperation. The session model does not natively distinguish between these flows.

Wallet developers, dapp developers

High

Wallets must intercept standard transaction methods and translate them into userOp preparation. Dapps should be updated to detect ERC-4337 wallets and use the appropriate JSON-RPC methods to avoid silent failures.

userOp Signing Flow

The wallet signs a userOp hash that does not include all required fields (e.g., paymasterAndData, callGasLimit), leading to on-chain revert or bundler rejection.

Wallet SDK teams, bundler operators

Critical

Implement strict userOp hashing per the ERC-4337 spec. Review the signing domain and message format to ensure compatibility with the target EntryPoint contract version.

Multi-Chain Session Scoping

A CAIP-25 session authorizes a smart account on Ethereum mainnet, but the same smart account address on an L2 is a different account or does not exist, leading to cross-chain replay or failed transactions.

Wallet developers, multi-chain dapps

High

Wallets must scope authorizations per chain and validate that the smart account is deployed at the same address on the authorized chain. Dapps should verify chain-specific account state before submitting userOps.

Paymaster Integration

A dapp intends to sponsor gas via a paymaster, but the wallet's userOp construction does not set the paymasterAndData field, causing the user to pay for gas unexpectedly.

Dapp developers, paymaster services

Medium

Dapps must communicate paymaster sponsorship intent to the wallet via custom session parameters. Wallets should expose a capability to signal paymaster support during session negotiation.

Bundler Endpoint Discovery

The wallet submits a userOp to a bundler that is not trusted by the dapp or has different mempool policies, causing transaction delays or front-running.

Wallet developers, dapp backends

Medium

Wallets should allow dapps to specify a preferred bundler endpoint during session establishment. Dapps should verify the bundler's reputation and mempool policy alignment.

Session Revocation on Account Upgrade

A smart account is upgraded to a new implementation, but the existing WalletConnect session is still bound to the old account logic, leading to unexpected behavior.

Wallet developers, smart account users

Medium

Wallets must detect account implementation changes and prompt the user to re-establish sessions. Dapps should monitor for account implementation changes and invalidate sessions accordingly.

Signature Validation in SIWE

A dapp uses CAIP-222 (SIWE) for authentication, but the smart account's signature is an ERC-1271 isValidSignature check, which the dapp's backend does not support.

Dapp backend teams, identity protocols

High

Dapp backends must implement ERC-1271 signature validation to verify smart account signatures. Chainscore can audit the SIWE verification pipeline for ERC-4337 compatibility.

ERC-4337 + WALLETCONNECT READINESS

Integration Rollout Checklist

A practical checklist for wallet and dapp teams integrating WalletConnect with ERC-4337 smart accounts. Each item identifies a critical integration point, explains its operational significance, and defines the signal that confirms readiness.

What to check: The wallet must construct the session's account identifier using the smart account's deterministic address, not the EOA that signs the UserOperation.

Why it matters: The CAIP-10 identifier is the canonical key for session state and authorization. Using the EOA address breaks the dapp's ability to track the user's smart account state, leading to balance display errors and failed transaction simulations.

Readiness signal: The sessionProposal response contains a CAIP-10 string (e.g., eip155:1:0xSmartAccountAddress) that matches the sender field in the UserOperation struct.

Chains We Build On

Looking to build on a specific blockchain?

We build smart contracts, DeFi applications, wallets, tokenization platforms, and blockchain infrastructure across the major ecosystems teams choose today. That includes Ethereum, Arbitrum, Optimism, Polygon, Avalanche, Solana, Sui, Aptos, Hedera, Stellar, and NEAR, with support for additional EVM and non-EVM networks based on your product requirements.

EVM ecosystems

  • Ethereum logo
    Ethereum
  • Arbitrum logo
    Arbitrum
  • Optimism logo
    Optimism
  • Polygon logo
    Polygon
  • Avalanche logo
    Avalanche
  • Cronos logo
    Cronos

Non-EVM ecosystems

  • Solana logo
    Solana
  • Sui logo
    Sui
  • Aptos logo
    Aptos
  • Hedera logo
    Hedera
  • Stellar logo
    Stellar
  • NEAR logo
    NEAR

Additional ecosystems

  • Polkadot logo
    Polkadot
  • Cosmos logo
    Cosmos
  • TON logo
    TON
  • Cardano logo
    Cardano
  • Algorand logo
    Algorand
  • Tempo logo
    Tempo

Also available for Base, appchains, custom EVM networks, and cross-chain product architecture.

ERC-4337 & WALLETCONNECT INTEGRATION FAQ

Frequently Asked Questions

Common questions from wallet SDK teams and dapp developers adapting WalletConnect sessions to the ERC-4337 account abstraction transaction lifecycle.

A smart account's address should be formatted as a standard CAIP-10 identifier using the eip155 namespace: eip155:<chain_id>:<smart_account_address>. The address must be the deterministic CREATE2 or counterfactual address of the smart account, not the address of the factory or a proxy implementation. Wallets must ensure the address is checksummed according to EIP-55. This canonical representation is critical for session state management; using an incorrect address can lead to dapps failing to resolve the user's identity or querying on-chain state for the wrong contract. Chainscore can review your account resolution logic to prevent cross-chain identity mismatches.

Trusted by Industry Leaders

Delivering blockchain solutions for 5+ years.

We have partnered with 50+ leading DeFi protocols, NFT ecosystems, and fintech innovators to build secure, scalable, and capital-efficient blockchain products.

Selected Partners & Clients

ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
“I've been working with Chainscore Labs for last 3+ years, they've consistently delivered with strong ownership across multiple projects. The team is reliable and detail-oriented.”
L
Lee Erswell
CEO, Telos Foundation
how to get started

How to get started?

If you're looking for blockchain integration, ChainScore Labs has 5+ years of experience helping teams build and integrate exchanges, wallets, smart contracts, tokenization solutions, and protocol-connected products, we can help you choose the right path, integrate securely, and get to production faster. Our team consists of experienced blockchain developers and architects who can help you with your blockchain integration needs.

01

Exploration & Strategy

Define your product goals and choose the right blockchain architecture for your use case.

02

Architecture & Design

Design the smart contracts, tokenomics, and security parameters of your system.

03

Development & Integration

Build and integrate with wallets, oracles, and front-end dApps for a seamless experience.

04

Security & Launch

Comprehensive audits followed by a risk-managed mainnet deployment to protect your users.

Start a build

Need a blockchain engineering team?

Send the project context and we will respond with next steps, scope questions, and a practical path to delivery.