WalletPair

WalletPair lets a dApp use a Wallet on another device. It is a short list of functions, each with a name, an input and an output, that a dApp calls on a Wallet, and one event the Wallet sends back. It supports Ethereum and other EVM chains only.

The messages travel over PeerConnect, which provides the relay, pairing, end-to-end encryption and reliable delivery. WalletPair runs no servers of its own.

How it works

  1. The dApp creates a PeerConnect room and shows walletpair: followed by the invite as a QR code.
  2. The Wallet scans it and joins the room.
  3. The dApp calls walletpair_connect with the networks it wants. The user approves in the Wallet, and the dApp receives the accounts and active chain of each approved network.
  4. The dApp calls functions such as personal_sign or eth_sendTransaction. The Wallet asks the user, then answers.
  5. Whenever accounts or chains change, the Wallet sends a state event.
  6. Either side ends the session by closing the room.

Functions

NetworkFunctions
Allwalletpair_connect, walletpair_cancel
EVMpersonal_sign, eth_signTypedData_v4, eth_sendTransaction, wallet_sendCalls, wallet_getCallsStatus, wallet_getCapabilities, wallet_switchEthereumChain, wallet_addEthereumChain

Inputs, outputs and errors are in the Protocol: the Core and one document per network.

Try it

The demo runs a dApp and a test-only wallet side by side in this site, connected through the extension, on all three networks. The demo wallet also works on its own with any dApp in another tab.

For dApp developers

With the browser extension installed, your dApp needs no changes. The extension offers an EIP-1193 provider announced through EIP-6963, the way EVM applications look for wallets. wagmi, viem and ethers find it like any installed wallet.

For Wallet developers

A Wallet joins the room from the QR code with a PeerConnect client, answers the functions of the networks it supports, and sends the state event. The Protocol is all there is to implement; its test vectors check your parsing and give the exact signatures to expect for fixed keys.