ID@agntn/puzzlesv0.30.0data a747 e6ab 583e

Every puzzle, one record.

Public crypto bounties and puzzles, each one a typed record: address, key material, prize, what happened on chain. One library behind the CLI, an MCP server and the Pi and OMP extensions, with live balances from the explorers.

Records
558
in 51 collections
Unclaimed
909.96 BTC
+ 12.66 ETH · 3.03 LTC · 1500.19 AR
Open
113 / 558
20.25% of the records
Install$ pnpm add @agntn/puzzles
Callawait get("bits/1")01 / 55bitcoin · p2pkh
Puzzle / bits

bits/1

A Bitcoin P2PKH address. The private key is a 1-bit number.

Prize
0.001BTC
Key
2^0 … 2^1 − 1
Address
1BgGZ9tc…26SAMH
Verify
verified

On chain

Data as code, one file per puzzle

There's no JSON to edit and no build step that generates data. Each puzzle is a TypeScript file with one literal in it, and the type checker reads it before any test does. The panel walks through 55 records from every collection, key material included, the way they sit on disk.

  • A record is a PuzzleSpec literal handed to puzzle(), with its chain as a field
  • Keys and transactions come from builders, so an absent field is absent, never null
  • Status is written down, not derived. A claim transaction plus a published key still means solved
Read Puzzle records
Filesrc/collections/bits/1.ts11 fields

Record

import { compressed, hex, puzzle, Status } from "@agntn/puzzles";export const bitsPuzzle1 = puzzle({  id: "bits/1",  chain: "bitcoin",  address: "1BgGZ9tcN4…26SAMH",  sourceUrl: "https://bitcointalk.org/index.php?topic=521…",  startedAt: "2013-01-09 11:59:15",  status: Status.Solved,  prize: 0.001,  pubkey: compressed("0279be667e…f81798"),  key: hex("0000000000…000001", 1).wif("KwDiBf89Qg…VHnoWn"),  transactions: [ /* 4 recorded */ ],});

A key that derives its address, or a plain no

A published key is a claim, so the library checks it: derive the address, compare. The data gate runs the same check on every record, so a wrong hex digit fails the build instead of shipping. Here it runs on the current sample with the code the CLI ships.

  • verify() reads the one secret a record exposes: hex, WIF, BIP38 payload, seed phrase or mini key
  • A solved puzzle with its key published derives the stored address, in your browser, secp256k1 and all
  • No key, an encrypted key, a mini key: unavailable is a verdict, not an exception
Read How verification works
Callverify("bits/1")secp256k1 · in your browser
Verdict / bits

verified

bitcoin / p2pkh
  1. secretOf(puzzle.keyData()){ kind: "hex" }

    a raw private key, verification derives the address from it

  2. puzzle.hasPubkey()true

    compressed 0279be667ef9dc…5b16f81798

  3. await verify(puzzle){ verified: true }

    derivedAddress 1BgGZ9tcN4…SZ26SAMH equals the stored one

A manifest of keys, records on first use

Importing the package evaluates no puzzle records. Each registry key has its own lazy import(), so a bundler splits each collection into its own chunk. Only ever ask about bits? The other collections stay unloaded. This panel shows the walk loading one collection at a time.

  • collectionKeys() and hasCollection() answer from the manifest without loading anything
  • get('bits/71') imports the bits module and nothing else; all() loads every collection once
  • registerCollection({ key, load }) adds yours, lazily too, and the aggregate views refresh
Read Registry and lazy loading

51 collections, 9 chains, one page per puzzle

Each collection is a class with an author and its puzzle list, published on its own entry. Every puzzle has a page with its record, its transactions, its key material and its live balance. The numbers here come from the library at build time.

Import@agntn/puzzles/collections/<key>

