
Библиотека данных крипто-баунти, головоломок и заданий
Библиотека данных о крипто-наградах, головоломках и задачах.
Arch Linux (AUR):
paru -S boha
Из crates.io:
cargo install boha --features cli,balance
[dependencies]
boha = "0.19"
С получением баланса:
[dependencies]
boha = { version = "0.19", features = ["balance"] }
# Statistics
boha stats
# List puzzles
boha list
boha list b1000
boha list b1000 --unsolved
boha list b1000 --with-pubkey
# Show puzzle details
boha show b1000/90
boha show gsmg
boha show hash_collision/sha256
# Show puzzle and open asset in browser
boha show zden/level_4 --open
# Show collection author
boha author b1000
boha author zden
# Get key range
boha range 90
# Check balance (requires --features balance)
boha balance b1000/71
# Search puzzles by ID, address, chain, or currency
boha search sha256
boha search kitten --collection bitimage
# Verify private key derives correct address
boha verify b1000/66
boha verify --all
boha verify --all --quiet; echo $?
# Export full database (JSON/JSONL only)
boha export
boha export b1000 zden
boha export --unsolved
boha export -o jsonl | jq .
boha export --compact
# Output formats (default: table)
boha -o json stats
boha -o yaml show b1000/90
boha -o csv list b1000 > puzzles.csv
boha -o jsonl list b1000 --unsolved | jq .
Примечание: команда export поддерживает только JSON и JSONL. Используйте команду list для вывода в CSV/YAML.
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();
// Access puzzle assets (images, hints)
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());
}
| Возможность | Описание |
|---|---|
cli | Интерфейс командной строки |
balance | Получение баланса в блокчейне (BTC через mempool.space, LTC через litecoinspace.org, ETH через Etherscan, DCR через dcrdata, AR через arweave.net) |
Bitcoin Puzzle Transaction — 256 головоломок, где для каждой головоломки N приватный ключ находится в диапазоне [2^(N-1), 2^N - 1].
Решённые (82): 1-70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130
Нерешённые с открытым ключом (6): 135, 140, 145, 150, 155, 160
Нерешённые (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
Пустые — без средств (96): 161-256
GSMG.IO 5 BTC Puzzle — многоэтапная криптографическая задача с одним Bitcoin-адресом.
| Адрес | Статус | Приз |
|---|---|---|
| 1GSMG1JC9wtdSwfwApgj2xcmJPAwx7prBe | Не решена | ~1.25 BTC |
Изначально — 5 BTC, приз уменьшается вдвое с каждым халвингом Bitcoin.
Награды Питера Тодда за коллизии хешей — P2SH-адреса, которые можно забрать, найдя коллизии хешей.
Визуальные крипто-головоломки Zden — художественные головоломки, в которых приватные ключи закодированы в изображениях, анимациях и визуальных узорах.
Не решено: Level 5, Level HALV
Награды Tiamat на Arweave — криптографические головоломки в блокчейне Arweave, созданные Tiamat (chronobot.io).
| Статус | Кол-во |
|---|---|
| Решено | 7 |
| Не решено | 4 |
Крипто-головоломки Ballet Бобби Ли — физические Bitcoin-банкноты (кошельки Ballet) с приватными ключами, зашифрованными по BIP38. Для решения необходимо взломать парольную фразу, напечатанную на карте.
| Статус | Кол-во |
|---|---|
| Решено | 1 |
| Не решено | 2 |
Bitaps Mnemonic Challenge — головоломка на основе схемы разделения секрета Шамира (SSSS), в которой исходная мнемоническая фраза из 12 слов была разделена на 5 частей с порогом «3 из 5».
| Адрес | Статус | Приз |
|---|---|---|
| bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6 | Не решена | ~1.0 BTC |
Опубликованы две из трёх необходимых частей. Цель: взломать схему SSSS или найти ошибки реализации.
Головоломки Bitimage — Bitcoin-адреса, получаемые из произвольных файлов с использованием SHA256(Base64(file)) в качестве энтропии BIP39.
| Головоломка | Парольная фраза | Статус | Приз |
|---|---|---|---|
| kitten | Нет | ✅ Решена (2019-07-09) | 0.00095 BTC |
| kitten_passphrase | Да | ⏳ Не решена | ~0.01 BTC |
Обе головоломки используют один и тот же исходный файл (твит Антонопулоса с котёнком). Головоломка с парольной фразой требует неизвестную BIP39-парольную фразу.
Задачи Keybase WarpWallet — задачи на brainwallet, опубликованные, чтобы показать, как быстро взламываются слабые парольные фразы WarpWallet.
| Статус | Кол-во |
|---|---|
| Решено | 4 |
| Истекло | 2 |
Включает четыре исходные задачи ноября 2013 года, а также два более поздних раунда задач, специфичных для WarpWallet, возвращённых Keybase после истечения срока.
Все данные о головоломках встраиваются во время компиляции из JSONC-файлов в каталоге data/.
Каждая головоломка включает: адрес (с HASH160 и типом), блокчейн, статус, приз, открытый ключ (если раскрыт), приватный ключ (если решена), источник ключа, дату решения (если решена), время решения, дату начала (когда была профинансирована), историю транзакций, информацию о решившем и ресурсы (изображения головоломки, подсказки).
Визуальные коллекции головоломок (zden, gsmg, bitimage) содержат встроенные ресурсы в каталоге assets/:
assets/
├── zden/ # 15 puzzle images
├── gsmg/ # puzzle.png, follow_the_white_rabbit.png
└── bitimage/ # kitten images
Доступ через библиотеку:
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/...
Этот проект включает навыки агентов, которые обучают ИИ-агентов программирования работе с boha.
Подобраны автором проекта:
npx skills add oritwoen/boha
| Навык | Описание |
|---|---|
boha | Rust API библиотеки для запросов данных о крипто-головоломках и наградах в шести блокчейнах |
boha-cli | CLI для просмотра, поиска, проверки и экспорта данных о головоломках |
Автоматически генерируются из актуальной документации, issues и релизов с помощью skilld:
npx skilld add boha
MIT
| Формат | Флаг | Описание |
|---|
table | -o table | TUI-таблица с цветами (по умолчанию) |
json | -o json | Красиво отформатированный JSON |
jsonl | -o jsonl | JSON Lines (по одному объекту в строке) |
yaml | -o yaml | YAML |
csv | -o csv | CSV с заголовком |
| Головоломка | Хеш | Статус | Приз |
|---|
| sha1 | SHA-1 | ✅ Решена (2017-02-23) | 2.48 BTC |
| sha256 | SHA-256 | ⏳ Не решена | 0.277 BTC |
| ripemd160 | RIPEMD-160 | ⏳ Не решена | 0.116 BTC |
| hash160 | HASH160 | ⏳ Не решена | 0.100 BTC |
| hash256 | HASH256 | ⏳ Не решена | 0.100 BTC |
| op_abs | OP_ABS | ✅ Решена (2013-09-13) | - |
| Блокчейн | Решено | Не решено | Всего |
|---|
| Bitcoin | 9 | 2 | 11 |
| Ethereum | 2 | 0 | 2 |
| Litecoin | 1 | 0 | 1 |
| Decred | 1 | 0 | 1 |
| Инструмент | Описание |
|---|
| vuke | Исследовательский инструмент для изучения уязвимых практик генерации Bitcoin-ключей. Анализируйте решённые головоломки на предмет слабых паттернов. |
| vgen | Генератор ванити-адресов Bitcoin с сопоставлением regex-шаблонов и ускорением на GPU. |
| vusi | Анализ уязвимостей ECDSA-подписей — повторное использование nonce, polynonce, смещённые nonce, атаки lattice/HNP. |
| kangaroo | Решатель ECDLP «Кенгуру Полларда» для secp256k1 с использованием вычислений Vulkan/Metal/DX12. |