
boha v0.19.0
Libreria di dati su bounty, puzzle e sfide crypto
@agntn/puzzles
Puzzle e taglie crypto pubbliche, come record tipizzati. Chiedi un puzzle, ottieni il suo indirizzo, il suo materiale di chiave e cosa è successo on chain.
Perché?
Ogni thread di puzzle ha le stesse tre cose: gli indirizzi, i premi e chi ha risolto cosa. Ogni scanner e tracker li ridigita dal thread, in modo leggermente diverso ogni volta. Così vivono qui una volta sola, come codice. Un puzzle è un record TypeScript. Il type checker lo legge prima che lo faccia un test. La CLI, il server MCP e le estensioni Pi e OMP leggono un unico registro.
Documentazione, una pagina per puzzle e un playground live: puzzles.agntn.dev.
[!WARNING] Pre-1.0. L'API, i flag della CLI e il modello dati possono ancora cambiare. Fissa una versione esatta se ci costruisci sopra.
✨ Funzionalità
- 🧾 Dati come codice. Un letterale
PuzzleSpecper puzzle, costruito da un'unica factorypuzzle()per ogni chain. Niente JSON, niente build step. - 🕳️ Assente significa assente. Un puzzle senza un solver o un premio non ha quella chiave. Nulla viene serializzato come null.
- 🔑 Materiale di chiave in ogni forma. Hex, WIF, un payload BIP38, una seed phrase, secret share, un keyfile Arweave sigillato, o solo una larghezza in bit. Anche ogni chiave di un multisig. Un unico builder.
- 💤 Registro lazy. Importare il pacchetto non carica alcun record.
get("bits/71")importa un modulo di una collezione. - ✅ La verifica è un valore. Una chiave pubblicata deriva l'indirizzo oppure no. Nulla lancia eccezioni per un record errato.
- 💰 Saldi live.
puzzle.balance()tramite@agntn/explorers. Unità base comebigint, chiavi API oscurate dagli errori. - 👀 Una sorveglianza sul record.
puzzles watchelenca i depositi e le spese che un record manca, un premio che si è spostato, una chiave pubblica che una spesa ha rivelato, una pagina sorgente che è cambiata. Non modifica mai un record. Lo fai tu. - 📋 Una checklist prima del weekend.
puzzles eligibilityraccoglie la fonte, l'indirizzo, i totali complessivi dall'explorer, lo stato con le sue prove e cosa conta come soluzione. Tutto ciò che nessuno riesce a compilare torna come rigamissing, mai come ipotesi. - 🖼️ Il puzzle stesso, non un link ad esso.
puzzles_assetsconsegna a un modello l'immagine, i file di stage e i post archiviati dietro gli indizi, verificati contro lo SHA-256 che il record fissa. I link marciscono. Questi no. - 🤖 Quindici strumenti per agenti. Un unico executor dietro MCP, Pi e OMP. Stessa risposta ovunque.
- 🌐 Gira ovunque. ESM neutro sulla Fetch API. Node, browser, edge worker.
📦 Installazione
pnpm add @agntn/puzzles
Node.js 26 o versione successiva per la CLI.
🚀 Prima chiamata
npx @agntn/puzzles stats
Stampa il totale, un conteggio per stato e quanti puzzle hanno una chiave pubblica nota. Nessuna chiave, nessuna configurazione, nessuna rete. I record sono inclusi nel pacchetto. Il comando puzzles qui sotto è pnpm exec puzzles dopo un pnpm add locale, oppure semplicemente puzzles dopo pnpm add -g @agntn/puzzles.
puzzles show hash-collision/sha256
hash-collision/sha256 unsolved 0.27734251 BTC 35Snmmy3uhaer2gTboc81ayCip4m9DT4ko
chain: bitcoin address kind: p2sh
hash160: 292fb39df7cd619a396069383928e6bfb74ebec5
redeem script: 6e879169a87ca887 (hash 292fb39df7cd619a396069383928e6bfb74ebec5)
public key: unknown
private key: unknown
started: 2013-09-13 05:59:09
transactions: 1
funding 2013-09-13 05:59:09 0.1 BTC 397f12ee15f8a3d2ab25c0f6bb7d3c64d2038ca056af10dd8251b98ae0f076b0
explorer: https://blockstream.info/address/35Snmmy3uhaer2gTboc81ayCip4m9DT4ko
source: https://bitcointalk.org/index.php?topic=293382.0
Comandi
| Comando | Cosa stampa |
|---|---|
puzzles stats | Totali, conteggi per stato, somme dei premi e la versione dei dati |
puzzles collections | Una riga per collezione: chiave, conteggi, autore |
puzzles authors [key] | Una riga per autore, oppure il record di un autore con i suoi fatti documentati |
puzzles author <key> | Il record di un autore, direttamente dallo strumento puzzles_author |
puzzles solvers [key] | Una riga per solver nominato, oppure il record di un solver: ogni risoluzione, profili e fatti documentati |
puzzles solver <key> | Il record di un solver, direttamente dallo strumento puzzles_solver |
puzzles show <id> | Il record di un puzzle: materiale della chiave, transazioni, indizi e link. --json per i dati |
puzzles hints <id> | Gli indizi della collezione, poi quelli del puzzle, poi i suoi file di indizi. --json per entrambi |
puzzles stages <id> | Le fasi di un puzzle multi-fase con le loro pagine, file e risposte pubblicate. --json per la lista |
puzzles assets <id> | I file forniti con un puzzle con SHA-256 e dimensione, e le pagine archiviate che cita. --read <path> ne scrive uno, --check/--live verificano |
puzzles list [collection] | Un puzzle per riga. --address, --chain, --status, --technique e --with-pubkey restringono, --limit e --offset paginano |
puzzles verify [id] | Una chiave pubblicata e la sua ricetta rispetto all'indirizzo. --all o i filtri di list per un insieme, exit 1 in caso di discrepanza |
puzzles balance [id] | Il saldo live. I filtri di list controllano un intero insieme, una riga ciascuno. --api-key, oppure una variabile per catena |
puzzles watch [id] | Ciò che la catena sa e il record no. --since controlla anche le pagine sorgente, exit 1 per qualsiasi anomalia |
puzzles eligibility <query> | La checklist prima di lavorare su un premio, per id o indirizzo. Exit 1 finché manca un campo |
puzzles export | L'intero dataset con il suo data_version |
puzzles mcp | Il server MCP su stdio |