BlockchainAppMaker Get a quote

Web3

Web3 Wallet Development: How a Wallet for dApps Is Built

Web3 wallet development means building the app that holds a user's keys, connects to decentralized apps and signs what those apps request. This guide explains the account models, the standards a wallet must support, the security features that prevent losses, and what a build costs.

This page covers wallets as the link between users and dApps. The guide to crypto wallet development covers wallets for holding and sending coins across chains, and the MetaMask-like wallet guide covers browser extensions modeled on MetaMask.

What is a Web3 wallet?

A Web3 wallet is software that controls a blockchain account and lets the owner approve actions in decentralized apps. The wallet does not store coins; they stay on the blockchain, and the wallet holds the key that can move them.

A Web3 wallet does three jobs:

  • It creates and protects the key or keys that control the account.
  • It connects to a dApp, such as an exchange or a game, and receives requests from that dApp.
  • It shows the user what each request will do and signs the request only after the user approves.

The term overlaps with "crypto wallet". People say "Web3 wallet" when they mean a wallet that talks to smart contracts and dApps. A simple Bitcoin wallet that only sends and receives coins is usually called a crypto wallet.

Account models in Web3 wallet development

The first design decision is the type of account the wallet controls. The table compares the four common models on Ethereum and EVM chains.

ModelHow it worksStrengthsWeaknesses
Externally owned account (EOA) with a seed phraseOne private key controls the account. The user backs up the key as a 12- or 24-word phrase.Works with every dApp. Simple to build.A lost phrase means a lost account. The account has no built-in recovery.
MPC walletThe key is split into shares on the device, a server and a backup. A signature needs a set number of shares.No single device holds the full key. Users can recover access.The wallet depends on the provider's servers. Outside reviewers find the setup harder to audit.
Smart account (ERC-4337)The account is a smart contract. The contract decides which signatures are valid, so it can accept passkeys, several signers or spending limits.Batched actions, sponsored gas, social recovery and session keys.Deployment and each action cost more gas. The wallet needs bundler infrastructure.
EOA with EIP-7702 delegationAn existing EOA points to smart-account code and keeps its address. Ethereum added this in the Pectra upgrade on May 7, 2025.Smart-account features without a new address.A user can be tricked into delegating to malicious code.

ERC-4337 is a final standard. A smart account sends a "UserOperation" to a separate mempool, where a bundler collects these operations and submits them to a shared EntryPoint contract. A paymaster contract can pay the gas for the user. EIP-7702 is the protocol change that lets an ordinary account use the same kind of contract code.

Many consumer apps now combine these parts. The user signs in with a passkey, a smart account sits underneath, and a paymaster pays for the first transactions. The user then does not need to buy a gas token before trying the app. The Fusaka upgrade of December 2025 added a precompile for the P-256 curve (EIP-7951), which is the curve that passkeys use, so smart accounts on Ethereum can now check passkey signatures at lower gas cost.

Standards for connecting to dApps

A Web3 wallet is only useful if dApps can find it and send it requests. These standards define that link:

  • EIP-1193 defines the JavaScript provider that a dApp calls to ask for accounts and signatures.
  • EIP-6963 lets several browser wallets announce themselves on the same page, so one extension does not overwrite another.
  • WalletConnect pairs a mobile wallet with a desktop dApp over an encrypted relay. The company behind it renamed itself Reown in 2024. Its WalletKit SDK is for wallet builders, and its AppKit SDK is for dApps.
  • EIP-712 defines typed data, so the wallet can show a structured message such as a trade order or a token permit in readable form.
  • EIP-4361 (Sign-In with Ethereum) defines the format of a login message.
  • EIP-5792 is a final standard for sending several calls in one request. A dApp first asks wallet_getCapabilities whether the wallet supports atomic batches, then sends the batch with wallet_sendCalls.

The Web3 dApp development guide covers the dApp side of this connection.

Security features that prevent losses

