跳至主要內容
進階

PSBT:部分簽章交易

PSBT 是一種標準格式,讓未完成的交易可以在多個軟體和設備之間安全傳遞。

15 分鐘

什麼是 PSBT?

PSBT(Partially Signed Bitcoin Transaction)是 BIP-174 定義的標準格式, 用於在不同軟體和硬體之間傳遞尚未完成簽章的比特幣交易。

PSBT 解決的問題

  • • 冷錢包/氣隙電腦的離線簽章
  • • 多簽錢包的多方協調
  • • 不同錢包軟體之間的互通
  • • 硬體錢包與軟體錢包的配合

PSBT 的角色

角色 職責 範例
Creator 創建交易框架(輸入/輸出) 觀察錢包、協調軟體
Updater 添加簽章所需的資訊 添加 UTXO、派生路徑
Signer 使用私鑰生成簽章 硬體錢包、離線電腦
Combiner 合併多個簽章 多簽協調軟體
Finalizer 組裝最終的 scriptSig/witness 完成交易
Extractor 提取可廣播的交易 產生原始交易

PSBT 流程圖

Creator: 創建 PSBT
Updater: 添加 UTXO 資訊
Signer(s): 簽章
Combiner: 合併簽章
Finalizer: 完成 witness
Extractor: 廣播

PSBT 結構

PSBT 使用鍵值對格式存儲資訊:

PSBT 結構:
├── 全域欄位
│   ├── 未簽章交易 (PSBT_GLOBAL_UNSIGNED_TX)
│   ├── xpub (可選)
│   └── 版本號
├── 輸入欄位 (每個輸入)
│   ├── 前序交易或 UTXO 資訊
│   ├── Redeem Script / Witness Script
│   ├── BIP-32 派生路徑
│   └── 部分簽章
└── 輸出欄位 (每個輸出)
    ├── Redeem Script / Witness Script
    └── BIP-32 派生路徑

常見應用場景

1. 硬體錢包簽章

軟體錢包創建 PSBT,透過 USB 或 SD 卡傳給硬體錢包簽章, 再返回已簽章的 PSBT 進行廣播。

流程

  1. 1. Sparrow Wallet 創建 PSBT
  2. 2. 通過 SD 卡傳給 Coldcard
  3. 3. Coldcard 驗證並簽章
  4. 4. 返回已簽章的 PSBT
  5. 5. Sparrow 廣播交易

2. 多簽錢包協調

2-of-3 多簽中,PSBT 在三個簽章者之間傳遞,收集足夠的簽章。

2-of-3 多簽流程

  1. 1. 協調者創建 PSBT
  2. 2. 發送給簽章者 A → 返回帶 A 簽章的 PSBT
  3. 3. 發送給簽章者 B → 返回帶 A+B 簽章的 PSBT
  4. 4. 已達到 2 個簽章,可以廣播

3. CoinJoin 協調

多個參與者各自簽署自己的輸入,協調者合併所有簽章。

PSBT 傳輸方式

  • Base64 文字:適合複製貼上
  • QR Code:適合手機和氣隙設備
  • .psbt 文件:適合 SD 卡和 USB
  • NFC:某些硬體錢包支援

Base64 編碼範例

cHNidP8BAHUCAAAAASaBcTce3/KF6Tig7cez...

開頭的 "cHNidP8" 解碼後是 "psbt" 魔術字節

PSBT v2 (BIP-370)

PSBT v2 改進了原始格式,主要變化:

  • • 交易欄位分散存儲,而非完整的未簽章交易
  • • 支援更靈活的交易構建(可增減輸入/輸出)
  • • 改善了 Creator 和 Updater 角色的分離
  • • 更好地支援多方交易協議(如 CoinJoin)

實際操作

Bitcoin Core CLI

# 創建 PSBT
bitcoin-cli walletcreatefundedpsbt '[]' '[{"bc1q...": 0.01}]'

# 處理 PSBT(添加 UTXO 資訊)
bitcoin-cli walletprocesspsbt "cHNidP8..."

# 簽章 PSBT
bitcoin-cli walletprocesspsbt "cHNidP8..." true

# 完成並提取交易
bitcoin-cli finalizepsbt "cHNidP8..."

# 廣播
bitcoin-cli sendrawtransaction "0200000001..."

Sparrow Wallet

  1. 創建交易後,點擊「Save Transaction」
  2. 選擇「PSBT」格式
  3. 傳給硬體錢包簽章
  4. 導入已簽章的 PSBT
  5. 廣播交易

安全考量

  • PSBT 本身不包含私鑰,可以安全傳輸
  • 簽章設備應驗證交易詳情(地址、金額、手續費)
  • 確保 PSBT 來源可信,避免簽署惡意交易
  • 硬體錢包應顯示完整交易資訊供用戶確認

相關 BIP

  • BIP-174:PSBT 格式
  • • BIP-370:PSBT v2
  • BIP-32:HD 錢包(派生路徑)

延伸閱讀: 多簽錢包入門 詳細說明了 PSBT 在多簽場景的應用。

已複製連結
已複製到剪貼簿