Merkle Trees
Efficient verification.
Merkle Trees is a free Web3 & DApp Development Fundamentals lesson on CoddyKit — lesson 2 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Web3 & DApp Development Fundamentals learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
The Problem Merkle Trees Solve
A block may contain thousands of transactions. How can a lightweight device verify that one specific transaction is included without downloading them all?
The answer is the Merkle tree — a structure that lets you prove membership with just a handful of hashes.
What Is a Merkle Tree?
A Merkle tree (or hash tree) is a binary tree where:
- Each leaf is the hash of one transaction
- Each internal node is the hash of its two children combined
- The single top node is the Merkle root
Building the Tree
Construction works bottom-up. Hash each transaction to form the leaves, then repeatedly hash pairs together until only one hash remains.
Leaves: H(tx1) H(tx2) H(tx3) H(tx4)
Level 1: H(H(tx1)+H(tx2)) H(H(tx3)+H(tx4))
Root: H(level1a + level1b)The Merkle Root
The Merkle root is a single hash that represents every transaction in the block. It is stored in the block header.
If even one transaction changes, the root changes — so the root acts as a compact fingerprint of the entire transaction set.
Handling an Odd Number of Leaves
If a level has an odd number of nodes, the last node is usually duplicated so it can be paired.
This keeps the tree balanced and ensures every node has a sibling to hash with.
Leaves: H(tx1) H(tx2) H(tx3)
-> duplicate last: H(tx3) H(tx3)
Level 1: H(tx1+tx2) H(tx3+tx3)Merkle Proofs
A Merkle proof is the small set of sibling hashes needed to recompute the root from a single leaf.
To prove tx2 is included, you only need the siblings along its path — not the other transactions themselves.
Prove tx2 is in the block:
provide H(tx1) and H(tx3+tx4)
recompute: H( H(tx1)+H(tx2) )
then: H( that + H(tx3+tx4) )
compare to stored Merkle rootWhy Proofs Are Efficient
For N transactions, a Merkle proof needs only about log2(N) hashes.
For one million transactions, that is roughly 20 hashes instead of a million — a massive saving for light clients and mobile wallets.
Light Clients (SPV)
Simplified Payment Verification clients download only block headers, not full blocks.
Using a Merkle proof from a full node, an SPV client can confirm a transaction is in a block without trusting that node blindly.
Tamper Detection
Because every transaction feeds into the Merkle root, altering any transaction produces a different root.
The header's root would no longer match the recomputed root, so the tampering is immediately exposed.
Merkle Trees Beyond Transactions
Merkle trees are used far beyond transaction lists. Ethereum uses a variant called a Merkle Patricia Trie to commit to the entire world state and to receipts.
Git, IPFS, and many databases also rely on Merkle structures for integrity.
Putting It Together
The Merkle tree turns a large set of transactions into a single root hash while still allowing compact, verifiable membership proofs.
It is one of the most elegant data structures behind scalable, trustless verification.
Quick Check
Check your grasp of Merkle proofs.
Recap: Merkle Trees
You learned that:
- A Merkle tree hashes transactions in pairs up to a single root
- The Merkle root is a fingerprint stored in the header
- A Merkle proof needs only ~log2(N) hashes
- This enables efficient light clients and tamper detection
Next we dig into the hashing that powers all of this.
Frequently asked questions
Is the “Merkle Trees” lesson free?
Yes — the full text of “Merkle Trees” is free to read here on the web, and the Web3 & DApp Development Fundamentals course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Web3 & DApp Development Fundamentals course, upgrade to CoddyKit PRO.
What will I learn in “Merkle Trees”?
Efficient verification. You practise Web3 & DApp Development Fundamentals with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Web3 & DApp Development Fundamentals?
No prior experience is required. Web3 & DApp Development Fundamentals on CoddyKit is structured for beginners through advanced learners; this is — lesson 2 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Merkle Trees” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Web3 & DApp Development Fundamentals lesson?
Yes. Every Web3 & DApp Development Fundamentals lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.