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.

BitcoinBitcoin
EthereumEthereum
BNB ChainBNB Chain
DogecoinDogecoin
Bitcoin CashBitcoin Cash
LitecoinLitecoin
AvalancheAvalanche
PolygonPolygon
SonicSonic
ArbitrumArbitrum
BaseBase
Bitcoin TestnetBitcoin Testnet
Free to start

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.

All featuresNo credit cardUpgrade anytime
Web3, truly multichain

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

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.

UTXO + EVMFiat conversionBalancesTx history
RPC included out of the box

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.

Zero configAll networksManaged nodesEvery plan
Transactions in 3 lines

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

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

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

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.

AES-256PBKDF2Auto-lockSerializable
React-ready

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()