Crypto
made simple
ChainGate is a multi-chain TypeScript SDK to send transactions, derive wallets from seed phrases, check balances, and estimate fees on Ethereum, Bitcoin, Dogecoin, Litecoin, and more—one library, every blockchain.
Everything you need to build multi-chain crypto apps
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
Build multi-chain crypto apps from a single library. Build on Ethereum, Polygon, Arbitrum, BNB, Bitcoin, Litecoin, Dogecoin, and more—one multi-blockchain integration library instead of juggling separate SDKs for each chain family.
const eth = wallet.currency('ethereum')const btc = wallet.currency('bitcoin')One SDK, full coverage
A bitcoinjs-lib alternative that also covers Ethereum. Coming from wagmi, viem, ethers, or web3.js? ChainGate picks up where they leave off—adding Bitcoin, Litecoin, Dogecoin, managed nodes, balances, transaction history, and fiat conversion into one multi-chain wallet SDK.
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
Send crypto transactions in TypeScript with three lines of code. Estimate transaction fees, select a priority tier, and broadcast. ChainGate handles input selection for Bitcoin and gas for Ethereum automatically.
const tx = await btc.createTransfer(addr, amount)const fees = await tx.getSuggestedFees()const { txId } = await tx.broadcast('normal')Balances & transaction history
Check crypto balance with Node.js across every supported chain—Bitcoin, Ethereum, Polygon, all of them. Query full transaction history, 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
Derive private keys from seed phrases, create wallets from mnemonics, raw seeds, 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()Runs everywhere
A cross-platform blockchain SDK that runs natively in Node.js, the browser, and React Native—no polyfills, no bundler hacks. Build a server-side crypto backend, a browser-based wallet, or a React Native crypto app from the same codebase.