
Datenbibliothek für Crypto-Bounties, Rätsel und Herausforderungen
Datenbibliothek für Krypto-Bounties, Puzzles und Herausforderungen.
Arch Linux (AUR):
paru -S boha
Von crates.io:
cargo install boha --features cli,balance
[dependencies]
boha = "0.19"
Mit Guthabenabruf:
[dependencies]
boha = { version = "0.19", features = ["balance"] }
# Statistiken
boha stats
# Puzzles auflisten
boha list
boha list b1000
boha list b1000 --unsolved
boha list b1000 --with-pubkey
# Puzzle-Details anzeigen
boha show b1000/90
boha show gsmg
boha show hash_collision/sha256
# Puzzle anzeigen und Asset im Browser öffnen
boha show zden/level_4 --open
# Sammlungsautor anzeigen
boha author b1000
boha author zden
# Schlüsselbereich abrufen
boha range 90
# Guthaben prüfen (erfordert --features balance)
boha balance b1000/71
# Puzzles nach ID, Adresse, Chain oder Währung durchsuchen
boha search sha256
boha search kitten --collection bitimage
# Prüfen, ob der private Schlüssel die korrekte Adresse ableitet
boha verify b1000/66
boha verify --all
boha verify --all --quiet; echo $?
# Vollständige Datenbank exportieren (nur JSON/JSONL)
boha export
boha export b1000 zden
boha export --unsolved
boha export -o jsonl | jq .
boha export --compact
# Ausgabeformate (Standard: Tabelle)
boha -o json stats
boha -o yaml show b1000/90
boha -o csv list b1000 > puzzles.csv
boha -o jsonl list b1000 --unsolved | jq .
Hinweis: Der Befehl export unterstützt nur JSON und JSONL. Verwenden Sie den Befehl list für CSV-/YAML-Ausgabe.
use boha::{arweave, b1000, ballet, bitaps, bitimage, gsmg, hash_collision, warp, zden, Status};
let p90 = b1000::get(90).unwrap();
println!("Address: {}", p90.address.value);
println!("HASH160: {}", p90.address.hash160.unwrap());
println!("Funded: {}", p90.start_date.unwrap_or("unknown"));
let range = p90.key_range().unwrap();
println!("Range: 0x{:x} - 0x{:x}", range.start(), range.end());
if let Some(txid) = p90.claim_txid() {
println!("Claimed in: {}", txid);
println!("Explorer: {}", p90.chain.tx_explorer_url(txid));
}
let unsolved: Vec<_> = b1000::all()
.filter(|p| p.status == Status::Unsolved)
.filter(|p| p.pubkey.is_some())
.collect();
let gsmg_puzzle = gsmg::get();
let kitten = bitimage::get("kitten").unwrap();
let sha256 = hash_collision::get("sha256").unwrap();
let warp_challenge = warp::get("challenge_1").unwrap();
let level1 = zden::get("level_1").unwrap();
let puzzle = boha::get("b1000/90").unwrap();
let puzzle = boha::get("gsmg").unwrap();
let puzzle = boha::get("bitaps").unwrap();
let puzzle = boha::get("bitimage/kitten").unwrap();
let puzzle = boha::get("warp/challenge_1").unwrap();
let puzzle = boha::get("zden/level_1").unwrap();
// Auf Puzzle-Assets zugreifen (Bilder, Hinweise)
if let Some(path) = puzzle.asset_path() {
println!("Local: {}", path);
}
if let Some(url) = puzzle.asset_url() {
println!("Remote: {}", url);
}
use boha::{b1000, balance};
#[tokio::main]
async fn main() {
let puzzle = b1000::get(71).unwrap();
let bal = balance::fetch(puzzle.address.value, puzzle.chain).await.unwrap();
println!("Confirmed: {} sats", bal.confirmed);
println!("Total: {:.8} BTC", bal.total_btc());
}
| Funktion | Beschreibung |
|---|---|
cli | Befehlszeilenschnittstelle |
balance | Abruf von Blockchain-Guthaben (BTC über mempool.space, LTC über litecoinspace.org, ETH über Etherscan, DCR über dcrdata, AR über arweave.net) |
Bitcoin Puzzle Transaction – 256 Puzzles, bei denen jedes Puzzle N einen privaten Schlüssel im Bereich [2^(N-1), 2^N - 1] hat.
Gelöst (82): 1-70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130
Ungelöst mit öffentlichem Schlüssel (6): 135, 140, 145, 150, 155, 160
Ungelöst (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
Leer – keine Mittel (96): 161-256
GSMG.IO 5 BTC Puzzle – Mehrphasige kryptografische Herausforderung mit einer einzigen Bitcoin-Adresse.
| Adresse | Status | Preis |
|---|---|---|
| 1GSMG1JC9wtdSwfwApgj2xcmJPAwx7prBe | Ungelöst | ~1,25 BTC |
Ursprünglich 5 BTC; der Preis halbiert sich mit jedem Bitcoin-Halving.
Peter Todds Hash-Kollisions-Bounties – P2SH-Adressen, die durch das Finden von Hash-Kollisionen beansprucht werden können.
Zdens visuelle Krypto-Puzzles – Künstlerische Puzzles, bei denen private Schlüssel in Bildern, Animationen und visuellen Mustern kodiert sind.
Ungelöst: Level 5, Level HALV
Tiamats Arweave-Bounties – Kryptografische Puzzles auf der Arweave-Blockchain, erstellt von Tiamat (chronobot.io).
| Status | Anzahl |
|---|---|
| Beansprucht | 7 |
| Ungelöst | 4 |
Bobby Lees Ballet-Krypto-Puzzles – Physische Bitcoin-Notizen (Ballet-Wallets) mit BIP38-verschlüsselten privaten Schlüsseln. Lösung durch Knacken der auf der Karte gedruckten Passphrase.
| Status | Anzahl |
|---|---|
| Gelöst | 1 |
| Ungelöst | 2 |
Bitaps-Mnemonic-Herausforderung – Puzzle mit Shamir Secret Sharing Scheme (SSSS), bei dem die ursprüngliche 12-Wörter-Mnemonic mit einer 3-von-5-Schwelle in 5 Anteile aufgeteilt wurde.
| Adresse | Status | Preis |
|---|---|---|
| bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6 | Ungelöst | ~1,0 BTC |
Zwei der drei erforderlichen Anteile sind veröffentlicht. Ziel: das SSSS-Schema brechen oder Implementierungsfehler finden.
Bitimage-Puzzles – Bitcoin-Adressen, die aus beliebigen Dateien abgeleitet werden, indem SHA256(Base64(Datei)) als BIP39-Entropie verwendet wird.
| Puzzle | Passphrase | Status | Preis |
|---|---|---|---|
| kitten | Nein | ✅ Gelöst (09.07.2019) | 0,00095 BTC |
| kitten_passphrase | Ja | ⏳ Ungelöst | ~0,01 BTC |
Beide Puzzles verwenden dieselbe Quelldatei (Antonopoulos-Kätzchen-Tweet). Das Passphrasen-Puzzle erfordert eine unbekannte BIP39-Passphrase.
Keybase-WarpWallet-Herausforderungen – Brainwallet-Herausforderungen, die veröffentlicht wurden, um zu zeigen, wie schnell schwache WarpWallet-Passphrasen geknackt werden.
| Status | Anzahl |
|---|---|
| Gelöst | 4 |
| Abgelaufen | 2 |
Enthält die ursprünglichen vier Herausforderungen vom November 2013 plus zwei spätere WarpWallet-spezifische Herausforderungsrunden, die nach Ablauf von Keybase zurückgefordert wurden.
Alle Puzzle-Daten werden zur Kompilierzeit aus JSONC-Dateien in data/ eingebettet.
Jedes Puzzle umfasst: Adresse (mit HASH160 und Typ), Chain, Status, Preis, öffentlichen Schlüssel (falls offengelegt), privaten Schlüssel (falls gelöst), Schlüsselquelle, Lösungsdatum (falls gelöst), Lösungszeit, Startdatum (bei Finanzierung), Transaktionshistorie, Informationen zum Löser sowie Assets (Puzzle-Bilder, Hinweise).
Visuelle Puzzle-Sammlungen (zden, gsmg, bitimage) enthalten eingebettete Assets im Verzeichnis assets/:
assets/
├── zden/ # 15 puzzle images
├── gsmg/ # puzzle.png, follow_the_white_rabbit.png
└── bitimage/ # kitten images
Zugriff über die Bibliothek:
let puzzle = zden::get("level_4").unwrap();
println!("{}", puzzle.asset_path().unwrap()); // assets/zden/level_4/puzzle.png
println!("{}", puzzle.asset_url().unwrap()); // https://raw.githubusercontent.com/...
Dieses Projekt enthält Agent Skills, die KI-Codierungsagenten den Umgang mit boha beibringen.
Kuratiert vom Projektautor:
npx skills add oritwoen/boha
| Skill | Beschreibung |
|---|---|
boha | Rust-Bibliotheks-API zum Abfragen von Krypto-Puzzle- und Bounty-Daten über sechs Blockchains |
boha-cli | CLI zum Durchsuchen, Suchen, Verifizieren und Exportieren von Puzzle-Daten |
Automatisch generiert aus Live-Dokumentationen, Issues und Releases mithilfe von skilld:
npx skilld add boha
MIT
| Format | Flag | Beschreibung |
|---|
table | -o table | TUI-Tabelle mit Farben (Standard) |
json | -o json | Schön formatierter JSON |
jsonl | -o jsonl | JSON Lines (ein Objekt pro Zeile) |
yaml | -o yaml | YAML |
csv | -o csv | CSV mit Kopfzeile |
| Puzzle | Hash | Status | Preis |
|---|
| sha1 | SHA-1 | ✅ Beansprucht (23.02.2017) | 2,48 BTC |
| sha256 | SHA-256 | ⏳ Ungelöst | 0,277 BTC |
| ripemd160 | RIPEMD-160 | ⏳ Ungelöst | 0,116 BTC |
| hash160 | HASH160 | ⏳ Ungelöst | 0,100 BTC |
| hash256 | HASH256 | ⏳ Ungelöst | 0,100 BTC |
| op_abs | OP_ABS | ✅ Beansprucht (13.09.2013) | – |
| Chain | Gelöst | Ungelöst | Gesamt |
|---|
| Bitcoin | 9 | 2 | 11 |
| Ethereum | 2 | 0 | 2 |
| Litecoin | 1 | 0 | 1 |
| Decred | 1 | 0 | 1 |
| Tool | Beschreibung |
|---|
| vuke | Forschungstool zur Untersuchung anfälliger Bitcoin-Schlüsselerzeugungspraktiken. Analysiert gelöste Puzzles auf schwache Muster. |
| vgen | Generator für Bitcoin-Vanity-Adressen mit Regex-Musterabgleich und GPU-Beschleunigung. |
| vusi | Analyse von ECDSA-Signaturschwachstellen – Nonce-Wiederverwendung, Polynonce, verzerrte Nonces, Gitter-/HNP-Angriffe. |
| kangaroo | Pollard-Känguru-ECDLP-Löser für secp256k1 mit Vulkan/Metal/DX12-Compute. |