Skip to main content

EVM Blockchains

WalletConnect namespace: eip155.

Chains are offered according to the user’s mainnet/testnet mode. Use CAIP-2 IDs with the eip155: prefix (not eip:).

Mainnet​

NetworkCAIP-2 Chain ID
Flareeip155:14
Songbirdeip155:19
Ethereumeip155:1
Arbitrum Oneeip155:42161
Optimismeip155:10
Baseeip155:8453
Polygoneip155:137
BNB Smart Chaineip155:56
XDCeip155:50
HyperEVMeip155:999

Testnet​

NetworkCAIP-2 Chain ID
Flare Coston2eip155:114
Songbird Costoneip155:16
Ethereum Sepoliaeip155:11155111
Arbitrum Sepoliaeip155:421614
Optimism Sepoliaeip155:11155420
Base Sepoliaeip155:84532
Polygon Amoyeip155:80002
BNB Smart Chain testneteip155:97
XDC Apothemeip155:51
HyperEVM testneteip155:998

Getting the user’s address​

Prefer the approved session accounts (CAIP-10). You can also call eth_accounts / eth_requestAccounts on the session.

evm-accounts.js
// From session (always available after approval)
const caip10 = session.namespaces.eip155?.accounts?.[0];
// e.g. "eip155:14:0xabc…"
const address = caip10?.split(":")[2];

// Or via JSON-RPC on the session
const accounts = await client.request({
topic: session.topic,
chainId: "eip155:14",
request: { method: "eth_accounts", params: [] },
});
// accounts === ["0xabc…"]

Methods​

Supported for WalletConnect session requests:

MethodNotes
eth_accountsApproved accounts for the session
eth_requestAccountsMay prompt if needed
eth_sendTransactionSign and submit
eth_signTypedDataEIP-712
eth_signTypedData_v3EIP-712 v3
eth_signTypedData_v4EIP-712 v4
personal_signMessage signing
wallet_requestPermissionseth_accounts
wallet_watchAssetTrack ERC-20
wallet_scanQRCodeDevice QR scanner

wallet_switchEthereumChain / wallet_addEthereumChain may appear in wallet metadata; treat session chainId on each request as the source of truth for which chain the call targets.

Request chain​

Session requests must include a chainId in CAIP-2 form (for example eip155:14). Bifrost does not emit EVM chainChanged / accountsChanged over WalletConnect when the user changes network in the app. Plan UI around explicit chain selection in your session namespaces.

Connect + send transaction example​

evm-connect-and-send.js
import { SignClient } from "@walletconnect/sign-client";

const client = await SignClient.init({
projectId: process.env.REOWN_PROJECT_ID,
metadata: {
name: "My EVM Dapp",
description: "Example",
url: "https://example.com",
icons: ["https://example.com/icon.png"],
},
});

const chainId = "eip155:14"; // Flare

const { uri, approval } = await client.connect({
requiredNamespaces: {
eip155: {
methods: [
"eth_accounts",
"eth_requestAccounts",
"eth_sendTransaction",
"personal_sign",
"eth_signTypedData_v4",
],
chains: [chainId],
events: [],
},
},
});

// Desktop: show `uri` as a QR code.
// Mobile: open bifrostwallet://wc?uri=${encodeURIComponent(uri)}
const session = await approval();

const from = session.namespaces.eip155.accounts[0].split(":")[2];

const txHash = await client.request({
topic: session.topic,
chainId,
request: {
method: "eth_sendTransaction",
params: [
{
from,
to: "0x0000000000000000000000000000000000000001",
value: "0x0",
data: "0x",
},
],
},
});

personal_sign example​

evm-personal-sign.js
const address = session.namespaces.eip155.accounts[0].split(":")[2];

const signature = await client.request({
topic: session.topic,
chainId: "eip155:14",
request: {
method: "personal_sign",
params: [
// hex-encoded UTF-8 message, then address
"0x48656c6c6f20426966726f7374",
address,
],
},
});

eth_signTypedData_v4 example​

evm-typed-data.js
const address = session.namespaces.eip155.accounts[0].split(":")[2];

const signature = await client.request({
topic: session.topic,
chainId: "eip155:14",
request: {
method: "eth_signTypedData_v4",
params: [
address,
JSON.stringify({
types: {
EIP712Domain: [
{ name: "name", type: "string" },
{ name: "version", type: "string" },
{ name: "chainId", type: "uint256" },
{ name: "verifyingContract", type: "address" },
],
Mail: [{ name: "contents", type: "string" }],
},
primaryType: "Mail",
domain: {
name: "Example",
version: "1",
chainId: 14,
verifyingContract: "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC",
},
message: { contents: "Hello Bifrost" },
}),
],
},
});

References​