Chain, token, Solana program, and ABI registry for web3 development.
npm install @w3-kit/registryimport {
getChain,
getToken,
getAllChains,
getChainsByEcosystem,
getSolanaProgram,
getSolanaProgramByAddress,
} from "@w3-kit/registry";
// Get a chain by ID
const ethereum = getChain(1);
// Get all EVM chains
const evmChains = getChainsByEcosystem("evm");
// Get a token by symbol
const usdc = getToken("USDC");
// Get a Solana program by key
const splTokenProgram = getSolanaProgram("spl-token");
// Reverse lookup a Solana program deployment
const raydium = getSolanaProgramByAddress(
"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
"mainnet-beta",
);Registry data is validated in CI before merge. Run the validation gate locally with:
npm run validateThe validator checks schema shape, URLs, chain references, duplicate identifiers, and ecosystem-specific token identifiers.
chain.rpcUrls remains a string[] for backwards compatibility. Each chain also exposes at least two structured rpcEndpoints, with the endpoint URL, provider name, and a public flag so consumers can select public fallbacks explicitly:
const chain = getChain(1);
const publicRpcs = chain?.rpcEndpoints.filter((rpc) => rpc.public) ?? [];These endpoints are best-effort public services for development, examples, and fallback access. They may be rate-limited or unavailable and should not be treated as production infrastructure. Applications should provide their own managed RPC endpoint for production traffic.
USDC, USDT, and DAI entries use the issuer's native deployment when one is published for a supported chain, or the canonical contract recorded by that chain's block explorer. Testnet addresses are for testing only. A token is not added to a chain when the issuer does not publish a deployment there; the registry does not use placeholder or guessed addresses.
Some registered networks do not have all three assets: Solana Devnet has no canonical USDT or DAI deployment, and the registry has no reliable DAI deployment for Sui or Aptos. Defunct Multichain assets on Fantom and Binance-Peg/DAI.e entries without issuer-native backing are also omitted. Those omissions are intentional and should be treated as unavailable data rather than as permission to substitute an unrelated token.
Primary sources:
- Circle USDC contract addresses
- Tether supported protocols
- Sky Protocol DAI documentation and Maker deployment directory
- PublicNode RPC endpoints and OnFinality Aptos RPC
| Function | Description |
|---|---|
getAllChains() |
Get all chains |
getChain(chainId) |
Get chain by ID |
getChainsByEcosystem(eco) |
Filter chains by ecosystem |
getAllTokens() |
Get all tokens |
getToken(symbol) |
Get token by symbol |
getTokensByChain(chainId) |
Get tokens on a chain |
getAllSolanaPrograms() |
Get all registered Solana programs |
getSolanaProgram(key) |
Get Solana program by stable key |
getSolanaProgramsByCluster(cluster) |
Filter Solana programs by cluster |
getSolanaProgramByAddress(programId, cluster) |
Reverse lookup a Solana program deployment |
import type {
Chain,
Token,
SolanaProgram,
SolanaCluster,
ChainId,
Address,
} from "@w3-kit/registry";Uses Domain-Driven Design (DDD) with domain, application, and infrastructure layers. See CONTRIBUTING.md for details.
- w3-kit/ui — Component library
- w3-kit/cli — CLI tool
- w3-kit/learn — Recipes and guides
- w3-kit/website — w3-kit.com
MIT