Block

隔離見證區塊的結構與非隔離見證區塊有何不同?

  • January 17, 2019

與傳統的非隔離見證區塊相比,隔離見證區塊的結構有什麼不同嗎?如果可能的話,圖表會很有幫助。

segwit 塊的 coinbase 交易必須包含對見證根雜湊的承諾的輸出,請參閱BIP141

承諾記錄在 coinbase 交易的 scriptPubKey 中。它必須至少為 38 個字節,其中 的前 6 個字節0x6a24aa21a9ed,即:

1-byte - OP_RETURN (0x6a)
  1-byte - Push the following 36 bytes (0x24)
  4-byte - Commitment header (0xaa21a9ed)
 32-byte - Commitment hash: Double-SHA256(witness root hash|witness reserved value)

第 39 個字節以後:沒有共識意義的可選數據

並且 coinbase 的輸入見證必須由一個 32 字節數組組成,用於見證保留值。

如果有多個 scriptPubKey 匹配該模式,則假定輸出索引最高的一個為承諾。

在交易層面,隔離見證交易必須將見證標誌設置為 0001,並在鎖定時間之前提供見證。非隔離見證交易不包含這些屬性。

交易結構

參見比特幣維基 - 交易

隔離見證區塊與非隔離見證區塊的不同之處在於,它需要在 coinbase 交易的 OP_RETURN 輸出中擁有見證承諾。此外,該塊將包含見證數據(duh!),由於塊大小限制增加到 4,000,000 個權重單位,該塊允許該塊超過之前的 1 MB 塊大小限制。

除了正常交易 id (txid) 之外,Segwit 還為每筆交易引入了見證交易 id (wtxid)。txid 不涵蓋見證數據,因此可以防止僅使用隔離見證輸入的交易受到第三方交易延展性的影響(請參閱交易延展性)。wtxid 確實涵蓋了見證中包含的簽名數據,因此仍然容易受到影響。對於非隔離見證交易,wtxid 等於 txid,它們仍然容易受到影響。

為了讓區塊送出區塊頭中的正常 Merkle 根未覆蓋的交易的見證數據,從 wtxid 計算第二個 Merkle 樹並送出到上述 Coinbase 輸出中的見證送出中。

如果一個區塊不包含任何隔離見證交易,見證承諾是可選的。

  • 您可以在此處閱讀有關見證人承諾結構的資訊:BIP0141
  • 您可以在此處查看最新區塊(558722)的見證承諾: 顯示區塊高度 558722 的承諾交易

通過blockstream.info

引用自:https://bitcoin.stackexchange.com/questions/83683