CRYPTO LAB

An investigation in six chapters

Merkle Mystery.

Every book has a story.
Every change leaves a trace.

ARCHIVE / 003

Something has changed in the library. Follow the fingerprints, assemble the evidence, and learn which seal to trust.

Visual puzzles · No coding needed · Take your time
0 / 18 bookplates

Chapter 01 / 06

Opening the archive…

The reading room

An archive of fingerprints

4 books
Independently recorded rootLoading…REFERENCE

Select a book to examine it.

Changed fingerprintShort labels · Full hashes in the evidence drawer

Evidence drawerSelect a node

Follow the branches

Every book has a fingerprint. Pairs of fingerprints combine upward into one root.

Under the seal

A little structure.
A remarkable shortcut.

A Merkle tree lets you check one record against a trusted root using only a few neighboring hashes.

What is the game actually calculating?

Every fingerprint is a full SHA-256 hash computed by your browser. A book record is encoded as a JSON array of its title and passage, then encoded as UTF-8. Leaf hashes start with byte 00; branch hashes start with byte 01, followed by the two raw 32-byte child hashes, left first. These distinct prefixes separate books from branches.

The board abbreviates hashes for readability. Comparisons always use all 32 bytes; open a node’s evidence drawer to inspect the full value. The game uses complete trees of four or eight books.

Why can three fingerprints stand in for seven books?

Start with the book’s hash. One sibling hash lets you calculate its parent. A second lets you calculate the next parent. A third reaches the root of an eight-book tree. Siblings can represent whole subtrees: you do not need to receive those other books.

Position, left/right order, and tree size matter. This game checks them along with the proof length. Inclusion in a committed collection does not prove an author’s identity or the accuracy of a statement.

Does the root locate an altered book?

A root mismatch tells you that the collection differs; the root alone does not identify the changed book. Locating it requires comparing available subtree fingerprints or other evidence. This game calculates both full snapshots and lets you inspect their differences.

Once a changed book is known, a system retaining the other hashes can update just that leaf and its ancestors. An inclusion proof answers a separate question: whether one book record belongs at a given position under the reference root.

Where does trust enter the picture?

A courier can create a new root for any collection they choose. You need an independently trusted root for the collection you intend to check. Real systems may authenticate roots with signatures or other trusted channels. The archive’s saved record is a story assumption here; no signature system is implemented.

A changed root shows a difference, not necessarily a crime. Our edition comparison uses complete snapshots. It is not a Merkle consistency proof and does not establish an append-only history.

Progress, scoring, and daily mysteries

Each chapter earns up to three bookplates. An incorrect submitted answer costs one; asking for guidance costs one once per chapter. A solved chapter always earns at least one. Only your best score for each chapter counts, for a maximum of 18. Replaying starts a fresh attempt.

The daily mystery has three tasks and earns up to three bookplates in total. It is determined by the UTC calendar date and is the same for everyone. An open daily case keeps its date across midnight.

Only scores are stored in this browser. There are no accounts, network requests from the game, or analytics. Clearing progress removes the game’s saved scores.

Keep exploring

For the underlying tree definitions and inclusion proofs, see RFC 9162 §2.1. The game uses its leaf/branch hash separation; it is not an implementation of the Certificate Transparency protocol.

Ready to explore more? Visit Crypto Lab’s exhibit catalog or try CryptoHack’s hash challenges for a coding-oriented next step. CryptoHack is an independent project.