Callcollections()51 collections · manifest order
AboutUnclaimed
kTimesG's 80-bit key challenge80-bit80 unknown bits in a 511-bit key. The public key only ever showed up in the mempool. Taken 39 minutes in.closednone
Gem Finder's 9vw04 puzzle9vw04One tweet, five characters and a grid of letters and digits in five colours. Everything for the WIF is in the post, the author says. Rainbows, not so much.open0.0202076 BTC
Ballet walletsballetThree BIP38 encrypted keys printed on physical wallets.2 of 3 open2.00007358 BTC
Brute force and the coins are yoursbitaddressA paper wallet whose owner forgot the BIP38 passphrase and gave the coins to whoever guesses it. Probably three old passwords glued together. Good luck, q didn't have any.open0.005297 BTC
Bitaps mnemonic challengebitapsA 3 of 5 secret sharing scheme with two shares published.open1.00016775 BTC
BitimagebitimageSeeds hashed out of photographs. One solved, one waits on a passphrase.1 of 2 open0.010019 BTC
Bitcoin puzzle transactionbits256 addresses with keys of 1 to 256 bits. The one everybody scans.77 of 256 open903.01685753 BTC
7 million book quizbook-quizSeven questions about a campaign book, one hour to sweep it. The deadline won and the author took the prize back.closednone
Brave New Worldbrave-new-worldAll of 2020 in one collage, runes included. Find the seed phrase, says the picture. Six years on, the 0.2 BTC is still there.open0.20107284 BTC
TORCHED H34R7S Bitcoin Puzzlecoin-artistTORCHED H34R7S. A Bitcoin key painted into flames and decoded in 2018.closednone
Coin_Games weekly banknote puzzlescoin-gamesBanknotes stuffed with skulls, lions and statues, a few thousand sats each. Every prize emptied by somebody who never said how.0 of 3 opennone
Crypto Puzzles on YouTubecrypto-puzzlesTwo pairs of short videos with a raw Ether key in the footage. The first was gone within seven hours of its part 2. The second has sat on 0.05 ETH since 2018.1 of 2 open0.05 ETH
Doge's Gambitdoges-gambitA chess board with coins for pieces, sixteen frames and two keys in one clip. The 10,000 DOGE went from about $50 to a few thousand dollars while nobody could read it.0 of 2 opennone
Dug's Student Treasure HuntdugTwelve lecture words, three Bitcoin prizes. A better reason to take notes.0 of 3 opennone
Genesis Block Wallet PuzzlegenesisTwo keys hidden in Genesis block data, and the PBKDF2 rounds hidden in its timestamp. Solved.closednone
The Great Riddlegreat-riddleA seed of 24 words hidden one by one in the original ballpoint drawings of the Genesis Collection. Prints carry nothing, and the 25th word comes from the artist.open0.00423871 BTC
Grycoin chaingrycoinQuizchain under a new name, and over within a week. Block 1 was claimed before its post went up, block 2 with a solution its own author admits not knowing.0 of 2 opennone
GSMG.io puzzlegsmgA multi phase image puzzle. The prize has been halved twice.open1.25649674 BTC
Hash collision bountieshash-collisionPeter Todd's P2SH scripts that pay for a collision. SHA-1 fell in 2017.4 of 6 open0.59364885 BTC
Hunting Time seed phrase hunthunting-timeA seed phrase hidden in a thriller. Most words were times in the plot, and the title was the biggest clue. Claimed in seven weeks.closednone
IAMABananaAMAA's puzzlesiamabananaamaaTwo puzzles from the first night of r/bitcoinpuzzles. A ZIP after the last byte of a GIF, then a Caesar riddle whose key needed no shift at all.0 of 2 opennone
Ledger Donjon CTFledger-donjonScissors Secret Sharing. Twelve BIP39 words, ten out of order. CTF points, not a BTC prize.closednone
La Liberté guidant le peuple 2019liberte-guidant-le-peupleDelacroix repainted with yellow vests on a wall in Paris. Half the seed hides in coloured strokes, half glows under black light, all of it in French. Claimed six days in.closednone
LuckyLurker Bitcoin Vault puzzlesluckylurkerPaul Jones’s two Bitcoin Vaults. The first solved, the second funded with 1 BTC.1 of 2 open1 BTC
The 10 ETH challengemineshopSix seed words in a video, six in the blog post it links to. The author still spends from the wallet.open8.61254155426562 ETH
RetiredCoder's mini-puzzlesminiSeven small riddles on Bitcointalk. Four replay a solved puzzle key for the Bitcoin Cash still on its address, three put 0.01 BTC on a fresh key.0 of 7 opennone
Move Over Brokers treasure huntmove-over-brokersTwelve keys hidden in a blockchain book and its Italian translation. One answer is Sherlock Holmes's address, another is printed only on the back cover.3 of 12 open0.006 BTC
Bitcoin Movie Enigmamovie-enigma34 film stills, one BIP39 word each, ten intruders. Solved in 2026 with a phrase whose checksum fails.closednone
Natasha Otomoski puzzle, 1 BTCnatasha-otomoskiOne question, 32 characters of plain text as the private key. Someone typed the right eight words seven months later and never said how.closednone
Path to Greatnesspath-to-greatnessClues hidden in a parkour game demo lead to a Litecoin key. Donations go straight into the prize, and nobody has taken it.open3.02608794 LTC
kTimesG's Phy ChallengephyA signed forum post, a signature the author's cat cut one character short, and grey emojis spiralling around a gold coin. The signature gives up the address. The key behind it, and 800,000 sats, nobody has found yet.open0.008 BTC
1 mBTC picture puzzlepicture-puzzleA directory, an eye, the letter O and a QR code: a page on directory.io and the 36th key down. Claimed five hours in.closednone
Powerful Mosspowerful-mossTwelve songs on Donkey Kong Country 2 soundfonts and a twelve-word seed somewhere in them. The prize sat in a contract on Base that opened only for the wallet the seed derives, until somebody opened it in October 2026.closednone
Building an awesome eCash communityproof-of-writingAn essay on what makes a crypto community, with a Cashtab seed on its diagonal: word one of one paragraph, word two of the next. 30 million XEC by the time it fell.closednone
QuizchainquizchainA quiz answer plus a piece of the previous block's key, hashed into a wallet. The chain ran from April to July 2019, one block at a time.0 of 77 opennone
Quizchain2quizchain2The quizchain's second run, from May 2019. Most blocks stand alone now, an answer and a TOMI field hashed with MD5, and by block 6 the thread is arguing about scripts versus humans.0 of 77 opennone
Quizchain Real Big Blockreal-big-block777 mBTC for the final version of a Wattpad chapter, line breaks and all. The author once rated the odds below humanity passing the reverse Turing test, and so far that holds.open0.777 BTC
RushWallet contestrushwalletThirty brainwallets from 2014. Almost all cracked since.1 of 30 opennone
Satoshi birthday 7 million quizsatoshi-birthday-quizSeven questions about Bitcoin history, hashed into a brainwallet. Swept five hours after it was funded.closednone
Satoshi-Maze, Phemex 2.1 BTC puzzlesatoshi-mazeSatoshi drawn as a maze by an exchange. Nobody beat the deadline, so the designer published the key: a prime from e times two Base58 words read little endian.closednone
School of Bitcoin business cardschool-of-bitcoinA million sats behind a business card, shown once the account hit 2000 followers. Morse, Wingdings and three QR codes on one side, and the coins haven't moved since October 2024.open0.01 BTC
seed-phrase.comseed-phraseClues every few days toward a recovery phrase: a poem, a JAZZ crowd, a nauseous emoji and a box that changes colour with the video speed. Then August 2024 ended and so did the clues. The 0.01 BTC is still waiting.open0.01 BTC
Smith, Lyle & Moore treasure huntssmith-lyle-mooreAn indie band spent its ad budget on bitcoin and hid it behind riddles on its own website. The moon trip ended in Morse and a password called supernova. The sea voyage ended with a failed checksum.0 of 2 opennone
TeikhosBountyteikhosFive Ethereum contracts that want a public key nobody published. Four can pay, and one did in 2026, with a key a failed attempt left on chain four years earlier.4 of 5 open3.000018104 ETH
Brainwallet puzzle, 0.04 BTCtrivia-brainwalletTwelve riddles from patents to chess to a ham deal, typed into brainwallet.io as a passphrase and a salt. Swept six hours after the post.closednone
Walking Banks seed huntwalking-banksA thriller whose murder victims carry a seed phrase in their DNA, and a real one hidden in the book. Four words decode on page 122. The other twenty, and 800,000 sats, are still out there.2 of 2 open0.008 BTC
WarpWallet challengeswarpKeybase's scrypt brainwallet. Four solved, two expired with the keys published.0 of 6 opennone
Securing Wealth in Poetrywealth-in-poetryAn essay on hiding seed phrases in stories, with a real one hidden in the essay. You've read every word, it says. The 0.03 BTC is still there.open0.0312463 BTC
Puzzle WeaveweaveTiamat's weave puzzles. Prizes in AR and ETH. Four still open.3 of 12 open1500.188092936237 AR, 1 ETH
Wickex's YouTube puzzlewickexHex that spells a YouTube link, Morse in the audio, a passphrase in a spectrogram. Swept 46 minutes in, sent back, swept again.closednone
Zden's puzzleszdenFifteen visual puzzles on four chains, most of them solved.1 of 16 open0.003125 BTC

