The block header is a section in a block
that serves as a summary of the rest of the block. It’s made up of all the metadata
– such as the time and difficulty
when the block was mined
, the Merkle root
of the included transactions, and the nonce
. Also present is the previous block’s hash
, which is what allows us to create the “chain” of blocks. In essence, the block header contains any data that isn’t the list of raw transactions itself.
A block header is what the miners hash to try and make the block valid. This is a lot more efficient than hashing the entirety of the block, which can be made up of thousands of transactions. It would be vastly more cumbersome for a miner to change the nonce and to rehash a whole 2MB block for every attempt. Compare this with hashing Bitcoin
’s block headers, for instance, which have a fixed length of 80 bytes.
Block headers are great from a mining point of view, but because of their small size, they’re also ideal for light clients
. The Bitcoin blockchain
is too large for devices like smartphones to store. If the chain had 100,000 1MB blocks, you’d consume 100GB of space. But with just the block headers for those same blocks, you’d only take up 0.008GB, or 8MB.
In this way, devices with less bandwidth or storage space can still perform some degree of validation. Because the Merkle root encapsulates all of the transactions, they can later check whether a transaction was included in a particular block. This does come at a cost – the user must still rely on a third party to provide them with necessary information. With that said, light clients are preferable to a system where the users perform no verification at all.