boha
Crypto bounties, puzzles and challenges data library.
Installation
CLI
Arch Linux (AUR):
From crates.io:
Library
[]
= "0.1"
With balance fetching:
[]
= { = "0.1", = ["balance"] }
Usage
CLI
# Statistics
# List puzzles
# Show puzzle details
# Get key range
# Check balance (requires --features balance)
# 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 |
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;
Balance fetching (async)
use ;
async
Features
| Feature | Description |
|---|---|
cli |
Command-line interface |
balance |
Blockchain balance fetching via mempool.space API |
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
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 TOML 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, and solver information.
License
MIT