Skip to content

Block Header

General format of a Block Header in a Mimblewimble/Grin:

Field Description Size
version Version of the block 2 bytes
height Height of this block since the genesis block (height 0) 8 bytes
timestamp Timestamp at which the block was built 8 bytes
prev_hash Hash of the block previous to this in the chain 32 bytes
prev_root Root hash of the header MMR at the previous header 32 bytes
output_root Merkle root of all the commitments in the TxHashSet 32 bytes
range_proof_root Merkle root of all range proofs in the TxHashSet 32 bytes
kernel_root Merkle root of all transaction kernels in the TxHashSet 32 bytes
total_kernel_offset Total accumulated sum of kernel offsets since genesis block. 32 bytes
output_mmr_size Total size of the output MMR after applying this block. 8 bytes
kernel_mmr_size Total size of the kernel MMR after applying this block. 8 bytes
Sub-Total: 226 bytes
- - -
pow Proof of work data For cuck(AR)oo 29: 174 bytes.
For cuck(AT)oo 32: 189 bytes.
Total:
400 bytes for C29
or 415 bytes for C32

PoW

General format of a Proof Of Work in a Mimblewimble/Grin:

Field Description Size
total_difficulty Total accumulated difficulty since genesis block 8 bytes
secondary_scaling Variable difficulty scaling factor for secondary proof of work 4 bytes
nonce Nonce increment used to mine this block. 8 bytes
proof Proof of work data cuckoo_size: 1byte
cuckoo_solution of C29: 42∗29 bits=153 bytes
cuckoo_solution of C32: 42∗32 bits=168 bytes
Sub-Total: 174 bytes for C29 and 189 bytes for C32

Example

Here is a principle example of a Mimblewimble/Grin block header. The related block is included in Mainnet chain block: 1869.

Offset Field Hex Value
0 version 0001
2 height 000000000000074d
10 timestamp 000000005c3ff107
18 prev_hash 00001915c97bfad5bf9bb30a1035771446770502a937bd16a8c8a8f1fc6db730
50 prev_root 2eb356e36c03f16796dd4a6eef8cbcbeabaade84eecf013516367b376d646db7
82 output_root b56ccc990181d04d57585d3f0163b4f636fe3208a024596d14221bfa7739e693
114 range_proof_root a341b87862f430f9dda5fd0b88be175b6cc81b5e84bf6882d98cc31750b5001a
146 kernel_root b3e9708378ef256d479c6b166ba0a56c26d1b2e985c5e48065dbaa8a1fa6e606
178 total_kernel_offset 0755f37fa67bc3d3f0a7eddec7117013be42afff3602e7480d7271fff92763f1
210 output_mmr_size 0000000000001445
218 kernel_mmr_size 0000000000001130
226 total_difficulty 00000108e24af3bb
234 secondary_scaling 00000473
238 nonce 712493895227b883
246 edge_bits 1d
247 edge_nonces 43c8d2e098ba28f4f3748aab7d8be1aab3353259e6c6d4c046293f1c2f92afe7c5868bc5007fc51bae789ab3776d7efefb71547144b70ae8e764921bad8cb821a0c5d2adb455e1c406e1b2e39a2db51d7c552e4c1dd78bde1eea91f0843da6b3f1cb86e4ccb93371452b66c0ab292cd42525bcbf832fe358a3b22bcf7615e8397516ad8135a709213a77347cf4de104df5585984df0246fa03
400