
boha v0.19.0
क्रिप्टो बाउंटी, पहेलियाँ और चुनौतियाँ डेटा लाइब्रेरी
@agntn/puzzles
🧩 ग्यारह संग्रहों में 333 सार्वजनिक क्रिप्टो पहेलियाँ और इनाम, टाइप्ड रिकॉर्ड के रूप में। आप एक पहेली माँगते हैं, आपको उसका पता, उसकी कुंजी सामग्री और ऑन-चेन क्या हुआ, मिल जाता है।
क्यों?
हर पहेली थ्रेड में वही तीन चीज़ें होती हैं: पते, इनाम, और किसने क्या हल किया। हर स्कैनर और ट्रैकर उन्हें थ्रेड से दोबारा टाइप करता है, हर बार थोड़ा अलग। इसलिए वे यहाँ एक बार, कोड के रूप में रहती हैं। एक पहेली एक TypeScript रिकॉर्ड है। टाइप चेकर इसे टेस्ट से पहले पढ़ता है। CLI, MCP सर्वर और Pi तथा OMP एक्सटेंशन एक ही रजिस्ट्री पढ़ते हैं।
डॉक्स, प्रति पहेली एक पेज और एक लाइव प्लेग्राउंड: puzzles.agntn.dev।
[!WARNING] Pre-1.0। API, CLI फ़्लैग और डेटा मॉडल अभी भी बदल सकते हैं। अगर आप इस पर कुछ बनाते हैं तो एक सटीक वर्शन पिन करें।
✨ विशेषताएँ
- 🧾 डेटा कोड के रूप में। प्रति पहेली एक
PuzzleSpecलिटरल, उसकी चेन के लिए एक फ़ैक्ट्री द्वारा बनाया गया। कोई JSON नहीं, कोई बिल्ड स्टेप नहीं। - 🕳️ अनुपस्थित का मतलब अनुपस्थित। बिना सॉल्वर या इनाम वाली पहेली में ऐसी कोई कुंजी नहीं होती। कुछ भी null के रूप में सीरियलाइज़ नहीं होता।
- 🔑 हर आकार में कुंजी सामग्री। Hex, WIF, एक BIP38 पेलोड, एक सीड फ़्रेज़, सीक्रेट शेयर, या बस एक बिट चौड़ाई। एक बिल्डर।
- 💤 लेज़ी रजिस्ट्री। पैकेज इम्पोर्ट करने पर कोई रिकॉर्ड लोड नहीं होता।
get("b1000/71")एक संग्रह मॉड्यूल इम्पोर्ट करता है। - ✅ सत्यापन एक मान है। एक प्रकाशित कुंजी पता व्युत्पन्न करती है या नहीं। खराब रिकॉर्ड के लिए कुछ भी थ्रो नहीं होता।
- 💰 लाइव बैलेंस।
@agntn/explorersके माध्यम सेpuzzle.balance()। बेस यूनिटbigintके रूप में, API कुंजियाँ त्रुटियों से हटाई गईं। - 🤖 छह एजेंट टूल्स। MCP, Pi और OMP के पीछे एक executor। हर जगह एक ही उत्तर।
- 🌐 कहीं भी चलता है। Fetch API पर न्यूट्रल ESM। Node, ब्राउज़र, एज वर्कर।
📦 इंस्टॉल
pnpm add @agntn/puzzles
CLI के लिए Node.js 24 या नया।
🚀 पहली कॉल
npx @agntn/puzzles stats
Total: 333
Solved: 131
Unsolved: 93
Claimed: 11
Swept: 96
Expired: 2
With pubkey: 237
कोई कुंजी नहीं, कोई कॉन्फ़िग नहीं, कोई नेटवर्क नहीं। रिकॉर्ड पैकेज के अंदर ही आते हैं। नीचे दिया गया बेयर puzzles लोकल pnpm add के बाद pnpm exec puzzles है, या pnpm add -g @agntn/puzzles के बाद बस puzzles।
puzzles show b1000/71
b1000/71 unsolved 7.100226 BTC 1PWo3JeB9jrGwfHDNpdGK54CRas7fsVzXU
कमांड
| Command | What it prints |
|---|---|
puzzles stats | Totals and status counts. --json adds the prize sums |
puzzles collections | One row per collection: key, counts, author |
puzzles show <id> | One puzzle. --json for the whole record |
puzzles list [collection] | One puzzle per line. --status and --with-pubkey narrow it |
puzzles verify [id] | A published key against its address. --all for every puzzle, exit 1 on a mismatch |
puzzles balance <id> | The live balance. --api-key or ETHERSCAN_API_KEY for Ethereum |
puzzles export | The whole dataset with its data_version |
puzzles mcp | The MCP server over stdio |
--json हर जगह एक ही सीरियलाइज़र है, bigint स्ट्रिंग के रूप में और अनुपस्थित फ़ील्ड छोड़े गए। फ़्लैग और एग्ज़िट कोड CLI गाइड में हैं।
🧠 लाइब्रेरी
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
बस इतना ही है, वाकई। एक संग्रह अपनी खुद की एंट्री है और उस पर सब कुछ सिंक्रोनस है। संग्रहों तक फैले व्यू एक लोड का इंतज़ार करते हैं। त्रुटियाँ PuzzlesError से निकलती हैं, बैलेंस का अपना परिवार BalanceError के अंतर्गत है। बाकी गाइड्स में है: रिकॉर्ड्स, रजिस्ट्री, लुकअप्स, सत्यापन, बैलेंस।
🗺️ संग्रह
| Key | Puzzles | Chains | What it is |
|---|---|---|---|
b1000 | 256 | bitcoin | Keys of 1 to 256 bits, one address each |
rushwallet | 30 | bitcoin | Brainwallets from a 2014 contest |
zden | 15 | bitcoin, ethereum, litecoin, decred | Zden's visual puzzles |
arweave | 12 | arweave, ethereum | Tiamat's weave puzzles |
warp | 6 | bitcoin | Keybase's scrypt brainwallet challenges |
hash_collision | 6 | bitcoin | Peter Todd's P2SH collision bounties |
ballet | 3 | bitcoin | BIP38 keys printed on physical wallets |
bitimage | 2 | bitcoin | Seeds hashed from photographs |
bitaps | 1 | bitcoin | A 3 of 5 secret sharing scheme |
gsmg | 1 | bitcoin | A multi phase image puzzle |
movie_enigma | 1 | bitcoin | Film titles as seed words, solved 2026 |
आइडेंटिफ़ायर collection/name होते हैं। तीन सिंगलटन, gsmg, bitaps और movie_enigma, बस कुंजी हैं। हर संग्रह का एक पेज है जिसमें कहानी, विचित्रताएँ और हर पहेली है: puzzles.agntn.dev/collections।
🤖 एजेंट्स
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"] }
}
}
छह टूल्स: puzzles_stats, puzzles_collections, puzzles_show, puzzles_list, puzzles_verify और puzzles_balance। केवल अंतिम वाला प्रोसेस से बाहर जाता है, और उसके एनोटेशन यह बताते हैं। टेक्स्ट क्या ले जाता है और सीमाएँ कहाँ हैं: एजेंट्स गाइड।
🚫 यह क्या नहीं करता
यह कुछ भी हल नहीं करता। कोई स्कैनर नहीं, कोई कंगारू नहीं, कोई ब्रेनवॉलेट क्रैकर नहीं, और ट्रांज़ैक्शन लिस्ट से स्टेटस का कोई अनुमान नहीं। solved, swept, claimed और expired हाथ से लिखे जाते हैं, क्योंकि एक क्लेम ट्रांज़ैक्शन और एक प्रकाशित कुंजी का मतलब अभी भी हल होना है। चेन तथ्य @agntn/chains से आते हैं, कुंजी व्युत्पत्ति @agntn/keys से और बैलेंस @agntn/explorers से। यह पैकेज इनमें से किसी को भी दोबारा लागू नहीं करता।