Skip to content
uencoder
TUTORIAL

Understanding Merkle Trees

Learn how Merkle trees enable efficient verification of large data sets using hash trees.

Problem

You need to verify that a specific piece of data is part of a large set without downloading the entire set.

Prerequisites

  • Understanding of hash functions
  • Knowledge of tree data structures

Steps

  1. 1. Build the tree structure

    A Merkle tree hashes each data block (leaf), then pairs and hashes the results to form the next level, repeating until a single root hash remains. For n blocks, the tree has log2(n) levels. The root hash commits to all data.

    Input
    blocks: A, B, C, D
    Output
    root = H(H(H(A)+H(B)) + H(H(C)+H(D)))
  2. 2. Generate a proof

    To prove that block B is in the set, provide B's hash plus the sibling hashes needed to recompute the root: H(A) at level 1, and H(H(C)+H(D)) at level 2. This Merkle proof has log2(n) hashes, much smaller than the full data set.

    Input
    prove B is included
    Output
    proof: [H(A), H(H(C)+H(D))]
  3. 3. Verify the proof

    The verifier hashes B, combines it with the proof hashes in the correct order, and checks if the result equals the known root hash. If it matches, B is confirmed in the set without downloading all blocks. This is how Bitcoin SPV wallets and IPFS work.

    Input
    B + proof + root
    Output
    verified ✓

Expected result

Efficient verification that a specific data block belongs to a large set, using only logarithmically many hashes.

Common errors

Proof hashes in wrong order
The order of sibling hashes matters. Left and right siblings must be combined in the correct order to recompute the parent.
Using a non-secure hash
Merkle tree security depends on collision resistance. Use SHA-256 or stronger.

Troubleshooting

  • If verification fails, check the proof ordering and the leaf index.
  • For odd numbers of leaves, the last leaf is duplicated or padded depending on the implementation.

Security limits

  • Merkle trees provide inclusion proofs but not exclusion proofs without the full tree.
  • This is an educational explanation; no data is transmitted.

Related tools

Related glossary

Related tasks

Ready to run it?

References