钱包 API

Javascript 签名 SDK#

概述#

Js-wallet-sdk 是一个基于 TypeScript/JavaScript 语言的钱包解决方案,包括了各条公链不同的密码学算法和常用功能,可以使用它离线进行私钥、地址的创建,组装交易,以及进行签名等等。本文档将详细介绍如何使用此 SDK。目前,它已经支持各种主流的区块链,每种币种类别都有独立的模块实现,我们将在未来持续增加对更多区块链的支持。

支持平台#

作为一个 Javascript SDK,它支持各种浏览器和 JavaScript 环境,可以轻松地集成到 Web 应用、移动应用或桌面应用中。

安装和构建#

NPM 构建#

要使用签名 SDK,首先需要安装它,你可以使用 npm 安装来获取到最新版本。

我们的签名 SDK 支持两种类型的包:公共包和单币种模块。

公共包,针对所有币种:

npm install @okxweb3/crypto-lib
npm install @okxweb3/coin-base

集成单个币种,以 ETH 和 BTC 为例:

集成 ETH:

npm install @okxweb3/coin-ethereum

集成 BTC:

npm install @okxweb3/coin-bitcoin

本地构建#

在本地构建 SDK:

  1. 下载项目源码
git clone https://github.com/okx/js-wallet-sdk.git
  1. 运行构建脚本
sh build.sh

主要功能#

以下是签名 SDK 中每个模块的具体功能介绍。

  • crypto-lib: 这个模块提供了常用的安全加密算法和签名算法等。
  • coin-base: 这个模块提供了币种通用接口。
  • coin-*: 这个模块实现了各个币种交易构建和签名的方法。每种币种都有一个对应的模块,例如 coin-ethereum、coin-bitcoin 等。这些模块提供了针对特定币种的交易构建和签名方法。

Packages#

包名模块描述
@okxweb3/coin-basecoin-base我们为这些链或币种提供通用功能,使得访问这些链变得非常简单。
@okxweb3/crypto-libcrypto-lib我们提供关于 bip32、bip39、ecdsa、ed25519 等的通用函数。
@okxweb3/coin-aptoscoin-aptosAptos SDK 用于与 Aptos 区块链交互,包含可用于 web3 钱包的各种函数。
@okxweb3/coin-bitcoincoin-bitcoinBitcoin SDK 用于与 Bitcoin 主网或测试网交互,包含可用于 web3 钱包的各种函数。SDK 不仅支持 Bitcoin,还支持以下链:BTC,BSV,DOGE,LTC,TBTC
@okxweb3/coin-cosmoscoin-cosmosCosmos SDK 用于与 Cosmos 区块链交互,包含可用于 web3 钱包的各种函数。
@okxweb3/coin-eoscoin-eosEOS SDK 用于与 EOS 区块链交互,包含可用于 web3 钱包的各种函数。SDK 不仅支持 EOS,还支持 WAX。
@okxweb3/coin-ethereumcoin-ethereumEthereum SDK 用于与Ethereum 区块链或 EVM 区块链交互,包含可用于 web3 钱包的各种函数。
@okxweb3/coin-flowcoin-flowFlow SDK 用于与 Flow 区块链交互,包含可用于 web3 钱包的各种函数。
@okxweb3/coin-nearcoin-nearNear SDK 用于与 Near 协议交互,包含与 Near 生态系统交互时需要的主要函数。
@okxweb3/coin-polkadotcoin-polkadotPolkadot SDK 用于与 Polkadot 区块链交互,包含与 Polkadot 生态系统交互时需要的主要函数。
@okxweb3/coin-solanacoin-solanaSolana SDK 用于与 Solana 链交互,包含与 Solana 生态系统交互时需要的主要函数。
@okxweb3/coin-stackscoin-stacksStacks SDK 用于与 Stacks 区块链交互,包含可用于 web3 钱包的各种函数。
@okxweb3/coin-starknetcoin-starknetStarknet SDK 用于与 Starknet 区块链交互,包含可用于 web3 钱包的各种函数。
@okxweb3/coin-suicoin-suiSUI SDK 用于与 SUI 区块链交互,包含可用于 web3 钱包的各种函数。
@okxweb3/coin-troncoin-tronTRX SDK 用于与TRON区块链交互,包含可用于 web3 钱包的各种函数。
@okxweb3/coin-zkspacecoin-zkspaceZKSpace SDK 用于与 ZK 合约交互,包含可用于 web3 钱包的各种函数。SDK 不仅支持 ZKSpace,还支持 zkSync。

