Bitcoin-Core

SegWit 格式的比特幣交易有哪些部分?

  • May 13, 2022

我知道隔離見證前的交易如下所示(這是區塊 170 中交易的雜湊值 - 10000 比特幣比薩交易):

0100000001c997a5e56e104102fa209c6a852dd90660a20b2d9c352423edce25857fcd3704000000004847304402204e45e16932b8af514961a1d3a1a25fdf3f4f7732e9d624c6c61548ab5fb8cd410220181522ec8eca07de4860a4acdd12909d831cc56cbbac4622082221a8768d1d0901ffffffff0200ca9a3b00000000434104ae1a62fe09c5f51b13905f07f06b99a2f7159b2225f374cd378d71302fa28414e7aab37397f554a7df5f142c21c1b7303b8a0626f1baded5c72a704f7e6cd84cac00286bee0000000043410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3ac00000000

但是,這是所有交易的結構方式嗎?如果不是,它們看起來如何(我假設他們使用 SegWits)。

在回答塊以什麼格式儲存交易數據?我舉了一個手動解碼十六進制轉儲中最早的比特幣交易結構的例子。

隔離見證交易添加了一些作為交易結構可選部分的欄位。在非隔離見證交易中,那些隔離見證欄位不存在(長度為零)。

第一個這樣的可選欄位是版本號之後的見證標誌

第二個可選欄位是最終鎖定時間欄位之前的見證數據。

因此,任何解析器都必須查看版本號後面的 2 個字節,並確定它是 segwit 標誌(0x0001 big-endian!)還是 tx_in_count varint,也可能是 tx_in 結構的一部分。


只是為了好玩,一個隨機選擇的例子,交易 b0dce2eccbd85f9391e108c8f8f3735cc7b9e6a30f13f82a7fdfaa090d4d093c

0200000000010179 aaafbe7c9d3b0812 a489facaf77508c0 8c190ec7dfd82f12 9aeb995aca23ab00 00000000fdffffff 020bd21900000000 00160014d2caa7b0 8db89cd62c9af34d a53332d30e53bb15 98151b0000000000 1600143d4427468c be7ae396427a1aa9 128fa05b18c7db02 4730440220573fd2 7574cfdde4843476 21e1f48f85ae975c b8c2265a04496ded 038896822302204a 5e04a3a2d160c315 8caa39b58bfc91ac 64c484078ec0225a 7d4d2d4454661f01 2103d96e3819b522 45e42c76f869c9a8 75f6ea5344cf1aee 2e6b3ab03adcfef0 d80ede3b0b00

十六進制數據類型意義
02000000uint32第 2 版
00012 個八位字節見證旗
01變種交易輸入數
輸入 1
79aaafbe7c9d3b08 12a489facaf77508 c08c190ec7dfd82f 129aeb995aca23ab32 個八位字節引用 Tx 的雜湊
00000000uint32先前輸出的索引
00變種簽名腳本的長度(0 因為隔離見證?)
fdffffff4 個八位字節序列 (nb RBF)
02變種交易輸出計數
輸出 1
0bd2190000000000整數64中本聰金額(0.01692171 BTC)
16變種腳本長度(0x16 = 22)
0014d2caa7b08db8 9cd62c9af34da533 32d30e53bb1522 個八位字節鎖定腳本
輸出 2
98151b0000000000整數64中本聰金額
16變種腳本長度(0x16 = 22)
00143d4427468cbe 7ae396427a1aa912 8fa05b18c7db22 個八位字節鎖定腳本
見證數據
02變種見證組件的數量
見證組件 1
47變種見證組件的長度 (0x47 = 71)
30440220573fd275 74cfdde484347621 e1f48f85ae975cb8 c2265a04496ded03 8896822302204a5e 04a3a2d160c3158c aa39b58bfc91ac64 c484078ec0225a7d 4d2d4454661f0171 個八位字節見證
見證組件 2
21變種見證組件的長度 (0x21 = 33)
03d96e3819b52245 e42c76f869c9a875 f6ea5344cf1aee2e 6b3ab03adcfef0d8 0e33 個八位字節見證
de3b0b00單元32鎖定時間:000b3bde = 塊 736222

此交易在區塊 736223 中顯示為第 9 筆

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