boha
Crypto bounties, puzzles and challenges data library.
Installation
CLI
Arch Linux (AUR):
From crates.io:
Library
[]
= "0.18"
With balance fetching:
[]
= { = "0.18", = ["balance"] }
Usage
CLI
# Statistics
# List puzzles
# Show puzzle details
# Show puzzle and open asset in browser
# Show collection author
# Get key range
# Check balance (requires --features balance)
# Verify private key derives correct address
;
# Export full database (JSON/JSONL only)
|
# Output formats (default: table)
|
Output formats
| Format | Flag | Description |
|---|---|---|
table |
-o table |
TUI table with colors (default) |
json |
-o json |
Pretty-printed JSON |
jsonl |
-o jsonl |
JSON Lines (one object per line) |
yaml |
-o yaml |
YAML |
csv |
-o csv |
CSV with header |
Note: export command supports JSON and JSONL only. Use list command for CSV/YAML output.
Library
use ;
let p90 = get.unwrap;
println!;
println!;
println!;
let range = p90.key_range.unwrap;
println!;
if let Some = p90.claim_txid
let unsolved: = all
.filter
.filter
.collect;
let gsmg_puzzle = get;
let sha256 = get.unwrap;
let level1 = get.unwrap;
let puzzle = get.unwrap;
let puzzle = get.unwrap;
let puzzle = get.unwrap;
let puzzle = get.unwrap;
let puzzle = get.unwrap;
// Access puzzle assets (images, hints)
if let Some = puzzle.asset_path
if let Some = puzzle.asset_url
Balance fetching (async)
use ;
async
Features
| Feature | Description |
|---|---|
cli |
Command-line interface |
balance |
Blockchain balance fetching (mempool.space for BTC/LTC, Etherscan for ETH) |
Collections
b1000
Bitcoin Puzzle Transaction - 256 puzzles where each puzzle N has a private key in range [2^(N-1), 2^N - 1].
Solved (82): 1-70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130
Unsolved with public key (6): 135, 140, 145, 150, 155, 160
Unsolved (72): 71-74, 76-79, 81-84, 86-89, 91-94, 96-99, 101-104, 106-109, 111-114, 116-119, 121-124, 126-129, 131-134, 136-139, 141-144, 146-149, 151-154, 156-159
Empty - no funds (96): 161-256
gsmg
GSMG.IO 5 BTC Puzzle - Multi-phase cryptographic challenge with a single Bitcoin address.
| Address | Status | Prize |
|---|---|---|
| 1GSMG1JC9wtdSwfwApgj2xcmJPAwx7prBe | Unsolved | ~1.25 BTC |
Originally 5 BTC, prize halves with each Bitcoin halving.
hash_collision
Peter Todd's hash collision bounties - P2SH addresses that can be claimed by finding hash collisions.
| Puzzle | Hash | Status | Prize |
|---|---|---|---|
| sha1 | SHA-1 | ✅ Claimed (2017-02-23) | 2.48 BTC |
| sha256 | SHA-256 | ⏳ Unsolved | 0.277 BTC |
| ripemd160 | RIPEMD-160 | ⏳ Unsolved | 0.116 BTC |
| hash160 | HASH160 | ⏳ Unsolved | 0.100 BTC |
| hash256 | HASH256 | ⏳ Unsolved | 0.100 BTC |
| op_abs | OP_ABS | ✅ Claimed (2013-09-13) | - |
zden
Zden's Visual Crypto Puzzles - Artistic puzzles where private keys are encoded in images, animations, and visual patterns.
| Chain | Solved | Unsolved | Total |
|---|---|---|---|
| Bitcoin | 9 | 2 | 11 |
| Ethereum | 2 | 0 | 2 |
| Litecoin | 1 | 0 | 1 |
| Decred | 1 | 0 | 1 |
Unsolved: Level 5, Level HALV
arweave
Tiamat's Arweave Bounties - Cryptographic puzzles on the Arweave blockchain, created by Tiamat (chronobot.io).
| Status | Count |
|---|---|
| Claimed | 7 |
| Unsolved | 4 |
ballet
Bobby Lee's Ballet Crypto Puzzles - Physical Bitcoin notes (Ballet wallets) with BIP38-encrypted private keys. Solve by cracking the passphrase printed on the card.
| Status | Count |
|---|---|
| Solved | 1 |
| Unsolved | 2 |
bitaps
Bitaps Mnemonic Challenge - Shamir Secret Sharing Scheme (SSSS) puzzle where the original 12-word mnemonic was split into 5 shares using 3-of-5 threshold.
| Address | Status | Prize |
|---|---|---|
| bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6 | Unsolved | ~1.0 BTC |
Two of three required shares are published. Goal: break the SSSS scheme or find implementation bugs.
bitimage
Bitimage puzzles - Bitcoin addresses derived from arbitrary files using SHA256(Base64(file)) as BIP39 entropy.
| Puzzle | Passphrase | Status | Prize |
|---|---|---|---|
| kitten | No | ✅ Solved (2019-07-09) | 0.00095 BTC |
| kitten_passphrase | Yes | ⏳ Unsolved | ~0.01 BTC |
Both puzzles use the same source file (Antonopoulos kitten tweet). The passphrase puzzle requires an unknown BIP39 passphrase.
Data
All puzzle data is embedded at compile time from JSONC files in data/.
Each puzzle includes: address (with HASH160 and type), chain, status, prize, public key (if exposed), private key (if solved), key source, solve date (if solved), solve time, start date (when funded), transactions history, solver information, and assets (puzzle images, hints).
Assets
Visual puzzle collections (zden, gsmg, bitimage) include embedded assets in assets/ directory:
assets/
├── zden/ # 15 puzzle images
├── gsmg/ # puzzle.png, follow_the_white_rabbit.png
└── bitimage/ # kitten images
Access via library:
let puzzle = get.unwrap;
println!; // assets/zden/level_4/puzzle.png
println!; // https://raw.githubusercontent.com/...
Agent Skills
This project includes agent skills that teach AI coding agents how to use boha.
Static skills
Curated by the project author:
| Skill | Description |
|---|---|
boha |
Rust library API for querying crypto puzzle and bounty data across six blockchains |
boha-cli |
CLI for browsing, searching, verifying and exporting puzzle data |
Dynamic skills
Auto-generated from live docs, issues, and releases using skilld:
Related Tools
| Tool | Description |
|---|---|
| vuke | Research tool for studying vulnerable Bitcoin key generation practices. Analyze solved puzzles for weak patterns. |
| vgen | Bitcoin vanity address generator with regex pattern matching and GPU acceleration. |
| vusi | ECDSA signature vulnerability analysis - nonce reuse, polynonce, biased nonces, lattice/HNP attacks. |
| kangaroo | Pollard's Kangaroo ECDLP solver for secp256k1 using Vulkan/Metal/DX12 compute. |
License
MIT