lotterypuzzle atlas

Open data2 Oct 2026

The catalog, as a file

All 160 records of the atlas as one JSON file and one CSV file, with the same columns. Every file below is rebuilt with the site and carries its own checksum.

Snapshot of 2 Oct 2026. This is a catalog compilation, not a live chain scan: rewards are nominal allocations, not balances, and solver names are labels, not audited identities.

Files

Same records, same columns, same order in the JSON and the CSV. The checksums are SHA-256 of the exact bytes served from this site.

puzzles.json

Every record with all columns. Missing values are null.

Format
JSON, one array of records
Size
130.4 KB (133,535 bytes)
Records
160
SHA-256
e85a170ced22f4dfba73e6458291e7dada23995ca352edda5d34c442da9a5e30

Download

puzzles.csv

A header row, then one row per record. Missing values are empty cells; booleans are true or false. Lines end with LF.

Format
CSV, RFC 4180, UTF-8
Size
65.4 KB (66,998 bytes)
Records
160
SHA-256
30eca94c6b31e6f92f87ba8674c8c9cc966dced237b590b77913075d1d726659

Download

catalog-meta.json

Where the snapshot comes from and what was checked offline. States plainly that no chain freshness check was done.

Format
JSON, one object
Size
4.0 KB (4,093 bytes)
SHA-256
b786f95c25c13b3b941380fc7aae2efe9920f9bcfc444394576017a6a7c932a1

Download

Check a download. Compare the digest of your copy with the checksum above. sha256sum puzzles.csv

Schema

26 columns, listed in file order. The example column shows puzzle #135.

Fields of puzzles.json and puzzles.csv
Field Type Meaning Example
id integer Puzzle number, 1 to 160. Equal to bits. 135
bits integer Bit length of the private scalar. The key lies in [2bits−1, 2bits - 1]. 135
address string The P2PKH address funded for this puzzle. 16RGFo6hjq9ym6Pj7N5H7L1NR1rVPJyw2v
status string solved when the catalog records the address as spent, unsolved otherwise. solved
reward_btc number Nominal catalog allocation in BTC (id / 10). Not a live balance. 13.5
public_key string | null Compressed secp256k1 public key, hex, when it is on chain. Null when only the address is known. 02145d2611c823a396ef6712ce0f712f09b9b4f3135e3e0a…
found_pct string | null Legacy position label carried from the source snapshot. See found_offset_pct for the computed value. 71.21%
solved_date string | null Date of the spend, YYYY-MM-DD (UTC). Null for open puzzles. 2026-07-28
solver string | null Attribution label as catalogued. A label, not an audited identity. RetiredCoder (self-attributed)
pubkey_known boolean True when public_key is present. true
note string | null Evidence note for the record. Spent 08:20:16 UTC in block 959946. Published pr…
source_label string | null Evidence-strength label for the note, for example On-chain or Forum statement. Cryptographically verified
solved_at string | null UTC timestamp of the spend, where the catalog has one. 2026-07-28T08:20:16Z
solve_txid string | null Spending transaction id, where the catalog has one. 817535430c600810080662dd425a2e335f771effd950d28f…
solve_block integer | null Block height of the spend, where the catalog has one. 959946
solution_public boolean | null Whether the solving key was published, where the catalog records it. true
source_url string | null Public reference for the record (forum post or explorer). https://bitcointalk.org/index.php?topic=5589799.…
private_key_already_public boolean | null True when the catalog holds a historical scalar that is already public. The scalar itself is not exported. true
unsafe_for_wallets boolean | null True when a scalar is public: never use such a key in a wallet. true
range_start_hex string First candidate key of the range, 64 hex digits (2bits−1). 000000000000000000000000000000400000000000000000…
range_end_hex string Last candidate key of the range, 64 hex digits (2bits - 1). 0000000000000000000000000000007fffffffffffffffff…
range_size_decimal string Number of candidate keys in the range, as a decimal string (it overflows 64-bit integers). 21778071482940061661655974875633165533184
search_bits integer bits - 1: log2 of the range size. 134
search_class string historical (spent), public-key (open, key on chain) or address-only (open). historical
hash160 string RIPEMD-160(SHA-256(compressed public key)), hex, decoded from the address. 3b6f58a75a54bfd85d1bc6c51180fdc732992326
found_offset_pct number | null Where the solved key sat inside its range, in percent. A position, not the key. Null for open puzzles. 71.2132

What is not in the data

  • Private keys of open puzzles. None has been published, so there is nothing to include.
  • The published scalars of spent puzzles. They are public elsewhere; this dataset leaves them out of every export on purpose. The flag columns only say that one exists.
  • Live balances. reward_btc is the nominal allocation, and nothing here queries the chain.
  • Identity checks. Solver names are catalogued labels, and the note and source_label columns say how strong the evidence is.

Licence

The compilation (selection, arrangement, notes and derived columns) is licensed under CC BY 4.0; the facts themselves are on-chain.

How to cite

Cite the snapshot date, since the catalog changes when a puzzle is spent.

Plain text
lotterypuzzle (2026). Bitcoin Puzzle catalog, snapshot of 2 Oct 2026 [dataset]. CC BY 4.0. https://lotterypuzzle.org/data/
BibTeX
@misc{lotterypuzzle_puzzle_catalog_2026,
  author = {{lotterypuzzle}},
  title  = {Bitcoin Puzzle catalog},
  year   = {2026},
  note   = {Snapshot of 2026-10-02. CC BY 4.0},
  url    = {https://lotterypuzzle.org/data/}
}

Follow new finds

An Atom feed lists every spent puzzle, newest first, with the nominal reward, the method class and the catalog label.