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 提供了一個簡單但強大的標準,用於在錢包之間交換標籤資料。 這對於用戶管理其比特幣資產、維護隱私以及進行稅務記錄都非常重要。 隨著更多錢包採用這個標準,用戶將能更自由地在不同錢包之間遷移, 而不會失去寶貴的交易歷史記錄。
延伸閱讀: 查看 GitHub 上的完整 BIP-329 文件
已複製連結