coin-base#

base 包是所有币种的公共基础模块,提供币种通用的接口方法定义,例如:随机生成私钥、私钥派生、获取派生路径等。目前,单币种的实现包基本实现了通用的接口方法,不同币种支持的功能函数略有不同,具体可以参考各币种实现包的功能函数说明。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-base

支持函数:

函数名称功能备注
getRandomPrivateKey生成随机私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新地址
validAddress验证地址
signTransaction签名交易
getDerivedPath获取 bip44 路径
validPrivateKey验证私钥
signMessage签名消息
verifyMessage验证签名消息
ecRecover恢复签名到公钥
getAddressByPublicKey通过公钥获取地址
getHardWareRawTransaction获取硬件的原始交易
getHardWareSignedTransaction获取硬件的签名交易
getHardWareMessageHash获取硬件的消息哈希
calcTxHash通过原始交易获取交易哈希
getRawTransaction生成原始交易数据
validSignedTransaction检查签名交易
estimateFee估计燃气费

关于 coin-base 包支持的功能函数和使用案例,更详细的内容可以查看 github 文档:coin-base功能函数

crypto-lib#

这是一个包含了 bip32, bip39, ecdsa, ed25519 等常用的安全加密和签名算法的实现,例如:

  • bip32 常用函数:这些函数主要用于处理和操作比特币改进型支付协议(BIP32)相关的任务。
  • bip39 生成助记词、公私钥、签名消息函数:这些函数主要用于处理和操作比特币改进型支付协议(BIP39)相关的任务,如生成助记词,公私钥,以及签名消息。
  • 常用的哈希和编解码函数:这些函数主要用于处理常见的哈希和编解码任务,如 SHA256 哈希,Base64 编解码等。
  • ed5519 常用签名函数:这些函数主要用于处理和操作 ed5519 签名算法相关的任务。
  • ecds 常用签名函数:这些函数主要用于处理和操作椭圆曲线数字签名算法(ECDSA)相关的任务。

通过 npm 获取最新版本的包:

npm install @okxweb3/crypto-lib

关于 crypto-lib 包支持的功能函数和使用案例,更详细的内容可以查看 github 文档:crypto-lib功能函数

coin-aptos#

Aptos SDK 主要用集成 Aptos 区块链,包含有私钥生成、私钥派生、生成地址、交易转帐等功能函数。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-aptos

支持函数:

函数名称功能备注
getRandomPrivateKey生成一个随机的私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新的地址
validAddress验证地址的有效性
signTransaction对交易进行签名
getDerivedPath获取 bip44 路径
signMessage对消息进行签名
verifyMessage验证签名消息的有效性
calcTxHash通过原始交易获取交易哈希
validSignedTransaction检查已签名的交易的有效性

Aptos 交易支持类型有:

"transfer"、"tokenTransfer"、"tokenMint"、"tokenBurn"、"tokenRegister"、"dapp"、"simulate"、"offerNft"、"claimNft"、"offerNft_simulate"、"claimNft_simulate"

关于 coin-aptos 包支持的功能函数和使用案例,可以查看 github 文档以获取更详细的内容:coin-aptos功能函数

coin-bitcoin#

coin-bitcoin 是一个用于集成 Bitcoin 区块链的 SDK,它支持 Bitcoin 的主网和测试网,并提供了一系列的功能函数,使开发者能够更方便地与 Bitcoin 区块链进行交互。除了 BTC,它还支持 BSV、DOGE、LTC 和 TBTC 等币种。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-bitcoin

支持函数:

函数名称功能备注
getRandomPrivateKey生成一个随机的私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新的地址
validAddress验证地址的有效性
signTransaction对交易进行签名
getDerivedPath获取 bip44 路径
signMessage对消息进行签名
verifyMessage验证签名消息的有效性
calcTxHash通过原始交易获取交易哈希
validSignedTransaction检查已签名的交易的有效性
getAddressByPublicKey通过公钥获取地址

关于 coin-bitcoin 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-bitcoin功能函数

coin-cosmos#

