Zurück zu den Updates
New releaseAug 1, 2026

boha v0.19.0

Datenbibliothek für Crypto-Bounties, Rätsel und Herausforderungen

Teilen

@agntn/puzzles

npm version npm downloads license Ask DeepWiki

🧩 333 öffentliche Krypto-Puzzles und Bounties in elf Sammlungen, als typisierte Records. Du fragst nach einem Puzzle, du bekommst seine Adresse, sein Schlüsselmaterial und was on chain passiert ist.

Warum?

Jeder Puzzle-Thread hat dieselben drei Dinge: die Adressen, die Preise und wer was gelöst hat. Jeder Scanner und Tracker tippt sie aus dem Thread neu ab, jedes Mal etwas anders. Also leben sie hier einmal, als Code. Ein Puzzle ist ein TypeScript-Record. Der Type Checker liest ihn, bevor ein Test es tut. Die CLI, der MCP-Server und die Pi- und OMP-Erweiterungen lesen ein Registry.

Dokumentation, eine Seite pro Puzzle und ein Live-Playground: puzzles.agntn.dev.

[!WARNING] Pre-1.0. Die API, die CLI-Flags und das Datenmodell können sich noch bewegen. Pinne eine exakte Version, wenn du darauf aufbaust.

✨ Features

  • 🧾 Daten als Code. Ein PuzzleSpec-Literal pro Puzzle, gebaut von einer Factory für seine Chain. Kein JSON, kein Build-Schritt.
  • 🕳️ Fehlend heißt fehlend. Ein Puzzle ohne Solver oder Preis hat keinen solchen Key. Nichts serialisiert als null.
  • 🔑 Schlüsselmaterial in jeder Form. Hex, WIF, eine BIP38-Payload, eine Seed-Phrase, Secret Shares oder nur eine Bitbreite. Ein Builder.
  • 💤 Lazy Registry. Das Importieren des Pakets lädt keine Records. get("b1000/71") importiert ein Sammlungsmodul.
  • ✅ Verifikation ist ein Wert. Ein veröffentlichter Schlüssel leitet die Adresse ab oder nicht. Nichts wirft bei einem fehlerhaften Record.
  • 💰 Live-Balances. puzzle.balance() über @agntn/explorers. Base Units als bigint, API-Keys aus Fehlern redigiert.
  • 🤖 Sechs Agent-Tools. Ein Executor hinter MCP, Pi und OMP. Überall dieselbe Antwort.
  • 🌐 Läuft überall. Neutrales ESM auf der Fetch API. Node, Browser, Edge Worker.

📦 Installation

pnpm add @agntn/puzzles

Node.js 24 oder neuer für die CLI.

🚀 Erster Aufruf

npx @agntn/puzzles stats
Total: 333
Solved: 131
Unsolved: 93
Claimed: 11
Swept: 96
Expired: 2
With pubkey: 237

Kein Key, keine Konfiguration, kein Netzwerk. Die Records werden im Paket mitgeliefert. Das bloße puzzles unten ist pnpm exec puzzles nach einem lokalen pnpm add, oder einfach puzzles nach pnpm add -g @agntn/puzzles.

puzzles show b1000/71
b1000/71	unsolved	7.100226 BTC	1PWo3JeB9jrGwfHDNpdGK54CRas7fsVzXU

Befehle

BefehlWas er ausgibt
puzzles statsSummen und Status-Zählungen. --json fügt die Preissummen hinzu
puzzles collectionsEine Zeile pro Sammlung: Key, Zählungen, Autor
puzzles show <id>Ein Puzzle. --json für den ganzen Record
puzzles list [collection]Ein Puzzle pro Zeile. --status und --with-pubkey grenzen es ein
puzzles verify [id]Ein veröffentlichter Schlüssel gegen seine Adresse. --all für jedes Puzzle, Exit 1 bei Abweichung
puzzles balance <id>Die Live-Balance. --api-key oder ETHERSCAN_API_KEY für Ethereum
puzzles exportDer ganze Datensatz mit seiner data_version
puzzles mcpDer MCP-Server über stdio

--json ist überall derselbe Serializer, bigint als Strings und fehlende Felder weggelassen. Die Flags und Exit-Codes stehen im CLI-Leitfaden.

🧠 Bibliothek

import { get, stats, verifyPuzzle } from "@agntn/puzzles";
import { b1000 } from "@agntn/puzzles/collections/b1000";

const puzzle = await get("b1000/71"); // loads the b1000 collection, nothing else
puzzle?.address().value; // "1PWo3JeB9jrGwfHDNpdGK54CRas7fsVzXU"
puzzle?.keyRange(); // [2n ** 70n, 2n ** 71n - 1n]

verifyPuzzle(b1000.require(1)).verified; // true, key 1 derives its address
(await stats()).unsolved; // 93
(await b1000.require(71).balance()).totalUnits(); // 7.10190014 when I ran it, mempool.space decides

Das ist das meiste, wirklich. Eine Sammlung ist ihr eigener Einstieg und alles an ihr ist synchron. Die Ansichten, die Sammlungen überspannen, erwarten ein Laden. Fehler stammen von PuzzlesError ab, Balances haben ihre eigene Familie unter BalanceError. Der Rest steht in den Leitfäden: Records, Registry, Lookups, Verifikation, Balances.

🗺️ Sammlungen

KeyPuzzlesChainsWas es ist
b1000256bitcoinSchlüssel von 1 bis 256 Bit, je eine Adresse
rushwallet30bitcoinBrainwallets aus einem Wettbewerb von 2014
zden15bitcoin, ethereum, litecoin, decredZdans visuelle Puzzles
arweave12arweave, ethereumTiamats Weave-Puzzles
warp6bitcoinKeybases scrypt-Brainwallet-Challenges
hash_collision6bitcoinPeter Todds P2SH-Kollisions-Bounties
ballet3bitcoinBIP38-Schlüssel, gedruckt auf physischen Wallets
bitimage2bitcoinSeeds, gehasht aus Fotografien
bitaps1bitcoinEin 3-von-5-Secret-Sharing-Schema
gsmg1bitcoinEin mehrphasiges Bild-Puzzle
movie_enigma1bitcoinFilmtitel als Seed-Wörter, gelöst 2026

Bezeichner sind collection/name. Die drei Singletons, gsmg, bitaps und movie_enigma, sind einfach der Key. Jede Sammlung hat eine Seite mit der Geschichte, den Eigenheiten und jedem Puzzle: puzzles.agntn.dev/collections.

🤖 Agents

claude mcp add puzzles --scope user -- npx -y @agntn/puzzles mcp
pi install npm:@agntn/puzzles
{
  "mcpServers": {
    "puzzles": { "command": "npx", "args": ["-y", "@agntn/puzzles", "mcp"] }
  }
}

Sechs Tools: puzzles_stats, puzzles_collections, puzzles_show, puzzles_list, puzzles_verify und puzzles_balance. Nur das letzte verlässt den Prozess, und seine Annotationen sagen das. Was der Text trägt und wo die Grenzen liegen: der Agents-Leitfaden.

🚫 Was das nicht tut

Kategorien