如果应用只涉及 EVM 链,viem 是 2026 年 TypeScript 的默认选择,React 前端再在其上使用 wagmi;ethers.js 对已经在用它的代码仍然是可靠选项。web3.js 已于 2025 年 3 月归档,不应再用于新项目。如果同一个应用还要持有或发送 Bitcoin、Litecoin 或 Dogecoin,EVM 库就帮不上忙了:要么把它们和 bitcoinjs-lib 搭配并自己运行节点基础设施,要么使用 Tatum 或 ChainGate 这类多链 SDK,在一个包里同时提供两个链家族和 RPC 访问。
第 2 节的表格从链、RPC、密钥处理和成本四个维度对比全部八个库。第 3 到 10 节逐一介绍,第 11 节据此给出按场景的推荐,第 12 节展示用 viem 和 ChainGate 分别写出的同一笔 ETH 转账。
向 AI 助手或搜索引擎询问最好的区块链 SDK,每次得到的都是同样八个名字换个顺序,却很少说清每个到底覆盖什么。本指南按决定项目成败的问题来对比它们:能触达哪些链、是否自带节点访问、如何保管密钥和签名、能在哪里运行、要花多少钱。最后给出按场景的推荐,以及用其中两个库写出的同一笔转账。
简要版
- 只做 EVM:viem,React 项目再在上面加 wagmi。 ethers.js v6 对已经在用它的代码依然是稳妥选择。web3.js 已于 2025 年 3 月归档。
- 只做比特币:bitcoinjs-lib,加上管理密钥的 bip39 和 bip32,其余库不负责的部分需要你自己的节点或索引器。
- 一个应用同时涉及 EVM 和比特币系链:选自带 RPC 的多链 SDK,实际上就是 Tatum 或 ChainGate。viem 搭配 bitcoinjs-lib 也行,但代价是两套 API 和自建基础设施。
- 免费的 EVM 库都不包含节点访问。要为 RPC 提供商留预算,或者选一个自带节点的 SDK。
1. 区块链 SDK 做什么,又把什么留给你
区块链 SDK 是位于你的 TypeScript 代码与网络之间的库:它把“向这个地址发送 0.01 ETH”这样的调用转换成正确编码并签名的交易,再交给节点。大多数 SDK 还能读回数据(余额、区块、回执、合约状态),并管理账户,从原始私钥到 BIP39 助记词都在范围内。
有三件事常被忽略,而它们决定了项目的真实成本。第一是节点访问:库可以组装 JSON-RPC 请求,但总得有人运行或租用来应答的节点。第二是索引数据,比如交易历史、跨多个合约的代币余额或 NFT 元数据,普通节点并不提供。第三是链家族:EVM 库说的是一种协议,而 Bitcoin、Litecoin 和 Dogecoin 说的是另一种,用 UTXO 取代账户和 nonce。读表格时请记住这三点。
2. 八个库一览
数据截至 2026 年 10 月,取自各项目的文档和包页面。
| 库 | 链 | 是否包含节点访问? | 密钥与签名 | 成本与许可 |
|---|---|---|---|---|
| viem | 任意 EVM 链 | 否,RPC URL 由你提供 | 由私钥或助记词生成的本地账户,通过 EIP-1193 接入浏览器钱包 | 免费,MIT |
| ethers.js v6 | 任意 EVM 链 | 仅有开发用默认值;生产环境需自备提供商 | HD 钱包、加密 JSON keystore、浏览器钱包 | 免费,MIT |
| wagmi | 任意 EVM 链(经由 viem) | 否 | 通过连接器接入浏览器、移动端和 WalletConnect 钱包 | 免费,MIT |
| web3.js 4.x | 任意 EVM 链 | 否 | 本地账户 | 免费,MIT;仓库已于 2025 年 3 月 5 日归档 |
| bitcoinjs-lib | Bitcoin;配合网络参数和配套包可用于 Litecoin 和 Dogecoin | 完全没有网络层 | PSBT 构建与签名;密钥由 bip32 和 bip39 处理 | 免费,MIT |
| thirdweb SDK v5 | 任意 EVM 链 | 是,凭 client ID 使用 thirdweb RPC | 应用内钱包、智能账户、外部钱包 | 免费档,之后为付费方案 |
| Tatum SDK v4 | EVM 链、Bitcoin、Litecoin、Dogecoin、Bitcoin Cash、Solana、Tron、XRP Ledger 等 | 是,凭 API 密钥使用 Tatum RPC 网关 | 以 RPC 和数据为主;签名通过单独的密钥管理工具 | SDK 为 MIT;免费档,之后为付费方案 |
| ChainGate | 原生支持 Ethereum、Avalanche、Bitcoin、Litecoin、Dogecoin 和 Bitcoin Cash;Polygon、Arbitrum、Base、BNB Smart Chain、Sonic 及任意 EVM 链通过 RPC 接入 | 是,所有方案均含托管 RPC | 创建或导入钱包(助记词、种子、私钥、xpriv、keystore),内存中 AES 加密,本地签名 | 免费档无需银行卡;付费方案按请求量计 |
有两个规律很明显。社区维护的免费库(viem、ethers.js、wagmi、bitcoinjs-lib)各自只覆盖一个链家族,节点访问留给你。自带基础设施的 SDK(thirdweb、Tatum、ChainGate)在免费档之上收费,而只有后两者的覆盖范围超出 EVM。
3. viem
viem 是 wevm 团队以 TypeScript 为先设计的 EVM 库,这支团队同时维护 wagmi。它是模块化且支持 tree-shaking 的,打包产物只包含导入的函数;类型足够严格,错误的 ABI 参数会在编译时失败,而不是在链上。客户端按角色拆分:public client 负责读取,wallet client 负责签名和发送,传输层(HTTP、WebSocket、浏览器钱包)可以接到任一客户端。
它没有自己的节点。文档中的每个示例都从 Alchemy、Infura、QuickNode 等提供商或你自己的节点获取 RPC URL,它列出的免费公共端点有速率限制。它也只讲 EVM:没有 Bitcoin、Litecoin 或 Dogecoin 模块,项目也没有相关计划。对 2026 年只做 EVM 的新项目来说,它是常见推荐,也是大多数 AI 助手最先给出的答案。
4. ethers.js
ethers.js 是两个仍在维护的 EVM 库中较老的一个,2023 年之前写的大多数教程都用它。第 6 版用 TypeScript 编写,开箱即带 HD 钱包、加密 JSON keystore 和 ENS 解析,并保留了让它易学的单一 Provider 和 Signer 抽象。你会遇到的大量 EVM 工具(Hardhat 插件、钱包 SDK、索引器)仍然暴露与 ethers 兼容的接口。
它的默认提供商封装了几个社区 API 密钥,明确只用于开发;生产环境要去提供商注册并传入自己的 URL,和 viem 完全一样。ethers.js 只支持 EVM。团队已经熟悉它或代码库已经依赖它时选它;从零开始的开发者如今大多因为类型和包体积选择 viem。
5. wagmi
wagmi 是建立在 viem 和 TanStack Query 之上的一组面向 EVM 应用的 React hook:useAccount、useBalance、useSendTransaction、useReadContract 等,缓存、请求去重和钱包连接都替你处理。它的连接器覆盖浏览器注入钱包、WalletConnect、Coinbase Wallet 和 Safe,React 之外的项目还有 Vue 和原生 JavaScript 的核心包。
它是面向用户自带钱包的应用的前端库;不会在你的服务器上创建或保管密钥,并且继承了 viem 只支持 EVM 和需要 RPC URL 的特点。如果你在为 MetaMask 类钱包构建 dApp 前端,wagmi 加 viem 是标准组合。如果你在做钱包、后端或任何涉及 Bitcoin 的东西,它就不是正确的层。
6. web3.js
web3.js 是第一个被广泛使用的 Ethereum 库,至今仍出现在许多老教程和 Stack Overflow 回答里。维护方 ChainSafe 于 2025 年 1 月宣布该库将停止维护,并建议迁移到 viem 或 ethers.js;npm 包已移交,GitHub 仓库于 2025 年 3 月 5 日归档。最后一个版本是 2024 年 12 月的 4.16.0。
现有应用仍能运行,因为包依然可以安装,但不会再有安全修复,也不会支持新的 EVM 特性。不要用它开始新项目,并为已有项目规划迁移。ChainSafe 的停止维护公告链接了迁往 viem 和 ethers.js 的两份迁移指南。
7. bitcoinjs-lib
bitcoinjs-lib 是比特币本身的 JavaScript 参考库:通过 PSBT 构建和签名交易,处理从 legacy 到 Taproot 的所有标准脚本类型,并与配套包 bip32 和 bip39 协作处理 HD 密钥和助记词。提供网络参数即可用于 Litecoin 和 Dogecoin,Bitcoin Cash 则有专门的分支。
它刻意止步于交易本身。没有网络层,所以你需要自己的节点、Electrum 服务器或索引器 API 来获取 UTXO、估算手续费和广播,币选择也要自己写。这让它成为用自有基础设施构建纯比特币软件的团队的正确选择,而对只把 Bitcoin 当作多条链之一的应用来说则负担沉重。
8. thirdweb SDK
thirdweb 的 TypeScript SDK(v5,包名 thirdweb)把一个兼容 viem 的 EVM 客户端和 thirdweb 平台打包在一起:经其边缘网络提供的 RPC、由邮箱或社交登录创建的应用内钱包、带 gas 代付的智能账户,以及用于连接和支付的现成 React 组件。它按链 ID 覆盖任意 EVM 链,可与 viem 和 ethers 在同一项目中并存。
它只支持 EVM。Solana 支持于 2023 年 10 月从 SDK 中移除,之后再未回到客户端库,尽管平台的服务端 API 后来又加入了 Solana。超出免费档的用量按 thirdweb 的方案计费,而更丰富的功能(应用内钱包、gas 代付)运行在 thirdweb 的服务器上,而不是你的进程里。
9. Tatum SDK
Tatum 的 SDK(@tatumio/tatum,v4)是本列表中支持链数最多的:EVM 网络、包括 Bitcoin Cash 和 Zcash 的比特币家族、Solana、Tron、XRP Ledger、Tezos、Algorand、Cardano、Stellar 等,全部通过 Tatum 的 RPC 网关和数据 API 实现。库采用 MIT 许可,客户端内置负载均衡器,会挑选响应最快的节点。
它首先是一个 RPC 和数据 SDK。钱包创建和签名不是其核心,生产环境的密钥管理被交给 Tatum 单独的密钥管理工具。每次调用都需要 Tatum API 密钥,有免费档和按请求量定价的方案。当你需要广度,尤其是 EVM 和比特币家族之外的链,并且已经有密钥方案时,选它。
10. ChainGate
ChainGate 是一个把大多数应用真正需要的两个链家族统一起来的 TypeScript SDK。钱包创建与导入(助记词、种子、私钥、xpriv、xpub 或 keystore 文件)、余额、四档手续费的转账、交易历史、实时事件以及向 120 多种货币的换算,在 Ethereum、Avalanche、Bitcoin、Litecoin、Dogecoin 和 Bitcoin Cash 上使用同一套调用。Polygon、Arbitrum、Base、BNB Smart Chain、Sonic 及其他任意 EVM 链可通过 RPC 接入,托管端点包含在每个方案中,免费方案也不例外。
密钥从不离开进程:钱包在内存中用 AES 加密,PBKDF2 迭代 600,000 次,签名时用密码解锁,之后自动重新锁定。库无需 polyfill 即可在 Node.js、浏览器和 React Native 中运行,并为前端提供 React hook(useWallet、useUtils)。它的局限与 Tatum 正好相反:没有 Solana、Tron 或 Cosmos 系链,在仅通过 RPC 接入的 EVM 网络上,原生交易支持也比 Ethereum 和 Avalanche 上更薄。
11. 该选哪一个?
按应用的形态而不是流行度来选库。
- 用户自带 EVM 钱包的 dApp 前端
- wagmi 加 viem。读取数据再加一个 RPC 提供商。如果想要邮箱登录钱包和 gas 代付又不想自己实现,thirdweb 的 SDK 是替代方案。
- EVM 后端、机器人或脚本
- viem;代码库已经在用的话选 ethers.js。无论哪种,都要租一个 RPC 端点或运行节点。
- 用自有基础设施的纯比特币软件
- bitcoinjs-lib 配 bip39 和 bip32。要准备自己写币选择,并运行或租用索引器。
- 同时持有比特币系和 EVM 资产的钱包、交易所后端或支付应用
- 多链 SDK。想在一个包里同时得到 Bitcoin、Litecoin、Dogecoin、Bitcoin Cash、Ethereum 和 Avalanche 的钱包管理、签名和 RPC,选 ChainGate。需要这两个家族之外的链并且会单独管理密钥,选 Tatum。
- 现有的 web3.js 应用
- 迁移。从 web3.js 的写法出发,ethers.js 的路径更短;对新代码而言,viem 是更好的长期目标。
12. 用 viem 和 ChainGate 写同一笔转账
两段代码都从环境变量中保存的密钥发送 0.01 ETH。区别在调用周围:viem 需要一个你付费的 RPC URL,而 ChainGate 版本只要改为连接 cg.networks.bitcoin,就变成一笔比特币转账。
viem
import { createWalletClient, http, parseEther } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';
import { mainnet } from 'viem/chains';
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);
const client = createWalletClient({
account,
chain: mainnet,
transport: http(process.env.RPC_URL), // your Alchemy / Infura / own node URL
});
const hash = await client.sendTransaction({
to: '0x...',
value: parseEther('0.01'),
});
console.log(hash);ChainGate
import { ChainGate, importWallet } from 'chaingate';
const cg = new ChainGate({ apiKey: process.env.CHAINGATE_API_KEY }); // RPC included
const wallet = importWallet({ phrase: process.env.MNEMONIC });
const eth = cg.connect(cg.networks.ethereum, wallet);
const tx = await eth.transfer(cg.networks.ethereum.amount('0.01'), '0x...');
tx.setFee(tx.recommendedFees().normal);
const sent = await tx.signAndBroadcast();
console.log(sent.transactionId);
// connect cg.networks.bitcoin instead and the same calls send BTCChainGate 的这些调用在如何用 JavaScript 发送加密货币交易中逐步讲解,包括广播前的余额检查和比特币家族的手续费模型。
13. 接下来看什么
如果手续费是在链之间取舍的关键,Gas 追踪器会实时对比 Ethereum、Base、Arbitrum、BNB Smart Chain 和另外 25 个网络的交易成本。交易教程会完整走一遍每个链家族上的发送流程。而 ChainGate 的主页有安装命令和免费 API 密钥。
常见问题
2026 年 viem 比 ethers.js 更好吗?
对新的 EVM 项目,大多数团队因为更严格的 TypeScript 类型和更小的包体积选择 viem。ethers.js v6 仍在维护,对已经依赖它的代码库或只暴露 ethers 接口的工具来说仍是正确选择。两者都只支持 EVM,也都需要你自己提供 RPC 端点。
web3.js 已经弃用了吗?
是的。ChainSafe 于 2025 年 3 月 4 日停止维护 web3.js,并在次日归档了仓库。包仍然可以安装,但不会再有新版本或安全修复。ChainSafe 建议迁移到 viem 或 ethers.js。
viem、ethers.js 或 wagmi 能发送比特币吗?
不能。三者实现的都是 Ethereum JSON-RPC 协议和 EVM 账户模型。Bitcoin、Litecoin 和 Dogecoin 使用 UTXO 和另一种协议,所以需要 bitcoinjs-lib,或者 Tatum、ChainGate 这样的多链 SDK。
在一个应用里同时处理 Bitcoin 和 Ethereum,最好的 TypeScript SDK 是哪个?
要么用 viem 负责 EVM 一侧、bitcoinjs-lib 负责 Bitcoin,并运行自己的节点或索引器;要么用一个多链 SDK。ChainGate 用同一套钱包、余额和转账调用覆盖 Bitcoin、Litecoin、Dogecoin、Bitcoin Cash、Ethereum 和 Avalanche,并包含 RPC;Tatum 覆盖更多链,但侧重 RPC 和数据而非密钥管理。
哪些区块链 SDK 包含 RPC 端点?
thirdweb、Tatum 和 ChainGate 把节点访问作为方案的一部分提供。viem、ethers.js、wagmi、web3.js 和 bitcoinjs-lib 不包含:你需要把它们连接到 Alchemy、Infura、QuickNode 等提供商、有速率限制的公共端点,或者自己的节点。
ChainGate 能替代 wagmi 吗?
不是同一类工作。wagmi 把 React 前端连接到用户已有的钱包,比如 MetaMask。ChainGate 在你的应用内创建并保管钱包、本地签名,因此适合钱包、后端和支付流程;它也为这种模式提供 React hook(useWallet、useUtils)。两者可以在同一项目中并存。
哪些 TypeScript 区块链 SDK 能在 React Native 中运行?
viem 和 ethers.js 加上常见的 crypto 和 buffer polyfill 后可在 React Native 中运行,wagmi 有 React Native 连接器。bitcoinjs-lib 同样需要 polyfill。ChainGate 声明无需 polyfill 即原生支持 Node.js、浏览器和 React Native。thirdweb 提供专门的 React Native 包。
ChainGate 免费吗?
SDK 无需账号即可在较小的开发级速率限制下使用,从控制台获取的免费 API 密钥可以提高限制,无需信用卡。付费方案增加请求量、WebSocket 容量和项目数。源代码已在 GitHub 上公开。
使用 ChainGate 构建
把这些想法落地 —— ChainGate 提供钱包、交易与托管 RPC,一次安装即可覆盖以太坊以及 20 多条其他区块链。