Cosmos SDK 是一个用于集成 Cosmos 架构的区块链的工具包,它提供了一系列的功能函数,包括生成私钥、派生私钥、生成地址和交易转账等。它支持的币种包括:

  • Atom
  • Axelar
  • Cronos
  • Evmos
  • Iris
  • Juno
  • Kava
  • Kujira
  • Osmos
  • Secret
  • Sei
  • Stargaze
  • Terra

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-cosmos

支持函数:

函数名称功能备注
getRandomPrivateKey生成随机私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新地址
validAddress验证地址
signTransaction签署交易
getDerivedPath获取 bip44 路径
signMessage签署消息
verifyMessage验证签署的消息
calcTxHash通过原始交易获取交易哈希
validSignedTransaction检查已签署的交易
getAddressByPublicKey通过公钥获取地址

关于 coin-cosmos 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-cosmos功能函数

coin-eos#

EOS SDK 是一个用于集成 EOS 区块链的工具包,它提供了一系列的功能函数,包括生成私钥、派生私钥、生成地址和交易序列化等。除了 EOS 外,它还支持 Wax 币种。

这些功能函数使开发者能够更方便地与 EOS 区块链进行交互,包括创建和管理钱包,发送和接收交易,以及查询区块链信息等。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-eos

支持函数:

函数名称功能备注
getRandomPrivateKey生成随机私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新地址
signTransaction签署交易
getDerivedPath获取 bip44 路径
calcTxHash通过原始交易获取交易哈希

关于 coin-eos 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-eos功能函数

coin-ethereum#

Ethereum SDK 是一个用于集成 Ethereum 区块链和其他 支持EVM (以太坊虚拟机) 的区块链的工具包。它提供了一系列的功能函数,包括生成私钥、派生私钥、生成地址和交易转账等。

这些功能函数使开发者能够更方便地与 Ethereum 区块链进行交互,包括创建和管理钱包,发送和接收交易,以及查询区块链信息等。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-ethereum

支持函数:

函数名称功能备注
getRandomPrivateKey生成随机私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新地址
validAddress验证地址
signTransaction签署交易
getDerivedPath获取 bip44 路径
validPrivateKey验证私钥
signMessage签署消息
verifyMessage验证签署的消息
ecRecover恢复签名到公钥
getAddressByPublicKey通过公钥获取地址
getHardWareRawTransaction获取硬件的原始交易

关于 coin-ethereum 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-ethereum功能函数

coin-flow#

Flow 区块链是一个新一代的、面向未来的区块链平台,它专为高性能应用和游戏而设计。

Flow SDK 是一个用于集成 Flow 区块链的工具包,包含多种用于集成 web3 钱包的功能函数。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-flow

支持函数:

函数名称功能备注
validateAddress验证地址
signTransaction签署交易

Flow 交易支持类型有:Account 和 Transfer

关于 coin-flow 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-flow 功能函数

coin-near#

Near 协议是一个可扩展的区块链平台,它通过使用新颖的共识机制和分片技术,实现了高吞吐量和低延迟的交易处理。Near SDK 使开发者能够更方便地开发和部署在 Near 区块链上的应用。

Near SDK 是一个用于集成 Near 协议的工具包,包含多种用于集成 web3 钱包的功能函数。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-near

支持函数:

函数名称功能备注
getAddress通过种子获取地址
validateAddress验证地址
signTransaction签署交易
transfer转账
fullAccessKey获取完全访问密钥
publicKeyFromSeed从种子获取公钥

关于 coin-near 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-near功能函数

coin-polkadot#

Polkadot 是一个多链异构的区块链平台,它允许各种区块链网络以共享的安全模型并行运行,同时还能实现链与链之间的信息和价值的无缝转移。

Polkadot SDK 是一个用于集成 Polkadot 区块链的工具包,包含多种用于集成 web3 钱包的功能函数。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-polkadot

支持函数:

函数名称功能备注
getAddress通过种子获取地址
validateAddress验证地址
SignTx签署交易

关于 coin-polkadot 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-polkadot 功能函数

coin-solana#

Solana 是一个高性能的区块链平台,它通过创新的共识算法和区块产生机制,实现了高吞吐量和低延迟的交易处理。

Solana SDK 是一个用于集成 Solana 区块链的工具包,包含多种用于集成 web3 钱包的功能函数。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-solana

支持函数:

