Supported Chains

Explore chain support, curve abstraction, RPC handling, and share selection for supported blockchains.

Curve Abstraction

The SDK separates chains by their signing curve. When you call sign(), sendAssets(), or any enclave method, you pass the share for the curve that chain uses — not a chain-specific share. This means one wallet covers all chains.

CurveUsed for
SECP256K1All EVM chains, Bitcoin, Tron
ED25519Solana, Stellar

Chain Support Table

ChainWalletChain enum valueCAIP-2CurveRequires rpcUrl
Ethereum MainnetETHEREUM_MAINNETeip155:1SECP256K1No
Ethereum SepoliaETHEREUM_SEPOLIAeip155:11155111SECP256K1No
PolygonPOLYGON_MAINNETeip155:137SECP256K1No
Arbitrum OneARBITRUM_MAINNETeip155:42161SECP256K1No
BaseBASE_MAINNETeip155:8453SECP256K1No
OptimismOPTIMISM_MAINNETeip155:10SECP256K1No
Avalanche C-ChainAVALANCHE_MAINNETeip155:43114SECP256K1No
Monad MainnetMONAD_MAINNETeip155:143SECP256K1No
CeloCELO_MAINNETeip155:42220SECP256K1Yes
TronTRON_MAINNETtron:mainnetSECP256K1Yes
BitcoinBITCOIN_MAINNETbip122:000000000019d6689c085ae165831e93-p2wpkhSECP256K1Yes
SolanaSOLANA_MAINNETsolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpED25519No
StellarSTELLAR_MAINNETstellar:pubnetED25519Yes

Choosing the Right Share

Use WALLET_CHAINS[chain].curve to look up which share to pass at runtime:

import { WALLET_CHAINS, WalletChain } from "@tatumio/wallet-sdk";

const chain = WalletChain.SOLANA_MAINNET;
const curve = WALLET_CHAINS[chain].curve; // "ED25519"

await client.sendAssets({
  body: {
    share: shares[curve].share,  // shares.ED25519.share
    chain,
    to: "SolanaAddressHere",
    token: "NATIVE",
    amount: "0.5",
  },
});

Chain Configuration

getWalletChainConfig(chain) returns the full config object for a chain:

import { getWalletChainConfig, WalletChain } from "@tatumio/wallet-sdk";

const config = getWalletChainConfig(WalletChain.ETHEREUM_MAINNET);
// {
//   chainId: "eip155:1",
//   curve: "SECP256K1",
//   requiresRpcUrl: false,
//   tatumRpcNetwork: "ethereum-mainnet"
// }

RPC Handling

Automatic RPC Resolution

For chains where requiresRpcUrl is false, the SDK automatically resolves a Tatum RPC URL using your API key. You don't need to pass rpcUrl.

Chains with automatic RPC: Ethereum, Ethereum Sepolia, Polygon, Arbitrum, Base, Optimism, Avalanche, Monad, Solana.

Custom RPC URLs

For chains where requiresRpcUrl is true (Celo, Tron, Bitcoin, Stellar), you must supply an rpcUrl in the call body:

await client.sendAssets({
  body: {
    share: shares.SECP256K1.share,
    chain: WalletChain.TRON_MAINNET,
    to: "TRecipientAddress",
    token: "NATIVE",
    amount: "10",
    rpcUrl: "https://api.trongrid.io",
  },
});

You can also pass a custom rpcUrl on any chain to override the automatic one.