Transactions

如何將 SHA-256 塊的標題加倍 #59,500?

  • December 28, 2021

我不確定如何組合所有這些資訊。 <https://blockchain.info/block/00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7>

版本 1

時間位 470771548(這是用於時間位的正確數字嗎?)

默克爾根 ff682ef66cd1b56213fd4db9462fb138f6d8c16d706d41969a7eacc819528038

大使 16641419

目前塊的雜湊 00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7

上一個塊的雜湊 00000000023bbab0e78a22d27fbd2d0cd13f8302fb3f560138e0e81d087ac7a1

https://blockchain.info/block/00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7?format=hex獲取前 160 個符號

我應該解釋更多嗎?:))))

更新:

01000000版本

a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b0200000000上一個雜湊

38805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff默克爾雜湊

27b80a4c時間戳

5c670f1c

8bedfd00大使

如上所述,您應該從序列化塊中獲取前 80 個字節。由於此數據是十六進制編碼的,並且每個字節需要兩個十六進制數字進行編碼,因此塊頭是80 * 2 = 160數字。

您會注意到一些欄位是反轉的,這是因為它們以小端格式表示。一旦你對這個數據進行雙重 sha256,你會發現一個帶有尾隨零而不是前導的雜湊,這也是因為字節序。

以下是提到的塊的樣子:

獲取前 160 位序列化標頭

01000000a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b020000000038805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff27b80a4c5c670f1c8bedfd00

並解析:

版本:(01000000這是小端序中的 1)

上一個塊雜湊:( a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b0200000000注意尾隨零)

Merkle Root38805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff

Timestamp27b80a4c

Bits5c670f1c

Nonce8bedfd00

一個散列它的python 3程式碼:

import hashlib
data = bytes.fromhex("01000000a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b020000000038805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff27b80a4c5c670f1c8bedfd00")
h1 = hashlib.sha256(data).digest()
h2 = hashlib.sha256(h1).digest()
print(h2.hex())

結果是a7f6f121a9903284d02ebfe1e772d131d1e12195493c120531f46a0900000000,這正是 的小端版本00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7

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