Bitcoin-Core
塊以什麼格式儲存原始交易數據?
它是否按字面意思儲存原始交易數據(請原諒格式不准確):
0x24134i59435ej3…9 發送 0x9wri03vw3sdfsd…i 26.00000023423 比特幣。
還是儲存方式不同。
這是一個例子
塊 170 包含除了 coinbase 交易之外的第一筆交易。其中,中本聰支付了 Hal Finney 10 BTC。這是第一次一個人用比特幣支付另一個人。
由於數據是二進制的,我們必須使用它的可列印表示以使其在此網頁中可見。我選擇十六進制:
0100000001c997a5e56e104102fa209c6a852dd90660a20b2d9c352423edce25 857fcd3704000000004847304402204e45e16932b8af514961a1d3a1a25fdf3f 4f7732e9d624c6c61548ab5fb8cd410220181522ec8eca07de4860a4acdd1290 9d831cc56cbbac4622082221a8768d1d0901ffffffff0200ca9a3b0000000043 4104ae1a62fe09c5f51b13905f07f06b99a2f7159b2225f374cd378d71302fa2 8414e7aab37397f554a7df5f142c21c1b7303b8a0626f1baded5c72a704f7e6c d84cac00286bee0000000043410411db93e1dcdb8a016b49840f8c53bc1eb68a 382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b 64f9d4c03f999b8643f656b412a3ac00000000
幾個星期前,我認為用手算出這意味著什麼會很好。這是我在失去興趣之前走了多遠:
十六進制數據 意義 01000000
版本 1(小端 uint32) 01
交易輸入的數量(varint) 第一次輸入 c997a5e56e104102
fa209c6a852dd906
60a20b2d9c352423
edce25857fcd3704
引用交易的雜湊(32 個八位字節) 00000000
引用事務中的輸出索引 (uint32) 48
簽名腳本的長度(varint)。十六進制的 48 是十進制的 72。 47304402204e45e1
6932b8af514961a1
d3a1a25fdf3f4f77
32e9d624c6c61548
ab5fb8cd41022018
1522ec8eca07de48
60a4acdd12909d83
1cc56cbbac462208
2221a8768d1d0901
簽名腳本(72 個八位字節) ffffffff
順序 02
輸出數量 第一個輸出 00ca9a3b00000000
金額 1000000000 satoshi 即 10 BTC (int64) 43
腳本長度 4104ae1a62fe09c5
f51b13905f07f06b
99a2f7159b2225f3
74cd378d71302fa2
8414e7aab37397f5
54a7df5f142c21c1
b7303b8a0626f1ba
ded5c72a704f7e6c
d84cac
腳本 第二個輸出 00286bee00000000
金額 40 比特幣。這是變化。 43
腳本長度 410411db93e1dcdb
8a016b49840f8c53
bc1eb68a382e97b1
482ecad7b148a690
9a5cb2e0eaddfb84
ccf9744464f82e16
0bfa9b8b64f9d4c0
3f999b8643f656b4
12a3ac
腳本 00000000
鎖定時間 = 解鎖(4 個八位字節) 我可能應該解碼輸出上的鎖定腳本。
41
是 41個 16字節的 OP_PUSHDATA。然後我們將 41個 16字節的數據壓入堆棧,最後ac
是 OP_CHECKSIG,它需要堆棧上的簽名和公鑰,它會從堆棧中取出並檢查。這個腳本只有在花錢時才會真正執行。您可以通過將它們按字節(一次兩個十六進制數字)反轉為大端表示並在程序員模式下將其輸入 Windows Calculator 來檢查小端數字 - 這是第二個輸出量(
00286bee00000000
LE ->00000000ee6b2800
BE):這就是我們知道的
00286bee00000000
意思是 40000000000 Satoshi。這是 40 比特幣。這種早期交易是一種稱為支付公鑰(P2PK)的早期類型。它是最簡單的類型。現在使用的流行類型更複雜。
當然,您可以使用大多數區塊鏈瀏覽器輕鬆獲得此交易的 JSON 表示。我發現這有點令人不滿意,因為它們經常引入一些人為元素(例如腳本的“十六進制”和“asm”表示),因此您永遠無法確定 JSON 項與基礎數據部分的對應程度。因此,上述解碼嘗試。
相關問題