I'm working through this medium post that describes all header fields of a block. The explanation of the version field is a little unclear for me.
For starters I'm trying to consider version = 1, as in the very beginning of the chain:
version_int = 1
version_hex = hex(version_int)
# from my understanding I need to add value 0x100000000 to the version
# though I do not understand why, currently I'm just taking this as a given fact
version_hex_min = hex(int(0x100000000) + version_int)[-8:]
# of course I need the little endian notation:
version_hex_min_le = binascii.hexlify(binascii.unhexlify(version_hex)[::-1])
This gives me the little-endian based hex value:
0x01000000
That I can obviously use to calculate the header hash for version 1.
When I check the latest block headers, I see a version like that:
0x20002000
That would result in the big endian hex representation:
0x00200020
And to an decimal int:
2097184
How does that number refers to the actual and current version and how do I extract the extra information that the miner used for this so called "overt ASIC boost"?