跳至主要內容
高級

V3 Transactions

深入了解 Bitcoin Core 的 V3 交易(TRUC),專為閃電網路設計的交易策略。

12 分鐘

V3 交易概覽

V3 交易(也稱為 TRUC - Topologically Restricted Until Confirmation)是 Bitcoin Core 引入的新交易策略,專門解決閃電網路等二層協議面臨的交易 pinning 攻擊問題。

關鍵特性

限制

  • • 最多 1 個子交易
  • • 子交易最大 1000 vB
  • • 禁止祖先依賴
  • • 強制 RBF 可替換

好處

  • • 防止 pinning 攻擊
  • • 可預測的 CPFP 成本
  • • 增強閃電網路安全
  • • 簡化手續費估算

Pinning 問題

交易 Pinning 攻擊:

攻擊者利用 mempool 規則阻止合法交易被確認或替換。

典型場景(閃電網路):
┌─────────────────────────────────────────────────────────────┐
│ 1. Alice 和 Bob 有閃電通道                                  │
│ 2. Bob 想作弊,廣播舊的承諾交易                             │
│ 3. Alice 需要廣播懲罰交易                                   │
│ 4. Bob 創建「pin」交易阻止 Alice                            │
└─────────────────────────────────────────────────────────────┘

Pinning 方法:
┌─────────────────────────────────────────────────────────────┐
│ 方法 1:大量低費率子交易                                    │
│ ├── 創建大量子交易消耗 mempool 限制                        │
│ ├── 達到 25 祖先/後代限制                                  │
│ └── 阻止 CPFP 添加新子交易                                 │
├─────────────────────────────────────────────────────────────┤
│ 方法 2:大型低費率子交易                                    │
│ ├── 創建接近 100 KB 的子交易                               │
│ ├── 低費率但絕對費用高                                     │
│ └── RBF 需要支付更高絕對費用                               │
└─────────────────────────────────────────────────────────────┘

V3 規則

V3 交易規則(nVersion = 3):

┌─────────────────────────────────────────────────────────────┐
│ 規則 1:拓撲限制                                            │
├─────────────────────────────────────────────────────────────┤
│ • V3 交易最多有 1 個未確認子交易                            │
│ • V3 交易最多有 1 個未確認父交易                            │
│ • 形成簡單的父-子鏈                                         │
│                                                             │
│     ┌─────┐                                                 │
│     │ V3  │ 父交易                                          │
│     │Parent│                                                │
│     └──┬──┘                                                 │
│        │                                                    │
│        ▼                                                    │
│     ┌─────┐                                                 │
│     │ V3  │ 子交易(最多 1 個)                             │
│     │Child│                                                 │
│     └─────┘                                                 │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│ 規則 2:子交易大小限制                                      │
├─────────────────────────────────────────────────────────────┤
│ • 子交易最大 1000 虛擬字節                                  │
│ • 限制 RBF 替換成本                                         │
│ • 使 CPFP 費用可預測                                        │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│ 規則 3:強制 RBF                                            │
├─────────────────────────────────────────────────────────────┤
│ • V3 交易視為可替換                                         │
│ • 無論 nSequence 值                                         │
│ • 允許隨時替換                                              │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│ 規則 4:無非 V3 祖先                                        │
├─────────────────────────────────────────────────────────────┤
│ • V3 交易不能有未確認的非 V3 祖先                           │
│ • 確保整個包裹遵循 V3 規則                                  │
└─────────────────────────────────────────────────────────────┘

防 Pinning 機制

V3 如何防止 Pinning:

攻擊場景:Bob 嘗試 pin Alice 的懲罰交易

傳統交易(容易被 pin):
┌─────────────────────────────────────────────────────────────┐
│ Bob 的承諾交易                                              │
│       │                                                     │
│       ├──→ Bob 的 pin 交易 1(低費率,大)                  │
│       ├──→ Bob 的 pin 交易 2                               │
│       ├──→ ... (最多 25 個子交易)                          │
│       └──→ Alice 無法添加更多子交易!                       │
│                                                             │
│ 結果:Alice 的懲罰交易被阻止                                │
└─────────────────────────────────────────────────────────────┘

