如何將 SHA-256 塊的標題加倍 #59,500?
我不確定如何組合所有這些資訊。 <https://blockchain.info/block/00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7>
版本 1
時間位 470771548(這是用於時間位的正確數字嗎?)
默克爾根 ff682ef66cd1b56213fd4db9462fb138f6d8c16d706d41969a7eacc819528038
大使 16641419
目前塊的雜湊 00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7
上一個塊的雜湊 00000000023bbab0e78a22d27fbd2d0cd13f8302fb3f560138e0e81d087ac7a1
我應該解釋更多嗎?:))))
更新:
01000000
版本
a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b0200000000
上一個雜湊
38805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff
默克爾雜湊
27b80a4c
時間戳
5c670f1c
位
8bedfd00
大使
如上所述,您應該從序列化塊中獲取前 80 個字節。由於此數據是十六進制編碼的,並且每個字節需要兩個十六進制數字進行編碼,因此塊頭是
80 * 2 = 160
數字。您會注意到一些欄位是反轉的,這是因為它們以小端格式表示。一旦你對這個數據進行雙重 sha256,你會發現一個帶有尾隨零而不是前導的雜湊,這也是因為字節序。
以下是提到的塊的樣子:
獲取前 160 位序列化標頭
01000000a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b020000000038805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff27b80a4c5c670f1c8bedfd00
並解析:
版本:(
01000000
這是小端序中的 1)上一個塊雜湊:(
a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b0200000000
注意尾隨零)Merkle Root:
38805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff
Timestamp:
27b80a4c
Bits:
5c670f1c
Nonce:
8bedfd00
一個散列它的python 3程式碼:
import hashlib data = bytes.fromhex("01000000a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b020000000038805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff27b80a4c5c670f1c8bedfd00") h1 = hashlib.sha256(data).digest() h2 = hashlib.sha256(h1).digest() print(h2.hex())
結果是
a7f6f121a9903284d02ebfe1e772d131d1e12195493c120531f46a0900000000
,這正是 的小端版本00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7