函数名称功能备注
getRandomPrivateKey生成随机私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新地址
validAddress验证地址
signTransaction签署交易
getDerivedPath获取 bip44 路径
signMessage签署消息
calcTxHash通过原始交易获取交易哈希
validSignedTransaction检查已签署的交易
getHardWareRawTransaction获取硬件的原始交易
getHardWareSignedTransaction获取硬件的已签署交易
getHardWareMessageHash获取硬件的消息哈希

关于 coin-solana 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-solana功能函数

coin-stacks#

Stacks 是一个开源的区块链平台,它允许开发者在 Stacks 区块链上构建智能合约和去中心化应用。

Stacks SDK 主要用集成 Stacks 区块链,包含多种用于集成 web3 钱包的功能函数。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-stacks

支持函数:

函数名称功能备注
getRandomPrivateKey生成随机私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新地址
validAddress验证地址
signTransaction签署交易
getDerivedPath获取 bip44 路径
signMessage签署消息
verifyMessage验证签名消息
calcTxHash通过原始交易获取交易哈希
getRawTransaction获取原始交易

关于 coin-stacks 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-stacks 功能函数

coin-starknet#

StarkNet 是一个去中心化的、可扩展的区块链网络,它使用了零知识证明技术来提高交易处理的效率和安全性。

StarkNet SDK 是一个用于集成 StarkNet 区块链的工具包,它提供了一系列的功能函数,使开发者能够更方便地与 StarkNet 区块链进行交互。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-starknet

支持函数:

函数名称功能备注
getRandomPrivateKey生成随机私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新地址
validAddress验证地址
signTransaction签署交易
getDerivedPath获取 bip44 路径
signMessage签署消息
verifyMessage验证签名消息

关于 coin-starknet 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-starknet 功能函数

coin-sui#

SUI SDK 是一个用于集成 SUI 区块链的工具包,包含多种用于集成 web3 钱包的功能函数。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-sui

支持函数:

函数名称功能备注
getRandomPrivateKey生成随机私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新地址
validAddress验证地址
signTransaction签署交易
getDerivedPath获取 bip44 路径
signMessage签署消息
calcTxHash通过原始交易获取交易哈希
提示
注意:与 secp256k1 不同的是,ed25519 的私钥派生只支持 hard 模式的派生,详情参见:https://github.com/satoshilabs/slips/blob/master/slip-0010.md

关于 coin-sui 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-sui 功能函数

coin-tron#

TRON SDK 是一个用于集成 TRON 区块链的工具包,包含多种用于集成 web3 钱包的功能函数。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-tron

支持函数:

函数名称功能备注
getRandomPrivateKey生成随机私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新地址
validAddress验证地址
signTransaction签署交易
getDerivedPath获取 bip44 路径
validPrivateKey验证私钥
signMessage签署消息
verifyMessage验证签名消息
ecRecover恢复签名到公钥
getAddressByPublicKey通过公钥获取地址
getHardWareRawTransaction获取硬件的原始交易
getHardWareSignedTransaction获取硬件的签名交易
getHardWareMessageHash获取硬件的消息哈希
calcTxHash通过原始交易获取交易哈希
getRawTransaction生成原始交易数据
validSignedTransaction检查签名交易

关于 coin-tron 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-tron 功能函数

coin-zkspace#

ZKSpace SDK 主要用集成 ZK 合约,包含多种用于集成 web3 钱包的功能函数,除了 ZKSpace 外,还支持 zkSync。

通过 npm 获取最新版本的包:

npm install @okxweb3/coin-zkspace

支持函数:

函数名称功能备注
getRandomPrivateKey生成随机私钥
getDerivedPrivateKey从 DerivePriKeyParams 生成私钥
getNewAddress通过私钥获取新地址
validAddress验证地址
signTransaction签署交易
getDerivedPath获取 bip44 路径
validPrivateKey验证私钥
signMessage签署消息
verifyMessage验证签名消息
ecRecover恢复签名到公钥
getAddressByPublicKey通过公钥获取地址
getHardWareRawTransaction获取硬件的原始交易
getHardWareSignedTransaction获取硬件的签名交易
getHardWareMessageHash获取硬件的消息哈希
calcTxHash通过原始交易获取交易哈希
getRawTransaction生成原始交易数据

交易签名支持 data 类型有:transfer 和 changePubkey

