Diketahui sebuah Coin mempunyai algoritma mining Sha256, dengan data-data Block header sebagai berikut : | Version | | 536870912 |
| Previous Block | | 00000000000000002ac7f20c4b909f5857d3363700d3648958fd4675beb534a2 |
| Merkle Root | | e04a3b043d76ace078283db0ff61910f61cb06a685f5a3dee0701d48c064c9f4 |
| Time | | 2018-Nov-08 22:28:09 (UTC) |
| Bits | | 420106321 |
| Nonce | | 3021489935 |
1. Dengan ke-6 data diatas, sebuah node dapat melakukan proses verifikasi dengan cara mencari hash dari Block tersebut. Berapakah nilai Hash dari Block yang dimaksud ?
1. Merubah ke-6 fields diatas dengan melakukan swap endian (reverse per Byte). Supaya tidak terjadi kesalahan penulisan data, lebih mudah jika Hex digit dipisahkan per 1 byte (2 Hex digits)
- Convert Version ke hex, lalu lakukan swap endian (reverse per Byte)
| Version | | 536870912 |
| Version (Hex) | | 20 00 00 00 |
| Reverse | | 00 00 00 20 |
- Lakukan swap endian (reverse per Byte) pada Previous Block
| Previous Block | | 00 00 00 00 00 00 00 00 2a c7 f2 0c 4b 90 9f 58 57 d3 36 37 00 d3 64 89 58 fd 46 75 be b5 34 a2 |
| Reverse | | a2 34 b5 be 75 46 fd 58 89 64 d3 00 37 36 d3 57 58 9f 90 4b 0c f2 c7 2a 00 00 00 00 00 00 00 00 |
| Reverse | | a234b5be7546fd588964d3003736d357589f904b0cf2c72a0000000000000000 |
- Reverse Merkle Root (swap endian)
| Merkle Root | | e0 4a 3b 04 3d 76 ac e0 78 28 3d b0 ff 61 91 0f 61 cb 06 a6 85 f5 a3 de e0 70 1d 48 c0 64 c9 f4 |
| Reverse | | f4 c9 64 c0 48 1d 70 e0 de a3 f5 85 a6 06 cb 61 0f 91 61 ff b0 3d 28 78 e0 ac 76 3d 04 3b 4a e0 |
| Reverse | | f4c964c0481d70e0dea3f585a606cb610f9161ffb03d2878e0ac763d043b4ae0 |
- Merubah bentuk waktu ke (epoch) timestamp, lalu convert to Hex dan lakukan swap endian (reverse).
- Merubah Bits ke bentuk Hex, lalu lakukan swap endian (reverse)
| Bits | | 420106321 |
| Bits (Hex) | | 190a5051 |
| Reverse | | 51500a19 |
- Merubah Nonce ke bentuk Hex, lalu lakukan swap endian (reverse)
| Nonce | | 3021489935 |
| Nonce (Hex) | | b418470f |
| Reverse | | 0f4718b4 |
- Mencari nilai Header_Hex = Rev Version + Rev Prev Block + Rev Merkle Root + Rev Timestamp + Rev Rev Bits + Rev Nonce
Header_Hex = 00000020 + a234b5be7546fd588964d3003736d357589f904b0cf2c72a0000000000000000 + f4c964c0481d70e0dea3f585a606cb610f9161ffb03d2878e0ac763d043b4ae0 + 79b8e45b + 51500a19 + 0f4718b4
- Melakukan double hashing pada Header_Hex, dan untuk final hash harus dilakukan swap endian (reverse)
| Double Hashing Sha256 | | = Sha256 (sha256 (Header_Hex)) |
| Block hash | | = Reverse (Double Hashing Sha256) |
# Cara 1 menggunakan calculator dari
http://extranet.cryptomathic.com/hashcalc/index sha256 (Header_Hex) = Sha256(00000020a234b5be7546fd588964d3003736d357589f904b0cf2c72a0000000000000000f4c964c
0481d70e0dea3f585a606cb610f9161ffb03d2878e0ac763d043b4ae079b8e45b51500a190f4718
b4)
sha256 (Header_Hex) = 9693d04d327f184ebf97e70995ac1b844cf79c9231b449095a1030887c8e2732

Sha256 (Sha256 (Header_Hex) = Sha256 (9693d04d327f184ebf97e70995ac1b844cf79c9231b449095a1030887c8e2732)
Double Hashing Sha256 = 04b1bccf8b83dbac2921233c100132d07515ecbfd18f23cc0100000000000000
Double Hashing Sha256 = 04 b1 bc cf 8b 83 db ac 29 21 23 3c 10 01 32 d0 75 15 ec bf d1 8f 23 cc 01 00 00 00 00 00 00 00

Lalu lakukan swap endian (reverse per Byte) untuk Final Hash
Block hash = 00 00 00 00 00 00 00 01 cc 23 8f d1 bf ec 15 75 d0 32 01 10 3c 23 21 29 ac db 83 8b cf bc b1 04
Block hash = 0000000000000001cc238fd1bfec1575d03201103c232129acdb838bcfbcb104
# Cara 2 melakukan double Hashing dengan Python :
>>> import hashlib, binascii
>>> from binascii import unhexlify
>>> from hashlib import sha256
>>> header = unhexlify("00000020a234b5be7546fd588964d3003736d357589f904b0cf2c72a0000000000000000f4c964c
0481d70e0dea3f585a606cb610f9161ffb03d2878e0ac763d043b4ae079b8e45b51500a190f4718
b4")
>>> sha256(sha256(header).digest()).hexdigest()

Result = '04b1bccf8b83dbac2921233c100132d07515ecbfd18f23cc0100000000000000' >>> (Swap endian / Reverse per Byte)
Block hash = 0000000000000001cc238fd1bfec1575d03201103c232129acdb838bcfbcb104
Valid Proof :
https://explorer.litecoinca.sh/block/0000000000000001cc238fd1bfec1575d03201103c232129acdb838bcfbcb104- snip -