跳至主要內容
進階

交易結構

詳細解析比特幣交易的完整結構,包括輸入、輸出、見證數據和交易 ID。

25 分鐘

交易概覽

比特幣交易是一個數據結構,描述了比特幣價值的轉移。每筆交易消費一個或多個 UTXO 作為輸入, 並創建新的 UTXO 作為輸出。交易被包含在區塊中,並通過工作量證明永久記錄在區塊鏈上。

交易結構

一筆比特幣交易包含以下主要部分:

Transaction {
  version:      4 bytes
  marker:       1 byte  (0x00, SegWit only)
  flag:         1 byte  (0x01, SegWit only)
  input_count:  VarInt
  inputs:       TxIn[]
  output_count: VarInt
  outputs:      TxOut[]
  witness:      Witness[] (SegWit only)
  locktime:     4 bytes
}
    

版本號 (Version)

4 個字節,表示交易版本。版本 1 是最初的交易格式,版本 2 添加了相對時間鎖定支持(BIP-68)。

輸入 (Inputs)

每個輸入引用一個之前的 UTXO:

TxIn {
  prev_txid:     32 bytes  // 引用的交易 ID
  prev_vout:     4 bytes   // 輸出索引
  script_sig:    VarBytes  // 解鎖腳本(傳統)
  sequence:      4 bytes   // 序列號
}
    

輸出 (Outputs)

每個輸出定義了新的 UTXO:

TxOut {
  value:         8 bytes   // 金額(satoshis)
  script_pubkey: VarBytes  // 鎖定腳本
}
    

見證數據 (Witness)

SegWit 交易將簽名和公鑰移到見證區域。這解決了交易延展性問題, 並且見證數據在計算區塊權重時有折扣。

鎖定時間 (Locktime)

4 個字節,定義交易可以被包含在區塊中的最早時間。如果值小於 5 億, 表示區塊高度;否則表示 Unix 時間戳。

交易 ID

比特幣有兩種交易 ID:

  • TXID 傳統交易 ID,對整個交易(不含見證)進行雙重 SHA256 哈希
  • WTXID 見證交易 ID,包含見證數據的哈希(SegWit 交易)

常見交易類型

P2PKH (Pay to Public Key Hash)

傳統地址格式(以 1 開頭)。腳本要求提供公鑰和簽名,公鑰的哈希必須匹配。

P2SH (Pay to Script Hash)

腳本哈希地址(以 3 開頭)。允許複雜的花費條件,如多重簽名。

P2WPKH (Pay to Witness Public Key Hash)

原生 SegWit 地址(以 bc1q 開頭)。簽名在見證區域,費用更低。

P2TR (Pay to Taproot)

Taproot 地址(以 bc1p 開頭)。支持 Schnorr 簽名和 MAST,隱私性更好。

交易費用

交易費用 = 輸入總額 - 輸出總額。費用由礦工收取,用於激勵他們將交易包含在區塊中。 費用通常以 sat/vB(每虛擬字節多少聰)表示。

重要提醒

如果你沒有創建找零輸出,差額全部會變成交易費用!這是一個常見的錯誤, 可能導致損失大量比特幣。

延伸閱讀

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