Solvers
An author leaves a puzzle. A solver leaves a transaction, and sometimes a comment, a write-up or a tweet with the answer pasted in. That second trail is shorter and much more fun to read, because it's where the tricks show up: a gear measured in pixels, a GIF with a ZIP inside, a seed phrase that fails its own checksum and still opens the wallet.
So a named solver is a record now, not a name on one puzzle. Every puzzle that credits them carries the same key, and the registry joins those records into one entry: the solves in dataset order, the profiles and addresses once each, and the facts from all of them. A fact works the same way it does for authors. One sentence a public page states, with that page as its source.
import { requireSolver, solvers } from "@agntn/puzzles";
const retired = await requireSolver("retired-coder"); // getSolver() answers undefined instead of throwing
retired.solves.map((solve) => solve.id); // ["b1000/120", "b1000/125", "b1000/130", "b1000/135"]
retired.solver.facts?.[0]?.date; // "2024-10-05", the bitcointalk registration
(await requireSolver("wickex")).authored; // ["wickex"], the same account published a collection too
(await solvers()).length; // one entry per solver key
The CLI and the agent tools take a puzzle identifier too, so puzzles solvers b1000/135 answers with RetiredCoder without you knowing the key.
Handles stay handles. The record keeps the name the solver used and the pages they signed with it, and it doesn't go looking for the person behind it. A solve credited only by the address the prize went to has no key and no page: an address isn't a name, and the puzzle page already shows it.
| About | |||
|---|---|---|---|
| pogo | pogo | Handle credited with the first two Arweave puzzles, each solved within two days of going up. | arweave/weave1, arweave/weave2 |
| arpox | arpox | Twitter user who solved Arweave Puzzle 4 after five and a half months and replied to the author with the answer. | arweave/weave4 |
| lia | lia | Handle credited with Arweave Puzzle 8, three riddles about famous deaths. | arweave/weave8 |
| lefevre | lefevre | Handle credited with Arweave Puzzle 13, an image puzzle worth 1 ETH, four days after it went up. | arweave/weave13 |
| RetiredCoder | retired-coder | Author of RCKangaroo, an open source Pollard kangaroo solver for Nvidia GPUs, who took four of the puzzle transaction's keys and then retired from the race. | b1000/120, b1000/125, b1000/130, b1000/135 |
| floflo777 | floflo777 | Keeps a public catalogue of crypto bounties with an oracle per puzzle, and recovers ETH stuck in old contracts. | dug/2025-1 |
| Wickex | wickex | Solved the first puzzle on r/bitcoinpuzzles and posted the second one the same night. | iamabananaamaa/gif |
| joachim | joachim | CryptoHack writer who solved the BIP39 task of the Ledger Donjon CTF 2020 by brute forcing the word order. | ledger_donjon/scissors_secret_sharing |
| rabbidbird | rabbidbird | GitHub user who solved the Bitcoin Movie Enigma after four and a half years, by not trusting the BIP39 checksum. | movie_enigma |
| 6loss | 6loss | Reddit user who claimed the 1 mBTC picture puzzle five hours after it went up. | picture_puzzle |
| IAMABananaAMAA | iamabananaamaa | Started r/bitcoinpuzzles, solved the second puzzle posted there the same night and sent the prize back. | wickex/youtube |
| mmorsl | mmorsl | Steemit user who won Zden's Level 4 and wrote the solution article Zden's catalogue links to. | zden/level_4 |
| BlockCrushr Labs | blockcrushr-labs | Blockchain development lab whose Medium publication carries the Autonomy walk-through. | zden/decred_autonomy |
What every page says
- The dossier is read off the library when the page builds. Solve dates and prizes are the puzzles' own.
- Profiles come from the solver record. An address is one the prize went to, or one the solver named as theirs.
- The facts list what a public source says, one line each, with the source. A fact isn't a verdict, and a solver's own claim stays their claim.
- When a solver also published a collection, the page links the author page. Same key, same party.