Every author, every fact with its page

Who funded a puzzle says something about how it was built. So every collection's author is a record, not a name and a link, and getAuthor(key) answers with it. The card follows the walk: it shows whoever published the puzzle on screen.

  • A key, a kind, aliases, the channels they publish through and the addresses they fund from
  • facts are sentences a public page states, with that page as source and a date where it has one
  • Pseudonyms stay pseudonyms: klems and Tiamat are the handle and what they signed with it
Read Author dossiers
IDsaatoshi-rising07 / 45person
Subject / bits

saatoshi_rising

A bitcointalk account that spoke for the puzzle transaction once, in 2017, and never said who was behind it. The rest is on the chain.

Collections
bits
Puzzles
256 · 77 open
Active
2013 to 2015
open 77 / 256

Fifteen tools, three hosts, one executor each

puzzles mcp serves the tools over stdio, the Pi and OMP extensions render them in the terminal. All three call the same functions, so they answer identically and a fix lands once. Only puzzles_balance, puzzles_watch and puzzles_eligibility reach out to a block explorer, and they say so in their annotations.

  • puzzles_stats, puzzles_collections, puzzles_authors, puzzles_author, puzzles_show, puzzles_hints, puzzles_stages, puzzles_list, puzzles_verify, puzzles_balance, puzzles_watch, puzzles_eligibility
  • The text carries the whole record: address, status, prize, key material, transactions, explorer links
  • Limits live in one facts table and the executors enforce them, so a host that skips schema validation hits the same wall
