Crypto
made simple
ChainGate is a TypeScript SDK that connects your app to Ethereum, Bitcoin, and other leading blockchains. Wallets, transactions, RPCs, and on-chain data—all from a single library.
Free to start
The free tier gives you full access to every feature—wallets, transactions, balances, history, all chains. No credit card, no trial period. When your project grows and you need more requests, just pick a paid plan.
Web3, truly multichain
EVM and UTXO in a single library. Build on Ethereum, Polygon, Arbitrum, BNB, Bitcoin, Litecoin, Dogecoin, and more—one unified API instead of separate libraries for each chain family.
const eth = wallet.currency('ethereum')const btc = wallet.currency('bitcoin')One SDK, full coverage
Coming from wagmi, viem, ethers, or web3.js? You'll feel right at home. ChainGate picks up where they leave off—adding UTXO chains, managed nodes, balances, transaction history, and fiat conversion into one package.
RPC included out of the box
Every plan includes managed RPC endpoints for all supported networks—ready to use with zero config. Compatible with ethers and web3.js if you already use them.
Transactions in 3 lines
Prepare, estimate fees, and broadcast—all in one call. ChainGate handles UTXO selection for Bitcoin and EIP-1559 gas for Ethereum automatically. Pick a fee tier (low to max) and confirm.
const tx = await btc.createTransfer(addr, amount)const fees = await tx.getSuggestedFees()const { txId } = await tx.broadcast('normal')Balances & transaction history
Query any address balance and full transaction history across every supported chain—Bitcoin, Ethereum, Polygon, all of them. Convert to 120+ fiat currencies on the fly. No extra provider, no indexer setup.
const { confirmed } = await btc.getBalance()const history = await btc.addressHistory()const usd = await confirmed.toFiat('usd')Full wallet lifecycle
Create wallets from mnemonic phrases, raw seeds, private keys, or keystore files. Supports BIP39/BIP32, custom derivation paths, and in-memory AES encryption that auto-locks after signing.
const { wallet, phrase } = await initializeWallet.create()const { wallet } = await initializeWallet.fromPhrase({ phrase })Encrypt, sign, relock
Wallet keys are AES-encrypted in memory with PBKDF2 (600k iterations). Unlock with a password to sign, then automatic relock. Serialise encrypted wallets to back up or move across devices.
React-ready
First-class React hooks: useWallet() for wallet state and useUtils() for blockchain queries. Wrap your app in a provider and you're set—no boilerplate, no context wiring.
const { wallet } = useWallet()const { utils } = useUtils()