钱包 API

Go 签名 SDK#

概述#

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

支持平台#

作为一个 Go SDK,可以轻松地集成到 Web 应用、移动应用或桌面应用中。

安装和构建#

Go GET#

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

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

公共包,针对所有币种:

go get -u github.com/okx/go-wallet-sdk/crypto

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

集成 ETH:

go get -u github.com/okx/go-wallet-sdk/coins/ethereum

集成 BTC:

go get -u github.com/okx/go-wallet-sdk/coins/bitcoin

主要功能#

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

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

Packages#

包名模块描述
github.com/okx/go-wallet-sdk/cryptocrypto我们提供关于 bip32、bip39、ecdsa、ed25519 等的通用函数。
github.com/okx/go-wallet-sdk/coins/aptosaptosAptos SDK 用于与 Aptos 区块链交互,包含可用于 web3 钱包的各种函数。
github.com/okx/go-wallet-sdk/coins/bitcoinbitcoinBitcoin SDK 用于与 Bitcoin 主网或测试网交互,包含可用于 web3 钱包的各种函数。SDK 不仅支持 Bitcoin,还支持以下链:BTC, BSV, DOGE, LTC, TBTC。
github.com/okx/go-wallet-sdk/coins/cosmoscosmosCosmos SDK 用于与 Cosmos 区块链交互,包含可用于 web3 钱包的各种函数。
github.com/okx/go-wallet-sdk/coins/eoseosEOS SDK 用于与 EOS 区块链交互,包含可用于 web3 钱包的各种函数。SDK 不仅支持 EOS,还支持 WAX。
github.com/okx/go-wallet-sdk/coins/ethereumethereumEthereum SDK 用于与 Ethereum 区块链或 EVM 区块链交互,包含可用于 web3 钱包的各种函数。
github.com/okx/go-wallet-sdk/coins/flowflowFlow SDK 用于与 Flow 区块链交互,包含可用于 web3 钱包的各种函数。
github.com/okx/go-wallet-sdk/coins/nearnearNear SDK 用于与 Near 协议交互,包含与 Near 生态系统交互时需要的主要函数。
github.com/okx/go-wallet-sdk/coins/polkadotpolkadotPolkadot SDK 用于与 Polkadot 区块链交互,包含与 Polkadot 生态系统交互时需要的主要函数。
github.com/okx/go-wallet-sdk/coins/solanasolanaSolana SDK 用于与 Solana 链交互,包含与 Solana 生态系统交互时需要的主要函数。
github.com/okx/go-wallet-sdk/coins/stacksstacksStacks SDK 用于与 Stacks 区块链交互,包含可用于 web3 钱包的各种函数。
github.com/okx/go-wallet-sdk/coins/starknetstarknetStarknet SDK 用于与 Starknet 区块链交互,包含可用于 web3 钱包的各种函数。
github.com/okx/go-wallet-sdk/coins/suisuiSUI SDK 用于与 SUI 区块链交互,包含可用于 web3 钱包的各种函数。
github.com/okx/go-wallet-sdk/coins/trontronTRX SDK 用于与 TRON 区块链交互,包含可用于 web3 钱包的各种函数。
github.com/okx/go-wallet-sdk/coins/zkspacezkspaceZKSpace SDK 用于与 ZK 合约交互,包含可用于 web3 钱包的各种函数。SDK 不仅支持 ZKSpace,还支持 zkSync。

crypto#

这是一个包含了 BIP32, BIP39, ECDSA, ED25519 等常用的安全加密和签名算法的实现,例如:

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

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/crypto

aptos-sdk#

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

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/aptos

支持函数:

函数名称功能
NewAddress通过私钥获取新的地址
ValidateAddress验证地址的有效性
SignRawTransaction对交易进行签名

Aptos 交易支持类型有:

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

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

bitcoin-sdk#

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

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/bitcoin

支持函数:

函数名称功能
NewAddress通过私钥获取新的地址
SignTx对交易进行签名
GenerateUnsignedPSBTHexPSBT生成交易

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

cosmos-sdk#

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

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

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/cosmos

支持函数:

