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.
Frequently asked questions
How do I build a crypto wallet in JavaScript?
Install ChainGate via npm and call initializeWallet.create() to generate a new wallet with a BIP39 mnemonic phrase. The SDK handles key derivation, address generation, and AES encryption out of the box, so you can build a fully functional crypto wallet in JavaScript or TypeScript without wiring together multiple low-level libraries.
Is ChainGate a bitcoinjs-lib alternative?
Yes. ChainGate covers everything bitcoinjs-lib does — wallet creation, transaction building, and broadcasting — while also supporting Ethereum and other blockchains from the same API. If you need a single library that handles both Bitcoin-family and Ethereum-family chains, ChainGate replaces bitcoinjs-lib, ethers, and web3.js in one package.
Can I send Bitcoin, Dogecoin, or Litecoin with Node.js using ChainGate?
Yes. ChainGate lets you send Bitcoin, Dogecoin, Litecoin, and Bitcoin Cash transactions with Node.js in just a few lines. Create a wallet, call createTransfer with a destination address and amount, then broadcast. The SDK handles input selection and fee estimation for each chain automatically.
How do I derive private keys from a seed phrase?
Call initializeWallet.fromPhrase() with your BIP39 mnemonic to derive private keys for any supported blockchain. ChainGate supports standard BIP32/BIP44 derivation paths and lets you specify custom paths if needed. All derived keys are AES-encrypted in memory and auto-lock after use.
How do I check a crypto balance with Node.js?
After initializing a wallet, call getBalance() on any currency to retrieve confirmed and unconfirmed balances. ChainGate supports balance queries across Bitcoin, Ethereum, Polygon, and every other supported chain. You can also convert balances to 120+ fiat currencies with the built-in toFiat() helper.
How does ChainGate estimate transaction fees?
When you create a transfer, call getSuggestedFees() to get fee estimates at four priority tiers: low, normal, high, and max. ChainGate queries network conditions in real time and returns accurate estimates for both Bitcoin-family chains and Ethereum-family chains.
Does ChainGate include free RPC endpoints?
Every ChainGate plan includes managed RPC endpoints for all supported blockchains at no extra cost — including Avalanche, Ethereum, Polygon, and more. The free tier gives you full access to these endpoints with zero configuration. If you need archive node access or higher rate limits, paid plans are available.