Verification

Verify My Data

Before the tournament started, I published a single 32-byte Merkle root to the Ethereum blockchain. This hash cryptographically commits to every one of the trillion brackets, proving the dataset existed before any games were played.

The Commitment

A Merkle root is a single hash that represents an entire dataset. If even one bit of data changes, the root completely changes. By publishing this root to the blockchain before the tournament, I prove that all brackets were generated in advance — no changes possible after tip-off.

Merkle Root (published March 17, 2026 — before tournament tip-off)
c0bf64aedf2d6b18c027d61eaee3790ea81e2450f6157fb6eba3a894ab91a6e2
The Bitcoin blockchain was the one used for explanations on the site, but the Ethereum blockchain was chosen for ease of use.

Why This Works

  • Immutable timestamp: Blockchain transactions are permanent and timestamped. Once the root is on-chain, it cannot be altered.
  • Cryptographic binding: The Merkle root uniquely identifies the exact dataset. Any different dataset produces a different root.
  • Efficient verification: To prove any specific bracket exists, you only need a small "proof" (~700 bytes) — not the entire 8 TB dataset.
Technical details for cryptographers →

Hash function: BLAKE3 (32-byte digest)

Domain separation: Leaf hashes use a \x00 prefix; internal nodes use \x01. This prevents second-preimage attacks where a leaf could be confused with an internal node.

Leaf size: 8 MiB chunks (~1M brackets per leaf)

Record format: uint64 little-endian, 63 bits used per bracket

Tree construction: Binary Merkle tree with domain separation; odd nodes duplicated: H(\x01 || a || a)

Proof structure: Sibling hashes from leaf to root (~20 hashes for 1T brackets, ~700 bytes total)

Full verification code and data format specification available in the GitHub repo.

Get Round-by-Round Updates for the 2026 NCAA Tournament

By signing up, you agree to receive emails from One Trillion Brackets. Unsubscribe anytime.