SegWit 格式的比特幣交易有哪些部分?
我知道隔離見證前的交易如下所示(這是區塊 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
十六進制數據 類型 意義 02000000
uint32 第 2 版 0001
2 個八位字節 見證旗 01
變種 交易輸入數 輸入 1 79aaafbe7c9d3b08
12a489facaf77508
c08c190ec7dfd82f
129aeb995aca23ab
32 個八位字節 引用 Tx 的雜湊 00000000
uint32 先前輸出的索引 00
變種 簽名腳本的長度(0 因為隔離見證?) fdffffff
4 個八位字節 序列 (nb RBF) 02
變種 交易輸出計數 輸出 1 0bd2190000000000
整數64 中本聰金額(0.01692171 BTC) 16
變種 腳本長度(0x16 = 22) 0014d2caa7b08db8
9cd62c9af34da533
32d30e53bb15
22 個八位字節 鎖定腳本 輸出 2 98151b0000000000
整數64 中本聰金額 16
變種 腳本長度(0x16 = 22) 00143d4427468cbe
7ae396427a1aa912
8fa05b18c7db
22 個八位字節 鎖定腳本 見證數據 02
變種 見證組件的數量 見證組件 1 47
變種 見證組件的長度 (0x47 = 71) 30440220573fd275
74cfdde484347621
e1f48f85ae975cb8
c2265a04496ded03
8896822302204a5e
04a3a2d160c3158c
aa39b58bfc91ac64
c484078ec0225a7d
4d2d4454661f01
71 個八位字節 見證 見證組件 2 21
變種 見證組件的長度 (0x21 = 33) 03d96e3819b52245
e42c76f869c9a875
f6ea5344cf1aee2e
6b3ab03adcfef0d8
0e
33 個八位字節 見證 de3b0b00
單元32 鎖定時間:000b3bde = 塊 736222 此交易在區塊 736223 中顯示為第 9 筆