#StackBounty: #block #mining-theory #hash #sha256 Why do we inverse the hash of the blockheader?

Bounty: 50

Let’s pick this example blockheader-hashing in Python:

from hashlib import sha256
import hashlib
header = "0000002066720b99e07d284bd4fe67ff8c49a5db1dd8514fcdab610000000000000000007829844f4c3a41a537b3131ca992643eaa9d093b2383e4cdc060ad7dc548118751eb505ac1910018de19b302".decode('hex')
print sha256(sha256(header).digest()).digest()[::-1].encode('hex')
// result is 00000000000000000020cf2bdc6563fb25c424af588d5fb7223461e72715e4a9

I know that it’s part of the protocol and otherwise, a block will not be accepted, but:

  1. Why do we not accept a hash that ends with all those zeros? Is it because it’s easier for a program to calculate if hash < expected_hash?
  2. But in this case, I don’t understand why do we do not simply accept a hash sha256(sha256(header).digest()).digest().encode('hex') that is lower than the expected hash? The probability to get that should be as high as the inversed one.

So what’s the reason of inversing it?

Get this bounty!!!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.