Read MCP, Pi and OMP
Callpuzzles_show("bits/1")
Puzzle / bits

1

bitcoin / p2pkh solved

Prize
0.001 BTC
Address
1BgGZ9tcN4…SZ26SAMH
Public key
published
On chain
4 tx · since 2013-01-09
MCP · Pi · OMP / no network
Record

Extend Collection, register a loader

A collection outside the package is the same shape as one inside it: a class extending NamedCollection or NumericCollection with its puzzle list. Register a loader and the registry treats it like a built-in, including the part where nothing loads until someone asks.

  • A static key, an author from party(), and puzzles built with the same factories
  • registerCollection({ key, load }) keeps yours lazy; registerCollection(instance) is fine too
  • get, all, stats and the tools see it on the next call, and the same instance twice is a no-op
Read Custom collections
Filemine.ts
import { NamedCollection, party } from "@agntn/puzzles";import { minePuzzleFirst } from "./mine/first";export class MineCollection extends NamedCollection {  static readonly key = "mine";  constructor() {    super(MineCollection.key, party("you"), [minePuzzleFirst]);  }}export const mine = new MineCollection();

main.ts

import { registerCollection } from "@agntn/puzzles";registerCollection({  key: "mine",  load: () => import("./mine").then((m) => m.mine),});
Startpnpm add @agntn/puzzlesNode.js 26 or newer

Start with one command

One install gives you the library, the puzzles CLI and the MCP server. Look a puzzle up by its id and read the record.

  • PinPre-1.0, so pin exact versions.
  • DataPublic puzzles only. Every key here was public before it got here.
  • BalanceWhat the explorer said five minutes ago at most.

First lookup

$ pnpm add @agntn/puzzlesimport { get } from "@agntn/puzzles";const puzzle = await get("bits/71");puzzle.status();  // "unsolved"puzzle.address().value;  // "1PWo3JeB9j…Ras7fsVzXU"$ pnpm exec puzzles show bits/71