
boha v0.19.0
加密赏金、谜题与挑战数据资料库
boha
加密赏金、谜题和挑战数据资料库。
安装
CLI
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"] }
用法
CLI
# 统计
boha stats
# 列出谜题
boha list
boha list b1000
boha list b1000 --unsolved
boha list b1000 --with-pubkey
# 显示谜题详情
boha show b1000/90
boha show gsmg
boha show hash_collision/sha256
# 显示谜题并在浏览器中打开资产
boha show zden/level_4 --open
# 显示合集作者
boha author b1000
boha author zden
# 获取密钥范围
boha range 90
# 检查余额(需要 --features balance)
boha balance b1000/71
# 按 ID、地址、链或货币搜索谜题
boha search sha256
boha search kitten --collection bitimage
# 验证私钥是否派生正确的地址
boha verify b1000/66
boha verify --all
boha verify --all --quiet; echo $?
# 导出完整数据库(仅 JSON/JSONL)
boha export
boha export b1000 zden
boha export --unsolved
boha export -o jsonl | jq .
boha export --compact
# 输出格式(默认: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 .
输出格式
| 格式 | 标志 | 描述 |
|---|---|---|
table | -o table | 带颜色的 TUI 表格(默认) |
json | -o json | 格式化输出的 JSON |
jsonl | -o jsonl | JSON Lines(每行一个对象) |
yaml | -o yaml | YAML |
csv | -o csv | 带表头的 CSV |
注意:export 命令仅支持 JSON 和 JSONL。如需 CSV/YAML 输出,请使用 list 命令。
库
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();
// 访问谜题资产(图片、提示)
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) |
合集
b1000
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
GSMG.IO 5 BTC Puzzle - 多阶段加密挑战,使用单个比特币地址。
| 地址 | 状态 | 奖金 |
|---|---|---|
| 1GSMG1JC9wtdSwfwApgj2xcmJPAwx7prBe | 未解决 | ~1.25 BTC |
最初为 5 BTC,奖金随每次比特币减半而减半。
hash_collision
Peter Todd 的哈希碰撞赏金 - 可通过找到哈希碰撞来领取的 P2SH 地址。
| 谜题 | 哈希 | 状态 | 奖金 |
|---|---|---|---|
| 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) | - |
zden
Zden 的视觉加密谜题 - 艺术谜题,私钥被编码在图像、动画和视觉图案中。
| 链 | 已解决 | 未解决 | 总计 |
|---|---|---|---|
| Bitcoin | 9 | 2 | 11 |
| Ethereum | 2 | 0 | 2 |
| Litecoin | 1 | 0 | 1 |
| Decred | 1 | 0 | 1 |
**未解决:**Level 5、Level HALV
arweave
Tiamat 的 Arweave 赏金 - Arweave 区块链上的加密谜题,由 Tiamat(chronobot.io)创建。
| 状态 | 数量 |
|---|---|
| 已领取 | 7 |
| 未解决 | 4 |
ballet
Bobby Lee 的 Ballet 加密谜题 - 具有 BIP38 加密私钥的实体比特币票据(Ballet 钱包)。通过破解印在卡片上的密码短语来解决。
| 状态 | 数量 |
|---|---|
| 已解决 | 1 |
| 未解决 | 2 |
bitaps
Bitaps 助记词挑战 - Shamir 秘密共享方案(SSSS)谜题,原始 12 词助记词被拆分为 5 份份额,阈值为 3-of-5。
| 地址 | 状态 | 奖金 |
|---|---|---|
| bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6 | 未解决 | ~1.0 BTC |
所需的三份份额中已公布两份。目标:破解 SSSS 方案或找到实现漏洞。
bitimage
Bitimage 谜题 - 使用 SHA256(Base64(file)) 作为 BIP39 熵,从任意文件派生的比特币地址。
| 谜题 | 密码短语 | 状态 | 奖金 |
|---|---|---|---|
| kitten | 无 | ✅ 已解决(2019-07-09) | 0.00095 BTC |
| kitten_passphrase | 是 | ⏳ 未解决 | ~0.01 BTC |
两个谜题使用相同的源文件(Antonopoulos 的猫咪推文)。带密码短语的谜题需要一个未知的 BIP39 密码短语。
warp
Keybase WarpWallet 挑战 - 发布的脑钱包挑战,用于展示弱 WarpWallet 密码短语被破解的速度有多快。
| 状态 | 数量 |
|---|---|
| 已解决 | 4 |
| 已过期 | 2 |
包括 2013 年 11 月的原始四个挑战,以及过期后由 Keybase 回收的两轮 WarpWallet 专属挑战。
数据
所有谜题数据在编译时从 data/ 目录中的 JSONC 文件嵌入。
每个谜题包含:地址(含 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/...
智能体技能
本项目包含 智能体技能,用于教会 AI 编码智能体如何使用 boha。
静态技能
由项目作者精选:
npx skills add oritwoen/boha
| 技能 | 描述 |
|---|---|
boha | 用于查询六个区块链上的加密谜题和赏金数据的 Rust 库 API |
boha-cli | 用于浏览、搜索、验证和导出谜题数据的 CLI |
动态技能
使用 skilld 从实时文档、issue 和 release 自动生成:
npx skilld add boha
相关工具
| 工具 | 描述 |
|---|---|
| vuke | 用于研究有漏洞的比特币密钥生成实践的研究工具。分析已解决谜题中的弱模式。 |
| vgen | 具有正则表达式模式匹配和 GPU 加速的比特币靓号地址生成器。 |
| vusi | ECDSA 签名漏洞分析 - nonce 重用、polynonce、偏差 nonce、格/HNP 攻击。 |
| kangaroo | 使用 Vulkan/Metal/DX12 计算、面向 secp256k1 的 Pollard's Kangaroo ECDLP 求解器。 |
许可证
MIT