V3 交易(防止 pin):
┌─────────────────────────────────────────────────────────────┐
│ Bob 的 V3 承諾交易                                          │
│       │                                                     │
│       └──→ Bob 的 pin 嘗試(最多 1000 vB)                  │
│                                                             │
│ Alice 可以:                                                │
│ • RBF 替換 Bob 的子交易(成本可控,最多 1000 vB)           │
│ • 或 RBF 替換整個承諾交易                                   │
│                                                             │
│ 結果:Alice 可以確保懲罰交易被確認                          │
└─────────────────────────────────────────────────────────────┘

閃電網路應用

閃電網路中的 V3 應用:

新的承諾交易結構:
┌─────────────────────────────────────────────────────────────┐
│ V3 承諾交易                                                 │
│ ├── to_local 輸出(延遲 + 撤銷)                            │
│ ├── to_remote 輸出(P2WPKH)                                │
│ ├── HTLC 輸出 1                                             │
│ ├── HTLC 輸出 2                                             │
│ └── 錨點輸出(用於 CPFP)                                   │
│                                                             │
│ 特點:                                                      │
│ • nVersion = 3                                              │
│ • 0 費率(通過 CPFP 支付)                                  │
│ • 錨點輸出供雙方使用                                        │
└─────────────────────────────────────────────────────────────┘

CPFP 子交易:
┌─────────────────────────────────────────────────────────────┐
│ V3 CPFP 交易                                                │
│ ├── 輸入:錨點輸出                                          │
│ ├── 輸入:用戶的 UTXO(支付費用)                           │
│ └── 輸出:找零                                              │
│                                                             │
│ 限制:                                                      │
│ • 最大 1000 vB                                              │
│ • 足夠包含必要輸入輸出                                      │
└─────────────────────────────────────────────────────────────┘

使用方式

# 創建 V3 交易(使用原始交易 API)

# 設置 nVersion = 3
bitcoin-cli createrawtransaction '[
  {"txid": "abc...", "vout": 0}
]' '[
  {"bc1q...": 0.001}
]' 0 true
# 返回的交易需要修改版本號

# 或使用 Python
import struct

def set_version_3(raw_tx_hex):
    """將交易版本設為 3"""
    tx_bytes = bytes.fromhex(raw_tx_hex)
    # 版本號是前 4 bytes(小端序)
    version_3 = struct.pack('

注意: V3 交易主要供閃電網路等協議使用。普通用戶通常不需要手動創建 V3 交易。

版本比較

特性 V1/V2 V3 (TRUC)
最大子交易數 25 1
子交易大小限制 ~100 KB 1000 vB
RBF 可選(BIP-125) 強制啟用
Pinning 風險
CPFP 成本預測 困難 容易
主要用途 通用 閃電網路

與 Package Relay 配合

V3 + Package Relay 組合:

Package Relay 允許:
├── 將父子交易作為包裹提交
├── 包裹整體滿足費率要求即可
└── 即使父交易 0 費率也能接受

V3 交易的包裹:
┌─────────────────────────────────────────────────────────────┐
│ 包裹結構:                                                  │
│                                                             │
│ ┌─────────────────────────────────┐                        │
│ │ V3 父交易(0 費率)              │                        │
│ │ • 閃電網路承諾交易              │                        │
│ │ • 無法單獨進入 mempool          │                        │
│ └────────────┬────────────────────┘                        │
│              │                                              │
│              ▼                                              │
│ ┌─────────────────────────────────┐                        │
│ │ V3 子交易(高費率,≤1000 vB)   │                        │
│ │ • CPFP 交易                     │                        │
│ │ • 支付足夠費用                  │                        │
│ └─────────────────────────────────┘                        │
│                                                             │
│ 包裹作為整體提交,一起進入 mempool                          │
└─────────────────────────────────────────────────────────────┘

實現狀態

V3 交易實現進度:

Bitcoin Core:
├── v28.0:V3 交易策略規則實現
├── 需要 Package Relay 配合
└── 正在積極開發中

閃電網路:
├── BOLT 規範更新中
├── LND、CLN、Eclair 準備中
└── 需要時間遷移

時間線(預估):
├── 2024-2025:Bitcoin Core 完整支持
├── 2025-2026:閃電網路實現採用
└── 逐步遷移現有通道

總結

  • 防 Pinning:限制子交易數量和大小
  • 閃電網路:增強時間敏感交易安全
  • 可預測:CPFP 費用易於計算
  • 開發中:完整支持仍在實現中
已複製連結
已複製到剪貼簿