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.
| Curve | Used for |
|---|---|
SECP256K1 | All EVM chains, Bitcoin, Tron |
ED25519 | Solana, Stellar |
Chain Support Table
| Chain | WalletChain enum value | CAIP-2 | Curve | Requires rpcUrl |
|---|---|---|---|---|
| Ethereum Mainnet | ETHEREUM_MAINNET | eip155:1 | SECP256K1 | No |
| Ethereum Sepolia | ETHEREUM_SEPOLIA | eip155:11155111 | SECP256K1 | No |
| Polygon | POLYGON_MAINNET | eip155:137 | SECP256K1 | No |
| Arbitrum One | ARBITRUM_MAINNET | eip155:42161 | SECP256K1 | No |
| Base | BASE_MAINNET | eip155:8453 | SECP256K1 | No |
| Optimism | OPTIMISM_MAINNET | eip155:10 | SECP256K1 | No |
| Avalanche C-Chain | AVALANCHE_MAINNET | eip155:43114 | SECP256K1 | No |
| Monad Mainnet | MONAD_MAINNET | eip155:143 | SECP256K1 | No |
| Celo | CELO_MAINNET | eip155:42220 | SECP256K1 | Yes |
| Tron | TRON_MAINNET | tron:mainnet | SECP256K1 | Yes |
| Bitcoin | BITCOIN_MAINNET | bip122:000000000019d6689c085ae165831e93-p2wpkh | SECP256K1 | Yes |
| Solana | SOLANA_MAINNET | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | ED25519 | No |
| Stellar | STELLAR_MAINNET | stellar:pubnet | ED25519 | Yes |
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.