函数名称功能
NewAddress通过私钥获取新地址
Transfer签署交易
SignMessage签署消息

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

eos-sdk#

EOS SDK 是一个用于集成 EOS 区块链的工具包,它提供了一系列的功能函数,包括生成私钥、派生私钥、生成地址和交易序列化等。除了 EOS 外,它还支持 WAX 币种。 这些功能函数使开发者能够更方便地与 EOS 区块链进行交互,包括创建和管理钱包,发送和接收交易,以及查询区块链信息等。

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/eos

支持函数:

函数名称功能
NewAddress通过私钥获取新地址
SignTransaction签署交易

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

ethereum-sdk#

Ethereum SDK 是一个用于集成 Ethereum 区块链和其他支持 EVM(以太坊虚拟机)的区块链的工具包。它提供了一系列的功能函数,包括生成私钥、派生私钥、生成地址和交易转账等。 这些功能函数使开发者能够更方便地与 Ethereum 区块链进行交互,包括创建和管理钱包,发送和接收交易,以及查询区块链信息等。

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/ethereum

支持函数:

函数名称功能
NewAddress通过私钥获取新地址
SignTransaction签署交易
SignMessage签署消息

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

flow-sdk#

Flow 区块链是一个新一代的、面向未来的区块链平台,它专为高性能应用和游戏而设计。 Flow SDK 是一个用于集成 Flow 区块链的工具包,包含多种用于集成 web3 钱包的功能函数。

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/flow

支持函数:

函数名称功能
CreateNewAccountTx创建地址
SignTx签署交易

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

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

near-sdk#

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

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/near

支持函数:

函数名称功能
NewAccount通过种子获取地址
SignTransaction签署交易

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

polkadot-sdk#

Polkadot 是一个多链异构的区块链平台,它允许各种区块链网络以共享的安全模型并行运行,同时还能实现链与链之间的信息和价值的无缝转移。 Polkadot SDK 是一个用于集成 Polkadot 区块链的工具包,包含多种用于集成 web3 钱包的功能函数。

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/polkadot

支持函数:

函数名称功能
NewAddress通过种子获取地址
SignTx签署交易

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

solana-sdk#

Solana 是一个高性能的区块链平台,它通过创新的共识算法和区块产生机制,实现了高吞吐量和低延迟的交易处理。 Solana SDK 是一个用于集成 Solana 区块链的工具包,包含多种用于集成 web3 钱包的功能函数。

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/solana

支持函数:

函数名称功能
NewAddress通过私钥获取新地址
SignTransaction签署交易

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

stacks-sdk#

Stacks 是一个开源的区块链平台,它允许开发者在 Bitcoin 区块链上构建智能合约和去中心化应用。 Stacks SDK 主要用集成 Stacks 区块链,包含多种用于集成 web3 钱包的功能函数。

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/stacks

支持函数:

函数名称功能
NewAddress通过私钥获取新地址
Transfer签署交易

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

starknet-sdk#

StarkNet 是一个去中心化的、可扩展的区块链网络,它使用了零知识证明技术来提高交易处理的效率和安全性。 StarkNet SDK 是一个用于集成 StarkNet 区块链的工具包,它提供了一系列的功能函数,使开发者能够更方便地与 StarkNet 区块链进行交互。

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/starknet

支持函数:

函数名称功能
NewAddress通过私钥获取新地址
CreateSignedContractTx签署交易

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

sui-sdk#

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

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/sui

支持函数:

函数名称功能
NewAddress通过私钥获取新地址
SignTransaction签署交易
SignMessage签署消息

注意:与 secp256k1 不同的是,ed25519 的私钥派生只支持 hard 模式的派生,详情参见:https://github.com/satoshilabs/slips/blob/master/slip-0010.md

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

tron-sdk#

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

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/tron

支持函数:

函数名称功能
NewAddress通过私钥获取新地址
SignTransaction签署交易

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

zkspace-sdk#

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

通过 go get 获取最新版本的包:

go get -u github.com/okx/go-wallet-sdk/coins/zkspace

支持函数:

函数名称功能
NewAddress通过私钥获取新地址
CreateSignTransferTx签署交易

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

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

测试用例#

在 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