Left: it suffices to present only a small number of nodes in a Merkle tree to give a proof of
the validity of a branch.
Right: any attempt to change any part of the Merkle tree will eventually lead to an
inconsistency somewhere up the chain.
An important scalability feature of Bitcoin is that the block is stored in a multi-level data
structure. The "hash" of a block is actually only the hash of the block header, a roughly
200-byte piece of data that contains the timestamp, nonce, previous block hash and the
root hash of a data structure called the Merkle tree storing all transactions in the block. A
Merkle tree is a type of binary tree, composed of a set of nodes with a large number of
leaf nodes at the bottom of the tree containing the underlying data, a set of intermediate
nodes where each node is the hash of its two children, and finally a single root node, also
formed from the hash of its two children, representing the "top" of the tree. The purpose
of the Merkle tree is to allow the data in a block to be delivered piecemeal: a node can
download only the header of a block from one source, the small part of the tree relevant to
them from another source, and still be assured that all of the data is correct. The reason
why this works is that hashes propagate upward: if a malicious user attempts to swap in a