BitTool Signer 開發者文件
BitTool Signer 能把一支閒置的 iPhone 或 Android 手機變成離線簽名器。私鑰永遠不會離開那支手機:你的錢包與它之間交換的只有 QR 碼,從不經過網路。本文件逐位元組說明這種交換,以及背後的安全設計,協助你把 BitTool Signer 接入自己的錢包。
運作方式
你的錢包保持連網,負責所有需要網路的工作:餘額、手續費、nonce、建構交易、廣播。BitTool Signer 保持離線,只做唯一需要私鑰的那件事:檢查請求並簽名。
- 1顯示配對 QR Code:只含公鑰。
- ◀ ur:bytes · ur:crypto-account · ur:crypto-hdkey …
- 2將帳戶匯入為觀察錢包並顯示餘額。
- 3建構未簽名的交易或訊息,並以 QR Code 顯示。
- ur:crypto-psbt · ur:eth-sign-request · ur:tron-sign-request · ur:sol-sign-request ▶
- 4解碼並顯示每個欄位,要求輸入錢包密碼,然後簽名。
- ◀ ur:crypto-psbt · ur:eth-signature · ur:tron-signature · ur:sol-signature
- 5驗證簽名、組裝交易並廣播。
傳輸過程中的一切都是公開資料:擴充公鑰、地址、未簽名的交易與簽名。配對 QR Code 絕不包含助記詞、種子或私鑰。
可以整合的項目
支援的鏈與格式
| 鏈 | 配對(幣種層級) | 簽名請求 → 回應 | 可簽署內容 |
|---|---|---|---|
| Bitcoin | ur:crypto-account(帳戶 xpub) | ur:crypto-psbt → ur:crypto-psbt(亦支援 ur:psbt、BBQr、Base64) | PSBT v0/v2:P2WPKH、P2TR、P2SH-P2WPKH、P2PKH、多重簽名 |
| EVM | ur:crypto-hdkey(帳戶 xpub) | ur:eth-sign-request → ur:eth-signature | Legacy、EIP-2930 與 EIP-1559 交易、personal_sign、EIP-712 |
| TRON | 純地址 | ur:tron-sign-request → ur:tron-signature | raw_data 交易、TIP-191 訊息 |
| Solana | ur:crypto-multi-accounts | ur:sol-sign-request → ur:sol-signature | Legacy 與 v0 訊息(不含 lookup table)、文字訊息 |
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:以 Bytewords 包裝的 CBOR,當一個 QR Code 放不下時,會拆成動態的「fountain」幀。請求與回應類型都取自公開的 Keystone UR registry,因此已支援 QR 硬體簽名器的錢包只需撰寫極少的新程式碼。唯一 BitTool 專屬的格式是選用的錢包層級配對 QR Code,掃描一次即可匯入全部四條鏈。
本文件的適用對象
你應熟悉 hex、Base58 與 JSON,並了解擴充公鑰(xpub)與衍生路徑是什麼。每一頁都提供含真實位元組的完整範例,由 BitTool Signer 引擎以公開的測試助記詞 abandon … about 產生。請先依照這些範例實作,再用 App 測試。
本站的測試助記詞、地址與交易都是公開的,任何人都能動用其中的資金。切勿將資金轉入這些地址。
原始碼
BitTool Signer 在兩個平台上都是開源的:bittool-signer-ios 與 bittool-signer-android。兩款 App 執行同一個引擎,因此本站的 QR 碼格式與簽名對兩者都適用。QR 碼協定程式碼位於 engine/protocols.js;各鏈的解析器與簽名器位於 engine/src/。兩個平台 1.0.0 版的 AI 輔助安全審查均已全文公開。整合方面的問題請聯絡:support@bittool.com。