Most wallet drains come from signatures that users did not understand, and broken cryptography causes far fewer losses. A Web3 wallet therefore needs these features:

  • Transaction simulation. The wallet runs the transaction against current chain state before signing and then shows the asset changes in plain words, for example "you send 500 USDC and receive nothing".
  • Approval warnings. The wallet flags unlimited token allowances, NFT "set approval for all" requests, permit signatures and EIP-7702 delegations to unknown contracts.
  • Allowance management. A screen lists every approval the account has given and lets the user revoke each one.
  • Phishing and address-poisoning defenses. The wallet checks domains against blocklists, warns on a first payment to a new address and shows full addresses, because attackers create lookalike addresses that match a shortened form.
  • Secure key storage. On mobile, keys stay in the device's secure enclave or keystore, and browser extensions encrypt keys at rest. No key material goes into logs or analytics.
  • Independent audits. Auditors review the smart-account contracts and the key-management code before launch. The smart contract audit guide explains that process.

Custodial or non-custodial

A wallet is custodial if the company can move user funds without the user's approval. A custodial service can need a license, such as crypto-asset service provider authorization under the EU's MiCA regulation or money transmitter licenses in US states. A non-custodial wallet avoids most of that licensing work, but the user then carries the risk of losing access, and smart-account recovery and MPC designs exist to reduce that risk. The custody choice shapes both the architecture and the legal work, so teams make it before design starts.

This section is general information, not legal advice. Whether a wallet design counts as custodial depends on the facts and the country. Get advice from a lawyer before launch.

Build steps

  1. Choose the account model and the chains. Each extra chain family, such as EVM, Solana or Bitcoin, adds its own signing, fee and indexing work.
  2. Design the key lifecycle. Plan how the wallet creates a key, backs it up, recovers it, moves it to a new device and responds to a theft.
  3. Build the signing core and the dApp connection, then add simulation and warnings on top.
  4. Connect the infrastructure. The wallet needs RPC nodes, indexers for balances and history, price feeds, and bundlers and paymasters if it uses smart accounts.
  5. Audit the code and run a bug bounty before a public release.

Cost of Web3 wallet development

The figures below are estimates based on team size and time, not quotes. An EVM-only mobile wallet with smart accounts, simulation and dApp connection usually needs two to four engineers for four to six months before the audit. A wallet built into a single dApp with an embedded wallet SDK needs much less work. The table lists the main cost drivers.

Cost driverEffect on cost
Number of chain familiesEach family adds signing, fee estimation and indexing code.
Account modelSmart accounts add contracts, audits, bundlers and paymasters. MPC adds a server component or a provider fee.
PlatformsiOS, Android and a browser extension are three separate apps to build and maintain.
Security featuresSimulation and phishing checks need data services or in-house infrastructure.
Ongoing operationRPC and indexing fees, sponsored gas, and support for users who lose access.

The DeFi wallet guide covers swaps and staking inside a wallet, and the blockchain wallet development guide covers multi-chain wallet architecture.

Frequently asked questions

What is a Web3 wallet?

A Web3 wallet is an app that holds the keys to a blockchain account and connects to decentralized apps. The wallet shows what each dApp request will do and signs it after the user approves. The assets themselves stay on the blockchain.

What is the difference between a Web3 wallet and a crypto wallet?

The two terms overlap. "Web3 wallet" usually stresses the connection to dApps and the signing of smart contract calls. "Crypto wallet" can mean any app that stores and sends coins, including a simple Bitcoin wallet.

Are seed phrases going away?

Seed phrases still exist, but they are no longer the only option. Passkeys, MPC and smart-account recovery let a user start without a seed phrase. EIP-7702 lets an existing account gain smart-account features.

Can a wallet pay gas for its users?

Yes. An ERC-4337 paymaster or a relayer lets the app pay the fees, but the app needs limits on sponsored transactions, because free transactions attract bots.

Does a Web3 wallet need an audit?

Smart-account contracts need an audit, and the key-management and signing code should also get one, because a bug in a wallet usually means a loss of user funds that nobody can reverse.