Supported Chains
Explore mainnet and testnet 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 |
Supported Mainnets
| Chain | WalletChain enum value | CAIP-2 | Curve | Requires rpcUrl |
|---|---|---|---|---|
| Monad | MONAD_MAINNET | eip155:143 | SECP256K1 | |
| Ethereum | ETHEREUM_MAINNET | eip155:1 | SECP256K1 | No |
| Solana | SOLANA_MAINNET | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | ED25519 | No |
| Stellar | STELLAR_MAINNET | stellar:pubnet | ED25519 | Yes |
| Tron | TRON_MAINNET | tron:mainnet | SECP256K1 | Yes |
| Bitcoin | BITCOIN_MAINNET | bip122:000000000019d6689c085ae165831e93-p2wpkh | SECP256K1 | Yes |
| Arbitrum One | ARBITRUM_MAINNET | eip155:42161 | SECP256K1 | No |
| Avalanche C-Chain | AVALANCHE_MAINNET | eip155:43114 | SECP256K1 | No |
| Base | BASE_MAINNET | eip155:8453 | SECP256K1 | No |
| Optimism | OPTIMISM_MAINNET | eip155:10 | SECP256K1 | No |
| Polygon | POLYGON_MAINNET | eip155:137 | SECP256K1 | No |
| Celo | CELO_MAINNET | eip155:42220 | SECP256K1 | Yes |
| BNB Smart Chain | BSC_MAINNET | eip155:56 | SECP256K1 | |
| Arbitrum Nova | ARBITRUM_NOVA_MAINNET | eip155:42170 | SECP256K1 | |
| Gnosis Chain | GNOSIS_MAINNET | eip155:100 | SECP256K1 | |
| Fantom | FANTOM_MAINNET | eip155:250 | SECP256K1 | |
| Rootstock | ROOTSTOCK_MAINNET | eip155:30 | SECP256K1 | |
| zkSync Era | ZKSYNC_MAINNET | eip155:324 | SECP256K1 | |
| Chiliz | CHILIZ_MAINNET | eip155:88888 | SECP256K1 | |
| Cronos | CRONOS_MAINNET | eip155:25 | SECP256K1 | |
| Ronin | RONIN_MAINNET | eip155:2020 | SECP256K1 | |
| Lisk | LISK_MAINNET | eip155:1135 | SECP256K1 | |
| Litecoin | LITECOIN_MAINNET | bip122:12a765e31ffd4059bada1e25190f6e9 | SECP256K1 |
Supported Testnets
| Chain | WalletChain enum value | CAIP-2 | Curve | Requires rpcUrl |
|---|---|---|---|---|
| Ethereum Sepolia | ETHEREUM_SEPOLIA | eip155:11155111 | SECP256K1 | No |
| Solana Devnet | SOLANA_DEVNET | solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 | ED25519 | |
| Stellar Testnet | STELLAR_TESTNET | stellar:testnet | ED25519 | |
| Tron Nile | TRON_NILE | tron:nile | SECP256K1 | |
| Tron Shasta | TRON_SHASTA | tron:shasta | SECP256K1 | |
| Bitcoin Testnet | BITCOIN_TESTNET | bip122:000000000933ea01ad0ee984209779ba-p2wpkh | SECP256K1 | |
| Arbitrum Sepolia | ARBITRUM_SEPOLIA | eip155:421614 | SECP256K1 | |
| Avalanche Fuji | AVALANCHE_FUJI | eip155:43113 | SECP256K1 | |
| Base Sepolia | BASE_SEPOLIA | eip155:84532 | SECP256K1 | |
| Optimism Sepolia | OPTIMISM_SEPOLIA | eip155:11155420 | SECP256K1 | |
| Polygon Amoy | POLYGON_AMOY | eip155:80002 | SECP256K1 | |
| BNB Smart Chain Testnet | BSC_TESTNET | eip155:97 | SECP256K1 | |
| Monad Testnet | MONAD_TESTNET | eip155:10143 | SECP256K1 | |
| Gnosis Chiado | GNOSIS_CHIADO | eip155:10200 | SECP256K1 | |
| Rootstock Testnet | ROOTSTOCK_TESTNET | eip155:31 | SECP256K1 | |
| zkSync Sepolia | ZKSYNC_SEPOLIA | eip155:300 | SECP256K1 | |
| Chiliz Testnet | CHILIZ_TESTNET | eip155:88882 | SECP256K1 |
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.
Check getWalletChainConfig(chain).requiresRpcUrl for the selected chain before you build a request.
Custom RPC URLs
For chains where requiresRpcUrl is true, 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.
Updated 5 days ago