跳到主要内容

BitTool Signer 开发者文档

面向钱包开发者

BitTool Signer 能把一部闲置的 iPhone 或 Android 手机变成离线签名器。私钥永远不会离开那部手机:你的钱包与它之间交换的只有二维码,从不经过网络。本文档逐字节说明这种交换,以及背后的安全设计,帮助你把 BitTool Signer 接入自己的钱包。

工作原理​

你的钱包保持在线,负责所有需要网络的工作:查询余额、估算手续费、获取 nonce、构建交易、广播。BitTool Signer 保持离线,只做唯一需要私钥的那件事:检查请求并签名。

你的钱包在线,仅观察
BitTool Signer离线,持有密钥
  1. 1显示配对二维码:仅包含公钥。
  2. ◀ ur:bytes · ur:crypto-account · ur:crypto-hdkey …
  3. 2将账户导入为观察钱包,并显示余额。
  4. 3构建未签名的交易或消息,并以二维码形式显示。
  5. ur:crypto-psbt · ur:eth-sign-request · ur:tron-sign-request · ur:sol-sign-request ▶
  6. 4解码请求,展示每个字段,要求输入钱包密码,然后签名。
  7. ◀ ur:crypto-psbt · ur:eth-signature · ur:tron-signature · ur:sol-signature
  8. 5验证签名,组装交易并广播。

双方传输的都是公开数据:扩展公钥、地址、未签名交易和签名。配对二维码中绝不会包含助记词、种子或私钥。

可以集成的功能​

支持的链与格式​

链配对(币种级)签名请求 → 响应可签名内容
Bitcoinur:crypto-account(账户 xpub)ur:crypto-psbt → ur:crypto-psbt(也支持 ur:psbt、BBQr、Base64)PSBT v0/v2:P2WPKH、P2TR、P2SH-P2WPKH、P2PKH、多签
EVMur:crypto-hdkey(账户 xpub)ur:eth-sign-request → ur:eth-signatureLegacy、EIP-2930 和 EIP-1559 交易,personal_sign,EIP-712
TRON纯地址ur:tron-sign-request → ur:tron-signatureraw_data 交易,TIP-191 消息
Solanaur:crypto-multi-accountsur:sol-sign-request → ur:sol-signatureLegacy 和 v0 消息(不支持查找表),文本消息

EVM 签名覆盖八个网络:Ethereum(1)、BNB Chain(56)、Arbitrum One(42161)、Base(8453)、OP Mainnet(10)、Polygon PoS(137)、Gnosis(100)和 Avalanche C-Chain(43114)。

传输层采用 BC-UR:CBOR 数据经 Bytewords 编码;当一个二维码装不下时,会拆分为动态的“喷泉码”(fountain)帧。请求与响应类型均来自公开的 Keystone UR 注册表,因此已经支持二维码硬件签名器的钱包只需新增很少的代码。唯一一个 BitTool 专有的格式是可选的钱包级配对二维码,扫描一次即可导入全部四条链。

本文档的读者​

你应当熟悉十六进制、Base58 和 JSON,并了解扩展公钥(xpub)和派生路径的概念。每个页面都给出了使用真实字节的完整示例,这些示例由 BitTool Signer 引擎根据公开的测试助记词 abandon … about 生成。请先对照这些示例完成实现,再用 App 进行测试。

仅限测试数据

本站中的测试助记词、地址和交易都是公开的,任何人都可以动用其中的资金。切勿向这些地址转入资金。

源代码​

BitTool Signer 在两个平台上都是开源的:bittool-signer-ios 和 bittool-signer-android。两款 App 运行同一个引擎,因此本站的二维码格式和签名对两者都适用。二维码协议代码位于 engine/protocols.js;各链的解析器和签名器位于 engine/src/。两个平台 1.0.0 版本的 AI 辅助安全评审均已全文公开。集成方面的问题请联系:support@bittool.com。