EVM Sub-Protocol

The EVM sub-protocol defines how WalletPair sessions interact with EIP-155 compatible chains (Ethereum, Polygon, Arbitrum, Base, etc.). It is one of several sub-protocols that plug into the chain-agnostic core protocol.

Namespace: evm · Version: 1 · CAIP-2 prefix: eip155

All methods use the wallet_ prefix. Requests and responses are JSON objects encrypted end-to-end by the core protocol.

Methods

MethodRequiredDescription
wallet_getAccountsYesReturn authorized accounts. Must not prompt.
wallet_signTransactionYesSign a transaction without broadcasting. Returns signed RLP.
wallet_sendTransactionNoSign and broadcast. Optional — cold wallets omit this.
wallet_signMessageYesEIP-191 personal sign. Not chain-bound.
wallet_signTypedDataYesEIP-712 structured data signature.
wallet_switchChainYesSwitch active chain. Must also emit chainChanged.
wallet_addChainNoAdd a new chain to wallet.
wallet_watchAssetNoTrack a token (ERC-20/721/1155).

Events

EventDescription
accountsChangedAccounts list changed. Empty array = all access revoked.
chainChangedActive chain changed.
disconnectWallet-initiated session end. Reasons: user_closed, session_revoked, wallet_locked.

Error Codes

CodeMeaning
user_rejectedUser declined in wallet UI
unauthorizedAccount not authorized for this session
invalid_paramsMalformed or missing parameters
unsupported_chainChain not in capabilities
unsupported_methodMethod not in capabilities
insufficient_fundsBalance too low
nonce_too_lowNonce already used
gas_estimation_failedGas estimation reverted
tx_rejectedNetwork rejected the transaction
internal_errorUnexpected wallet error

Data Encoding

Data TypeEncoding
Addresses0x + 40 hex chars (EIP-55 checksum)
Values, nonce, gas0x hex string, no leading zeroes except 0x0
Signed transactions0x hex string (full RLP)
Signatures0x hex string, 65 bytes (r + s + v)
Chain IDs (CAIP-2)eip155:<decimal>
Chain IDs (tx)0x hex