跳至主要內容
Applications Draft

BIP-329: 錢包標籤導出格式

定義錢包標籤的標準導出格式(JSON Lines),便於在不同錢包間遷移和備份。

Craig Raw 2022年8月23日
BIP 編號

329

類型

Applications

狀態

Draft

創建日期

2022-08-23

摘要

BIP-329 定義了一個標準格式,用於導出和導入錢包中的標籤資料。 這些標籤包括地址標籤、交易標籤、輸出標籤等,是用戶組織和追蹤資金的重要元數據。 通過標準化格式,用戶可以輕鬆在不同錢包之間遷移這些資訊。

動機

標籤的重要性

錢包標籤是用戶理解其比特幣交易歷史的關鍵:

記錄來源

「這筆款項來自交易所提款」或「這是朋友的還款」

追蹤用途

「這個地址用於接收薪資」或「這是捐款地址」

稅務記錄

清楚標記交易性質,便於報稅計算

隱私管理

標記哪些 UTXO 來自已知來源,避免混合使用

現有問題

缺乏標準的後果

  • 錢包鎖定:標籤資料被困在特定錢包中
  • 遷移困難:切換錢包時失去所有標籤
  • 備份不完整:助記詞備份不包含標籤
  • 格式不一致:每個錢包使用不同的內部格式

標籤類型

類型 識別符 說明
tx 交易 ID(txid) 標記整筆交易的用途或來源
addr 地址字串 標記地址的擁有者或用途
pubkey 公鑰(hex) 標記特定公鑰
input txid:vout 標記特定交易輸入
output txid:vout 標記特定交易輸出(UTXO)
xpub 擴展公鑰 標記整個 HD 錢包帳戶

文件格式

JSON Lines

BIP-329 使用 JSON Lines 格式(每行一個 JSON 對象):

文件格式:.jsonl(JSON Lines)

每行一個標籤記錄:
{"type":"tx","ref":"abc123...","label":"交易所提款"}
{"type":"addr","ref":"bc1q...","label":"儲蓄地址"}
{"type":"output","ref":"def456...:0","label":"冷錢包資金"}

優點:
• 容易解析和生成
• 支援串流處理
• 人類可讀
• 易於版本控制

記錄結構

必要欄位:
{
  "type": "tx" | "addr" | "pubkey" | "input" | "output" | "xpub",
  "ref": "<識別符>",
  "label": "標籤文字"
}

可選欄位:
{
  "type": "output",
  "ref": "txid:vout",
  "label": "主要標籤",
  "origin": "m/84'/0'/0'/0/5",  // BIP-32 派生路徑
  "spendable": true              // 是否可花費
}

完整範例

labels.jsonl

{"type":"tx","ref":"f91d0a8a78462bc59398f2c5d7a84fcff491c26ba54c4833478b202796c8aafd","label":"Kraken 提款"}
{"type":"tx","ref":"6fb24bc9b7a0c0d9bef2c8a2aeb8c7a8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4","label":"支付房租 - 2024年1月"}
{"type":"addr","ref":"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4","label":"主要接收地址"}
{"type":"addr","ref":"bc1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qccfmv3","label":"冷儲存"}
{"type":"output","ref":"f91d0a8a78462bc59398f2c5d7a84fcff491c26ba54c4833478b202796c8aafd:0","label":"KYC 資金","origin":"m/84'/0'/0'/0/15"}
{"type":"output","ref":"f91d0a8a78462bc59398f2c5d7a84fcff491c26ba54c4833478b202796c8aafd:1","label":"找零","spendable":true}
{"type":"xpub","ref":"xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWZiD6...","label":"Ledger 硬體錢包"}

隱私標記

標籤可以幫助管理 UTXO 的隱私屬性:

KYC 資金

{
  "type": "output",
  "ref": "abc...:0",
  "label": "Coinbase 提款 - KYC"
}

標記已知來源的資金,避免與匿名資金混合。

匿名資金

{
  "type": "output",
  "ref": "def...:1",
  "label": "CoinJoin 輸出"
}

標記經過隱私增強的資金。

加密和安全

安全建議

  • 加密存儲:標籤文件應該加密存儲,因為它包含敏感資訊 (交易描述、地址用途等)。
  • 安全傳輸:在設備間傳輸時使用加密通道。
  • 備份策略:與助記詞分開備份,但同樣重要。
  • 刪除舊版本:更新標籤後安全刪除舊的導出文件。

錢包支援

Sparrow Wallet — 完整 BIP-329 支援,導入/導出
Electrum — 支援 BIP-329 格式
BlueWallet — 支援導入/導出
Bitcoin Core — 討論中

使用場景

錢包遷移

從 Wallet A 遷移到 Wallet B:

1. Wallet A: 導出標籤
   File → Export → Labels (BIP-329)
   → labels-2024-01-15.jsonl

2. 轉移文件(安全方式)
   • 加密 USB
   • 端對端加密傳輸

3. Wallet B: 導入助記詞
   → 恢復所有地址和交易

4. Wallet B: 導入標籤
   File → Import → Labels (BIP-329)
   → 所有標籤恢復!

多錢包同步

在多個設備上保持標籤同步:

手機錢包                  桌面錢包
    │                        │
    ├── 導出標籤 ──────────→ │
    │                        ├── 合併標籤
    │ ←─────────── 導出標籤 ──┤
    ├── 合併標籤              │
    │                        │
    ↓                        ↓
同步的標籤資料          同步的標籤資料

與 Output Descriptors 配合

BIP-329 可以與 Output Descriptors 配合使用,提供完整的錢包備份:

完整錢包備份包含:

1. 助記詞(BIP-39)
   → 恢復私鑰

2. Output Descriptors(BIP-380)
   → 恢復地址派生規則

3. 標籤文件(BIP-329)
   → 恢復所有元數據

三者結合 = 完整的錢包恢復

總結

BIP-329 提供了一個簡單但強大的標準,用於在錢包之間交換標籤資料。 這對於用戶管理其比特幣資產、維護隱私以及進行稅務記錄都非常重要。 隨著更多錢包採用這個標準,用戶將能更自由地在不同錢包之間遷移, 而不會失去寶貴的交易歷史記錄。

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