IDchangelog@agntn/puzzles v0.31.0

Every release,
newest first.

New collections and puzzles, solves, fixes and breaking changes, read from GitHub Releases when the site builds. Merging a release PR is the whole ritual now. A feed reader gets the same list.

Releases
48
since v0.1.0
Latest
v0.31.0
2026-10-29
Entries
407
15 breaking

RSSpuzzles.agntn.dev/changelog.xml

LogGitHub Releases48 releases · 2025-12-30 → 2026-10-29

v0.31.0Latest2 breaking

15 enhancements · 1 performance · 5 fixes · 4 refactors · 1 documentation · 1 build · 2 chore · 1 ci

Enhancements

  • datasetBreakingnegate withPubkey (#568)
  • collectionsadd October deposits (#565)
  • docsadd the registry MCP App (#551)
  • verifyrebuild genesis keys (#549)
  • verifyopen weave keyfiles (#548)
  • collectionsBreakingadd genesis solve (#545)
  • collectionslink pogo to PogoB (#542)
  • collectionsadd crypto-puzzles (#540)
  • collectionsadd 9vw04 (#537)
  • rushwalletsolve wallet 26 (#536)
  • collectionsadd weave riddles (#535)
  • toolsadd ChatGPT @ mentions (#533)
  • toolsfold long stage lists (#532)
  • collectionsadd zden/demobit-2018 thread (#525)
  • collectionsadd zden/level-xm17 thread (#524)

Performance

  • chainsskip chain classes (#567)

Fixes

  • collectionsglimmer solved (#564)
  • queue every lazy import (#562)
  • docsextend Docus once (#559)
  • docsmake GITHUB_TOKEN optional (#541)
  • collectionsfund bits/1 in 2015 (#538)

Refactors

  • write coin amounts in one spot (#531)
  • move prize sums out of format (#530)
  • lift extensions out (#527)
  • rename core/utils to format (#526)

Documentation

  • run the docs script (#560)

Build

  • fold docs into the workspace (#563)

Chore

  • docsupdate Nuxt to 4.6.2 (#566)
  • docsmove to Nuxt 4.6 (#534)

CI

  • release through uppt (#528)

v0.30.01 breaking

18 enhancements · 1 performance · 5 fixes · 1 refactors · 1 documentation · 1 chore · 3 tests

Enhancements

  • Fold screenshot rows into their source (#480)
  • docsOpen every puzzle file on the page (#483)
  • Add MCP server description and icons (#484)
  • collectionsAdd known public keys (#490)
  • collectionsMark powerful-moss claimed (#493)
  • collectionsAdd genesis October 7 reply (#495)
  • Add liberte-guidant-le-peuple (#498)
  • balanceBlockchair spare for Litecoin (#499)
  • Build /mcp with toToolkitTools (#502)
  • cliSwap plainWord() for plain (#503)
  • collectionsAdd hunting-time (#504)
  • Add .electrum() for Electrum seeds (#508)
  • collectionsAdd phy October hint (#510)
  • collectionsAdd zden/level-5 key and solver (#516)
  • collectionsAdd quizchain2/77 key (#517)
  • collectionsAdd zden/decred-autonomy claim (#518)
  • collectionsAdd coin-games (#519)
  • Fold long hint lists in puzzles show (#523)

Performance

  • balanceBench mempool.space on a miss (#488)

Fixes

  • Report a mistyped address as a typo (#485)
  • errorsSkip the roster when a guess fits (#486)
  • Point a collection key at its puzzles (#487)
  • verifySkip entropy passphrase on Electrum (#509)
  • Skip watch captures past the cutoff (#521)

Refactors

  • BreakingBuild the CLI with runCli (#494)

Documentation

  • Move AGENTS.md into the code and CONTRIBUTING.md (#520)

Chore

  • Drop the @agntn/tools type paths (#522)

Tests

  • Take the pass point from agntn/curves (#482)
  • Clear the asset commit after each test (#492)
  • Replace tautological assertions (#514)

v0.29.01 breaking

6 enhancements · 2 fixes · 1 refactors

Enhancements

  • toolsPoint file links at puzzles_assets (#470)
  • collectionsAdd real-big-block (#473)
  • collectionsAdd school-of-bitcoin (#475)
  • collectionsAdd genesis October hints (#476)
  • collectionsAdd walking-banks xpub (#477)
  • toolsName eligibility carriers by path (#479)

Fixes

  • assetsLink the commit a checkout runs (#472)
  • docsNever cache a missing chunk (#474)

Refactors

  • BreakingRename b1000 to bits (#478)

v0.28.4

4 enhancements · 2 fixes

Enhancements

  • cliReplay a whole technique with verify (#460)
  • Fold the dust in puzzles show (#461)
  • toolsVerify every match in one call (#462)
  • collectionsAdd smith-lyle-moore (#465)

Fixes

  • cliCut the 400 spaces off help lines (#459)
  • assetsRead unreleased files from main (#466)

v0.28.3

5 enhancements · 1 performance

Enhancements

  • collectionsAdd grycoin (#451)
  • Verify the recipe, not just the key (#452)
  • collectionsAdd quizchain2/71 to 77 (#453)
  • Give the Caesar shift a tag of its own (#456)
  • Notice when a spend leaks the key (#457)

Performance

  • docsRedraw only the OG cards that change (#458)

v0.28.2

5 enhancements · 1 fixes

Enhancements

  • collectionsAdd walking-banks (#440)
  • toolsHand agents the puzzle files (#441)
  • collectionsAdd phy (#442)
  • collectionsAdd seed-phrase (#444)
  • cliRead watch histories past 100 (#450)

Fixes

  • releaseLeave the changelog to changelogen (#445)

v0.28.1

4 enhancements · 1 fixes · 1 chore

Enhancements

  • collectionsMark weave/12 claimed (#435)
  • collectionsAdd genesis replies to cut -b (#436)
  • collectionsAdd quizchain2/61 to 70 (#438)
  • collectionsAdd move-over-brokers (#439)

Fixes

  • docsRemote MCP reads no arguments as {} (#437)

Chore

v0.28.01 breaking

1 enhancements · 2 fixes · 1 refactors · 2 chore

Enhancements

  • collectionsAdd quizchain2/51 to 60 (#425)

Fixes

  • Record the deposits watch still reports (#426)
  • docsSanitize keys the remote MCP echoes (#433)

Refactors

  • collectionsBreakingArweave becomes weave (#432)

Chore

v0.27.2

5 enhancements · 2 fixes

Enhancements

  • Tag records with techniques (#415)
  • docsShow techniques in the dossiers (#416)
  • collectionsAdd satoshi-maze (#418)
  • collectionsAdd natasha-otomoski (#419)
  • collectionsAdd quizchain2/41 to 50 (#420)

Fixes

  • docsFit author dossiers on a phone (#417)
  • collectionsMatch prizes to balances (#421)

v0.27.01 breaking

5 enhancements · 1 fixes

Enhancements

  • cliWatch chain and source changes (#405)
  • collectionsAdd the gsmg deposits (#406)
  • puzzleBreakingBuild every record with puzzle() (#410)
  • collectionsAdd quizchain2/21 to 30 (#411)
  • collectionsAdd great-riddle (#412)

Fixes

  • cliFlag watch histories cut at 100 (#409)

v0.26.1

5 enhancements · 1 chore

Enhancements

  • collectionsAdd quizchain2/11 to 20 (#398)
  • collectionsAdd the 2026 bitaps deposit (#399)
  • collectionsAdd gsmg phase 3.2 stages (#400)
  • puzzlePin asset bytes with SHA-256 (#401)
  • collectionsPin author URLs of 28 assets (#403)

Chore

v0.26.01 breaking

2 enhancements · 1 fixes · 1 refactors

Enhancements

  • balanceRead Dogecoin through Blockchair (#386)
  • collectionsAdd quizchain2 (#388)

Fixes

  • Serialize overlapping lazy imports (#384)

Refactors

  • toolsBreakingDeclare each tool once (#381)

v0.25.1

1 enhancements · 1 fixes · 1 build · 1 chore · 1 tests

Enhancements

  • collectionsAdd trivia-brainwallet (#377)

Fixes

  • docsName bitcoinCashPuzzle in the record (#375)

Build

  • Bundle with obuild again (#378)

Chore

Tests

  • packedIgnore the checkout path (#379)

v0.25.01 breaking

9 enhancements · 2 fixes · 1 chore · 1 tests

Enhancements

  • chainsAdd eCash (#358)
  • collectionsAdd proof-of-writing (#359)
  • collectionsGenesis toolchain replies (#360)
  • collectionsAdd bitaddress (#366)
  • chainsDogecoin records and key checks (#369)
  • collectionsAdd doges-gambit (#370)
  • chainsBase records and balances (#371)
  • puzzlePrizes that wait in an escrow (#372)
  • collectionsAdd powerful-moss (#373)

Fixes

  • docsCount hints of open puzzles (#363)
  • depsMake typebox a host peer (#367)

Chore

  • BreakingRequire Node.js 26 (#356)

Tests

  • Hash with agntn/hashes instead of noble (#364)

v0.24.1

4 enhancements · 1 performance · 8 fixes · 1 chore · 1 tests

Enhancements

  • docsFilter the collections index (#335)
  • docsServe the puzzle tools over MCP (#336)
  • balanceEthereum without an Etherscan key (#348)
  • collectionsAdd path-to-greatness (#351)

Performance

  • utilsSkip the ICU load on import (#350)

Fixes

  • toolsReject arguments a tool does not take (#339)
  • cliFail on flags a command does not take (#340)
  • cliNo color codes in piped help (#341)
  • docsRemote MCP rejects unknown arguments (#343)
  • mcpName the allowed values in schema errors (#345)
  • toolsSay which filter hid an address (#347)
  • errorsSuggest each puzzle named 71 (#349)
  • collectionsBrave-new-world hash160 (#354)

Chore

Tests

  • One 30 s timeout for the whole suite (#342)

v0.24.04 breaking

16 enhancements · 8 fixes · 3 refactors · 2 documentation · 1 build · 1 chore · 1 tests

Enhancements

  • solversOne record and page per solver (#297)
  • collectionsLink AoiNakamoto's X account (#298)
  • partsAdd stages (#299)
  • collectionsAdd quizchain/9 (#301)
  • collectionsAdd quizchain/10 (#302)
  • cliCheck balances of a filtered set (#304)
  • chainsSupport Bitcoin Cash (#305)
  • collectionsAdd mini (#306)
  • collectionsAdd teikhos (#308)
  • balanceBlockstream fallback for Bitcoin (#312)
  • collectionsBreakingAll seven mini-puzzles (#318)
  • collectionsAdd brave_new_world (#321)
  • collectionsAdd wealth-in-poetry (#325)
  • docsChangelog page with an RSS feed (#326)
  • collectionsGenesis hints to September 26 (#330)
  • collectionsAdd quizchain/11 to 77 (#331)

Fixes

  • cliMatch show to puzzles_show (#311)
  • datasetKeep every digit in prize totals (#314)
  • toolsName the coin in puzzles_balance (#315)
  • collectionsGsmg without unsourced claims (#317)
  • docsIndent plain text code blocks (#319)
  • cliSay 1 puzzle, not 1 puzzles (#320)
  • docsWrap long hint text in the hint log (#329)
  • assetsPin links to the release tag (#332)

Refactors

  • collectionsBreakingKebab-case identifiers (#323)
  • collectionsBreakingGenesis as a singleton (#327)
  • collectionsBreakingKtimesg becomes 80-bit (#328)

Documentation

  • Keep singleton and author counts live (#333)
  • Point DESIGN.md at the agntn design system (#334)

Build

  • Ship no source maps (#300)

Chore

Tests

  • packedWrite the load report to a file (#310)

v0.23.01 breaking

19 enhancements · 3 fixes · 2 refactors · 1 chore · 1 tests

Enhancements

  • collectionsArchive quizchain blocks 2 to 5 (#265)
  • docsSortable rosters on UTable (#267)
  • errorsDid you mean b1000/135? (#268)
  • collectionsAdd ktimesg (#271)
  • collectionsIamabananaamaa GIF puzzle (#273)
  • docsLanding roster of collections (#274)
  • collectionsWickex YouTube puzzle (#275)
  • docsVerify console on the landing (#277)
  • collectionsAdd iamabananaamaa/caesar (#279)
  • cliServe mcp from src inside a checkout (#281)
  • docsRecord file on the console shell (#283)
  • collectionsAdd picture_puzzle (#284)
  • collectionsAdd quizchain/6 (#287)
  • collectionsAdd quizchain/7 (#289)
  • docsLanding registry as a manifest map (#290)
  • collectionsAdd quizchain/8 (#291)
  • docsCustom collection panel in two files (#293)
  • registryType built-in collection lookups (#295)
  • docsOne design system across the site (#296)

Fixes

  • toolsReject an empty collection filter (#280)
  • collectionsAoiNakamoto asked r/Bitcoin (#282)
  • partsMark keys rebuilt from a recipe (#294)

Refactors

  • datasetDrop @noble/hashes (#269)
  • verifyBreakingRename verifyPuzzle to verify (#288)

Chore

Tests

  • fixturesGive the refresh tests 30 s (#286)

v0.22.01 breaking

5 enhancements · 1 performance · 1 fixes · 2 documentation · 1 build

Enhancements

  • collectionsZden/level_5 claimed (#254)
  • docsPuzzle lists join the instruments (#255)
  • collectionsAdd quizchain/4 (#258)
  • collectionsAdd quizchain/5 (#260)
  • docsOne dossier per puzzle page (#262)

Performance

  • verifyBreakingLoad keys on the first verification (#259)

Fixes

  • collectionsZden/demobit_2018 has no capture (#253)

Documentation

  • Pin example results to the dataset (#256)
  • Counts come from the library (#261)

Build

  • Lint, test and pack through Vite+ (#252)

v0.21.3

9 enhancements · 1 fixes · 2 documentation

Enhancements

  • docsPlayground on the dossier instruments (#238)
  • cliPage a long list (#239)
  • collectionsAdd book_quiz (#241)
  • docsThe playground runs the author tools (#242)
  • collectionsArchive the satoshi_birthday_quiz thread (#243)
  • collectionsAdd quizchain (#246)
  • docsCollection pages open on a dossier (#247)
  • collectionsAdd quizchain/2 (#250)
  • collectionsAdd quizchain/3 (#251)

Fixes

  • toolsDust prints as 1e-8 (#244)

Documentation

  • The skill follows the hint contract (#245)
  • Skills ask the tools and ship with the package (#248)

v0.21.2

8 enhancements · 3 fixes · 1 documentation

Enhancements

  • collectionsCredit Level 4's winner (#224)
  • collectionsCodex key from Zden (#225)
  • toolsBrowse puzzles without repeats (#227)
  • datasetList the puzzles of one chain (#228)
  • datasetLook a puzzle up by its address (#230)
  • collectionsAdd mineshop (#231)
  • collectionsAdd satoshi_birthday_quiz (#236)
  • authorsSourced records, one page each (#237)

Fixes

  • balance18 decimals outrun a double (#229)
  • errorsA miss names what does exist (#232)
  • toolsOverlapping imports lose the dataset (#234)

Documentation

  • Preserve the cited source tweets (#226)

v0.21.1

4 enhancements · 4 fixes · 1 chore

Enhancements

  • collectionsTORCHED H34R7S painting (#215)
  • docsGive tool results a compact panel (#216)
  • collectionsWhite paper wallet key (#219)
  • collectionsMovie Enigma's original rules (#222)

Fixes

  • toolsSay what each list status means (#217)
  • toolsA missing id was loading keys (#218)
  • registryRetain loader registrations (#220)
  • verifyHex must not change a WIF verdict (#221)

Chore

v0.21.01 breaking

4 enhancements · 1 performance · 1 refactors

Enhancements

  • collectionsDug's student treasure hunt (#204)
  • collectionsGenesis wallet and its hints (#206)
  • docsRefresh landing fixtures (#211)
  • collectionsRushWallet's missing video hint (#214)

Performance

  • toolsSpeed up discovery and stats (#213)

Refactors

  • puzzleBreakingReserve solver for people (#203)

v0.20.3

3 enhancements · 3 fixes · 1 documentation

Enhancements

  • collectionsDecred Autonomy puzzle (#197)
  • collectionsJanus 33*bbb hint (#199)
  • collectionsLuckyLurker vaults and hints (#202)

Fixes

  • datasetKeep export hashes consistent (#195)
  • verifySkip unsupported address kinds (#196)
  • collections1bitcoin claim was 777 sats (#201)

Documentation

  • Pin prose counts to the registry (#200)

v0.20.2

6 enhancements · 3 fixes

Enhancements

  • docsCollection pages list their hints (#186)
  • collectionsZden/level_5 hints (#187)
  • cliAdd a hints command (#188)
  • collectionsZden hints the author published (#189)
  • collectionsZden solver images (#192)
  • collectionsAdd ledger_donjon (#193)

Fixes

  • datasetCollection rows count every status (#190)
  • toolsHints report the hint assets too (#191)
  • datasetHandle non-string puzzle ids (#194)

v0.20.1

3 enhancements · 9 fixes · 1 refactors · 2 chore · 1 ci

Enhancements

  • collectionsAdd movie_enigma (#178)
  • puzzleRecord hints and what confirms them (#183)
  • collectionsB1000 carries its author's hint (#185)

Fixes

  • toolsShow the whole record in puzzles_show (#162)
  • chainsCheck txids through @agntn/chains (#163)
  • cliPrint domain errors as one line (#164)
  • partsMake the Key builder immutable (#166)
  • puzzleFreeze the record a factory builds (#170)
  • datasetMemoized views refuse a rewrite (#173)
  • collectionResolve only canonical queries (#176)
  • cliKeep the verify crypto out of --help (#179)
  • toolsLink the hints and the solver asset (#180)

Refactors

  • verifyLet @agntn/keys derive addresses (#165)

Chore

CI

  • publishInstall the docs before pnpm test (#161)

v0.20.0

7 heads-up

Heads-up

  • Package is @agntn/puzzles, binary is puzzles
  • Node.js 24 or newer
  • Fields became methods
  • get(), stats(), all() are async. A single collection import stays sync
  • Collections live at @agntn/puzzles/collections/<key>
  • CLI lost author, search, range, YAML/CSV and --open. --json is the machine format now
  • Errors are PuzzlesError, not BohaError

v0.19.0

2 features

Features

  • rushwalletAdd 30 RushWallet brainwallet contest puzzles (#152)
  • b1000Change 135 to solved (#159)

v0.18.1

1 features · 1 documentation · 2 miscellaneous tasks

Features

  • warpBackfill keys + passphrases + KDF salt + schema fixes (#153)

Documentation

  • Fix README and skill drift (#151)

Miscellaneous Tasks

  • cliRemove unused #[allow(dead_code)] annotations
  • releaseV0.18.1

v0.18.0

2 new collection · 3 data model · 3 balance fetching · 4 search & cli · 2 verification · 5 architecture · 3 quality

New collection

  • warp: 6 WarpWallet challenges with full blockchain data — txids, pubkeys, hash160, dates (#149)
  • New Status::Expired variant for puzzles whose funds were reclaimed after a deadline (#149)

Data model

  • currency field on Puzzle for non-native token prizes, with currency() accessor that falls back to chain symbol (#143)
  • Stats keyed by currency string instead of Chain enum (#143)
  • weave9 puzzle: 100 DAI on Ethereum with full Etherscan transaction data (#145)

Balance fetching

  • Arweave balance via arweave.net/wallet/{address}/balance (#144)
  • Decred balance via dcrdata totals endpoint (#140)
  • Litecoin balance via litecoinspace.org mempool-compatible API (#127)

Search & CLI

  • Chain symbols (BTC, LTC, XMR, DCR) now searchable (#142)
  • Currency field included in search results (#146)
  • --case-sensitive searches all fields correctly (#139)
  • boha list rejects unknown collection names instead of silently dumping everything (#137)

Verification

  • BIP39 passphrase passed to seed derivation — puzzles with known passphrases now verify correctly (#147)
  • Required (unknown) passphrases return UnverifiableKey instead of guessing empty string (#147)

Architecture

  • Centralized collection dispatch registry — one place to wire in new collections (#141)
  • Chain::address_explorer_url and Puzzle::explorer_url for address links (#129)
  • hash_collision::solved() iterator for consistency with other collections (#126)
  • Mixed-case hex accepted in Chain::is_valid_txid (#125)
  • PUZZLES.len() replaces hardcoded counts in hash_collision and zden (#124)

Quality

  • Clippy pedantic + nursery lints enabled with clippy.toml and [lints.clippy] config (#135)
  • Agent skills for library and CLI usage (#133)
  • Test coverage for Chain methods, is_valid_txid formats (#130, #128)

v0.17.0

11 what's new · 4 testing

What's New

  • Cryptographic verification with per-chain dispatch (#123)
  • Litecoin balance fetching via mempool.space (#127)
  • Chain::address_explorer_url and Puzzle::explorer_url (#129)
  • Display and FromStr for Chain and Status enums (#122)
  • hash_collision::solved() iterator (#126)
  • Agent skills for AI coding assistants (#133)
  • Mixed-case hex now accepted in Chain::is_valid_txid (#125)
  • PUZZLES.len() replaces hardcoded count (#124)
  • Ballet collection supported in author CLI command (#120)
  • Strict clippy config: deny all warnings, warn on pedantic and nursery lints (#135)
  • Related tools section: added vusi and kangaroo

Testing

  • Chain methods: explorer URLs, symbol, name, ALL constant (#130)
  • Chain::is_valid_txid across all chain formats (#128)
  • format_duration_human_readable edge cases
  • i32 IntoPuzzleNum edge cases (#121)

v0.16.0

3 what's new

What's New

  • arweave collection: 11 Tiamat/Chronobot puzzles with AR and ETH prizes (#111)
  • Chain::ALL constant and centralized txid validation (#109)
  • zden puzzle names normalized to snake_case (#114)

v0.15.0

8 what's new

What's New

  • All collections migrated from TOML to JSONC with JSON Schema validation (#101)
  • boha search - find puzzles by status, chain, collection, bits (#94)
  • boha verify - validate puzzle data integrity (#98)
  • boha export - JSON/CSV output formats (#106)
  • Data version embedded at build time (#97)
  • Public key validation for claimed puzzles (#103)
  • Scripts migrated to JSONC with unified typed address structs (#104, #108)
  • Standardized README badges and community section

v0.14.0

3 what's new

What's New

  • WIF validation runs at build time, catching key mismatches early (#93)
  • zden Level 1 (#81), Level 2 (#85), and Level 3 (#87) private keys added
  • key field renamed to value with inline TOML tables for cleaner data files (#83)

v0.13.0

3 what's new

What's New

  • ballet collection: 3 physical crypto wallet cards, BIP38 encrypted keys (#76)
  • WIF (Wallet Import Format) added to 82 solved puzzles via new generate_wif.rs script (#79)
  • README version now auto-updates during release

v0.12.0

3 what's new

What's new

  • Asset support for puzzle collections
  • retired_coder solver profile
  • Related Tools section in docs (vuke, vgen)

v0.11.0

9 what's new · 2 migration notes

What's new

  • Address struct with chain, kind, hash160, witness_program
  • Key struct with hex, wif, seed (BIP39), bits, shares (SSSS)
  • SegWit (P2WPKH/P2WSH) and Taproot (P2TR) address types
  • Ethereum balance API support via Etherscan
  • Decred API support in scripts
  • bitimage puzzle collection (2 puzzles, file-derived keys)
  • bitaps mnemonic challenge data
  • human-panic for friendly CLI crash reports
  • Solvers extracted to dedicated TOML file (solvers.toml)

Migration notes

  • Address and Key are now structs, not plain strings. Access the raw value via .value and .hex respectively.
  • Solver data is now referenced by ID. If you were parsing puzzle files directly, solver definitions moved to solvers.toml.

v0.10.0

2 what's new

What's new

  • zden collection with 15 visual crypto puzzles
  • Full timestamp precision on all date fields

v0.9.0

5 what's new

What's new

  • Solver struct with name, addresses, and profiles for solved puzzles
  • claim_txid() accessors with block explorer URL generation
  • Pubkey to hash160 validation tests
  • Private key to address derivation verification tests
  • Balance feature test coverage

v0.8.0

2 what's new

What's new

  • transactions field on Puzzle struct with full tx history
  • Transaction data compiled at build time from JSONC sources

v0.7.0

4 what's new

What's new

  • KeySource enum for key derivation semantics
  • Author struct with name, addresses, and profile links
  • Updated AGENTS.md with code map and testing documentation
  • Added DeepWiki badge to README

v0.6.0

2 highlights

Highlights

  • `solve_time` field (#32): How long it took from puzzle creation to solution. For solved puzzles, this is the raw duration data that makes leaderboards and difficulty analysis possible.
  • Generalized `key_range` (#30): Previously rigid, now flexible enough to express the actual search space for different puzzle types. Not every puzzle has a neat power-of-two range.

v0.5.0

4 highlights

Highlights

  • `h160` field for P2PKH (#17): Raw HASH160 values for legacy addresses. Lets you verify address derivation without pulling in a base58 decoder.
  • `script_hash` for P2SH (#22): The actual script hash behind P2SH addresses. Essential for hash_collision collection puzzles where the script structure is the whole point.
  • `btc` renamed to `prize` (#25): The old field name assumed Bitcoin, but not all bounties pay in BTC. prize is chain-agnostic and accurate.
  • autofix.ci integration (#23): Automatic formatting via CI. No more formatting commits cluttering the history.

v0.4.0

2 highlights

Highlights

  • `Chain` enum (#15): Replaces raw strings with a proper enum. Prepares the library for collections beyond Bitcoin.
  • `pubkey_format` field (#16): Tracks whether a puzzle uses compressed or uncompressed public keys. This matters for address derivation and solving strategy.

v0.3.0

1 highlights

Highlights

  • GSMG puzzle collection (#10): Added the GSMG (Give Satoshi Money Game) puzzle. A single high-profile challenge that has been standing for a while. Third collection in the library alongside b1000 and hash_collision.

v0.2.0

2 highlights

Highlights

  • `source_url` field (#8): Links back to the original source where each puzzle was published. Now you can trace any puzzle to its origin.
  • `start_date` field (#7): When the puzzle or bounty was first created. Useful for tracking how long puzzles have been standing unsolved.

v0.1.0

5 highlights

Highlights

  • b1000 collection: All 256 Bitcoin puzzles from the 32 BTC challenge. Private keys live in known ranges [2^(N-1), 2^N - 1], making this a brute-force playground.
  • hash_collision collection: Peter Todd's P2SH bounties for finding hash function collisions. Real money on the line for breaking SHA1, RIPEMD160, and friends.
  • Build-time TOML codegen: Puzzle data lives in TOML files, gets compiled into &'static Rust structs via build.rs. No runtime parsing, no heap allocation.
  • CLI with 4 commands: stats, list, show, balance behind the cli feature flag. Balance fetching (mempool.space API) behind the balance flag.
  • Puzzle struct: 16 fields covering addresses, keys, status, funding sources, and metadata.