关于 coin-zkspace 包支持的功能函数和使用案例,更加详细内容可以查看 github 文档:coin-zkspace 功能函数

测试用例#

在 github 上,每个模块对应的 package 下有一个 tests 目录,放有各个币种模块的测试用例,可以通过测试用例了解到更多关于 SDK 中函数的用法。

支持币种#

币族币种派生路径
BTCBTC常规地址:
m/44'/0'/0/0'/0
隔离见证:
m/49'/0'/0/0'/0
m/84'/0'/0/0'/0
m/86'/0'/0/0'/0
BTCBCHm/44'/145'/0'/0/0
BTCBSVm/44'/236'/0'/0/0
BTCLTCm/44'/2'/0'/0/0
BTCDogem/44'/3'/0'/0/0
BTCTBTCm/44'/0'/0/0'/0
BTCOmni usdtm/44'/0'/0/0'/0
ETHETHm/44'/60'/0'/0/0
ETHArbitrum Onem/44'/60'/0'/0/0
ETHArbitrum Novam/44'/60'/0'/0/0
ETHAvalanche Cm/44'/60'/0'/0/0
ETHBobam/44'/60'/0'/0/0
ETHBNB Chainm/44'/60'/0'/0/0
ETHBasem/44'/60'/0'/0/0
ETHCorem/44'/60'/0'/0/0
ETHCronos(EVM)m/44'/60'/0'/0/0
ETHCelom/44'/60'/0'/0/0
ETHConflux(EVM)m/44'/60'/0'/0/0
ETHEndurancem/44'/60'/0'/0/0
ETHEthereumPoWm/44'/60'/0'/0/0
ETHEthereumFairm/44'/60'/0'/0/0
ETHFilecoin EVMm/44'/60'/0'/0/0
ETHFantomm/44'/60'/0'/0/0
ETHFlarem/44'/60'/0'/0/0
ETHGnosism/44'/60'/0'/0/0
ETHGoerlim/44'/60'/0'/0/0
ETHHAQQ Networkm/44'/60'/0'/0/0
ETHKlaytnm/44'/60'/0'/0/0
ETHKCCm/44'/60'/0'/0/0
ETHKava EVMm/44'/60'/0'/0/0
ETHLineam/44'/60'/0'/0/0
ETHMetism/44'/60'/0'/0/0
ETHMoonebeamm/44'/60'/0'/0/0
ETHMoonriverm/44'/60'/0'/0/0
ETHMantlem/44'/60'/0'/0/0
ETHOmega Networkm/44'/60'/0'/0/0
ETHOKTCm/44'/60'/0'/0/0
ETHOptimismm/44'/60'/0'/0/0
ETHopBNBm/44'/60'/0'/0/0
ETHPolygonm/44'/60'/0'/0/0
ETHPolygon zkEVMm/44'/60'/0'/0/0
ETHPulseChainm/44'/60'/0'/0/0
ETHSepoliam/44'/60'/0'/0/0
ETHzkSync Eram/44'/60'/0'/0/0
ETHZetaChianm/44'/60'/0'/0/0
CosmosAtomm/44'/118'/0'/0/0
CosmosAxelarm/44'/118'/0'/0/0
CosmosCronosm/44'/394'/0'/0/0
CosmosOsmosm/44'/118'/0'/0/0
CosmosEvmosm/44'/60'/0'/0/0
CosmosIrism/44'/118'/0'/0/0
CosmosJunom/44'/118'/0'/0/0
CosmosKavam/44'/459'/0'/0/0
CosmosKujiram/44'/118'/0'/0/0
CosmosSecretm/44'/529'/0'/0/0
CosmosSeim/44'/118'/0'/0/0
CosmosStargazem/44'/118'/0'/0/0
CosmosTerram/44'/330'/0'/0/0
AptosAptosm/44'/637'/0'/0/0
EOSEOSm/44'/194'/0'/0/0
SolanaSolanam/44'/501'/0'/0/0
StacksStacksm/44'/5757'/0'/0/0
ETH layer 2Starknetm/44'/9004'/0'/0/0
SUISUIm/44'/784'/0'/0/0
TRXTRONm/44'/195'/0'/0/0
ETH layer 2ZKSpacem/44'/60'/0'/0/0
ETH layer 2zkSyncm/44'/60'/0'/0/0