js-wallet-sdk
是一款用 TypeScript/JavaScript 实现的 Web3 钱包与签名 SDK 技术方案,封装了主流公链的加密算法、Wallet API 以及钱包即服务(WaaS)功能。它可以帮你快速完成私钥生成、地址计算、交易组装、链上签名等关键步骤,并持续扩容更多区块链的适配。
核心特性与适配链
- 多链签名 SDK:Ethereum、Bitcoin、Solana、Aptos、Cosmos、Starknet、ZKSpace 等 15+ 条链的一级实现
- WaaS 友好:内置 Wallet API,可快速接入托管或自托管方案
- 跨终端:浏览器、Node.js、Electron、React Native 均可直接使用
- 零依赖扩展:独立模块按需安装,体积最小可控制在 20 KB 内
快速上手指南
1. 安装签名 SDK
全局公共包(一次性引入多链)
npm install @okxweb3/coin-base @okxweb3/crypto-lib
单币精简包(只集成一条链,减少体积)
# 仅需 ETH
npm install @okxweb3/coin-ethereum
# 仅需 BTC
npm install @okxweb3/coin-bitcoin
本地二次构建
git clone <repo-url>
npm run build
构建后,dist/
项目中会生成 commonjs、esm、browser (umd) 三种产物,满足 Serverless、前端和 Electron 场景。
2. 钱包核心能力拆解
模块 | 描述 | 关键词 |
---|---|---|
@okxweb3/crypto-lib | 提供 bip32、bip39、ecdsa、ed25519 等加密原语 | 密码学库、助记词 |
@okxweb3/coin-base | 抽象了所有链的通用接口,无业务代码 | 基础接口 |
@okxweb3/coin-* | 独立链的构造、交易与签名实现 | ETH SDK、BTC SDK、Solana SDK… |
开发示例:如何在 8 行代码内完成以太坊签名
import { EthWallet } from '@okxweb3/coin-ethereum'
const wallet = new EthWallet();
const privateKey = wallet.getRandomPrivateKey();
const address = wallet.getNewAddress(privateKey);
// 构造 ERC-20 转账交易
const rawTx = wallet.getRawTransaction({
to: '0x...',
value: '0x0',
data: '0xa9059cbb...', // transfer
gasLimit: 21000,
gasPrice: 30e9,
nonce: 0,
chainId: 1,
});
const signedTx = wallet.signTransaction(privateKey, rawTx);
console.log('signedTx', signedTx);
👉 想体验 15 秒一行代码的多链签名?立即打开在线演练场。
各链语法速览
Ethereum & EVM
- 交易字段:
gasLimit
、gasPrice
、maxFeePerGas
(EIP-1559) - 派生路径:
m/44'/60'/0'/0/0
- 支持硬件钱包:Ledger、Trezor(raw 与 hash 接口已对接)
- 关键词推荐:以太坊签名、EIP-1559、硬件签名适配
Bitcoin 家族
- 支持隔离见证地址 P2WPKH,派生路径
m/84'/0'/0'/0/0
- 额外支持:BSV、DOGE、Litecoin(测试网均覆盖)
- 可一键生成支付协议(BIP21)链接
Cosmos/Harmony
- 应用链众多(ATOM、OSMO、JUNO……),统一采用 Amino 签名
- 自定义
fee
及memo
字段,满足质押、IBC 转发场景
Layer2 与零知识证明
- StarkNet:Cairo 交易序列化与压缩签名
- ZKSpace/zkSync:changePubkey + transfer 双模式处理
- 统一 ETH 地址层级,迁移成本极低
常见问题解答 (FAQ)
Q1:前端打包后体积过大怎么办?
A:使用 npm i @okxweb3/coin-ethereum
单链包并配合 webpack 的 tree-shaking,可瘦身至 90 KB 以下;若仅需地址生成,仅引入 crypto-lib
。
Q2:如何离线生成私钥?
A:直接调用 cryptoLib.generateMnemonic()
获得助记词,再用 getDerivedPrivateKey(path)
派生即可;整个过程无任何网络请求,完全离线。
Q3:硬件钱包签名与普通私钥签名有何区别?
A:硬件钱包使用 getHardWareRawTransaction
+ getHardWareSignedTransaction
,私钥永远留在设备内;SDK 只负责构造待签数据并检索签名结果。
Q4:SDK 是否支持批量 token 空投?
A:支持。可通过循环调用 getRawTransaction
+ signTransaction
在本地完成大批量签名,然后一次性 broadcast,大量节省 RPC 调用次数。
Q5:是否兼容 React Native?
A:兼容。我们已在 metro 配置中关闭 crypto polyfill,直接使用 RN 原生随机数模块;加入 metro resolver.extraNodeModules
即可完成集成。
项目实战:如何在 DApp 中集成 Wallet API
创建空项目
npx create-next-app my-dapp --typescript cd my-dapp && npm i @okxweb3/coin-base @okxweb3/coin-ethereum
编写连接函数
import { coinBase, coinEthereum } from '@okxweb3/coin-base'; const walletApi = { chainId: 1, ethers, async signMessage(msg) { return coinEthereum.signMessage(msg, privateKey); } };
- 前端一键唤起钱包授权
点击授权即可弹出原生签名弹窗,体验顺滑;省去手写私钥的门槛,安全性提升 5 倍。
👉 准备好动手十分钟构建你的专属 DApp 钱包入口了吗?点我查看完整教程!
路线图与社区治理
- 2024 Q3:Rollup(Base, Linea, Scroll)原生适配
- 2024 Q4:zk-Email、MPC 门限签名插件
- 持续集成:GitHub Actions 每晚运行 3000+ 单元测试、跨链回归测试
- 开源共建:欢迎在 Issues 提交 PR,文档及测试遗漏都会得到快速响应
无论你是 DeFi 开发者、NFT 平台还是交易所技术团队,js-wallet-sdk
都能提供最简洁、最安全的签名 SDK路径。立即安装,十分钟后即可拥有支撑百万级用户的 Web3 钱包引擎。