oritwoen/boha

GitHub: oritwoen/boha

一个用 Rust 编写的加密货币谜题数据库,聚合了 Bitcoin Puzzle、哈希碰撞赏金、视觉密码挑战等多个知名谜题集合的完整数据。

Stars: 9 | Forks: 5

# boha [![Crates.io](https://img.shields.io/crates/v/boha?style=flat&colorA=130f40&colorB=474787)](https://crates.io/crates/boha) [![Downloads](https://img.shields.io/crates/d/boha?style=flat&colorA=130f40&colorB=474787)](https://crates.io/crates/boha) [![License](https://img.shields.io/crates/l/boha?style=flat&colorA=130f40&colorB=474787)](LICENSE) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/oritwoen/boha) 加密货币赏金、谜题和挑战数据库。 ## 安装说明 ### CLI Arch Linux (AUR): ``` paru -S boha ``` 通过 crates.io: ``` cargo install boha --features cli,balance ``` ### 库 ``` [dependencies] boha = "0.16" ``` 带余额获取功能: ``` [dependencies] boha = { version = "0.16", 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 range 90 # 检查余额 (需要 --features balance) boha balance b1000/71 # 验证私钥派生正确地址 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。请使用 `list` 命令输出 CSV/YAML。 ### 库 ``` use boha::{b1000, bitaps, gsmg, hash_collision, 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 sha256 = hash_collision::get("sha256").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("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); } ``` ### 余额获取 (async) ``` use boha::{b1000, balance}; #[tokio::main] async fn main() { let puzzle = b1000::get(71).unwrap(); let bal = balance::fetch(puzzle.address.value).await.unwrap(); println!("Confirmed: {} sats", bal.confirmed); println!("Total: {:.8} BTC", bal.total_btc()); } ``` ## 功能特性 | 特性 | 描述 | |---------|-------------| | `cli` | 命令行界面 | | `balance` | 通过 mempool.space API 获取区块链余额 | ## 集合 ### b1000 [Bitcoin Puzzle Transaction](https://privatekeys.pw/puzzles/bitcoin-puzzle-tx) - 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](https://gsmg.io/puzzle) - 多阶段密码学挑战,只有一个 Bitcoin 地址。 | 地址 | 状态 | 奖金 | |---------|--------|-------| | 1GSMG1JC9wtdSwfwApgj2xcmJPAwx7prBe | 未解决 | ~1.25 BTC | 最初为 5 BTC,奖金随每次 Bitcoin 减半而减半。 ### hash_collision [Peter Todd's hash collision bounties](https://bitcointalk.org/index.php?topic=293382.0) - 通过发现哈希碰撞即可认领的 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's Visual Crypto Puzzles](https://crypto.haluska.sk/) - 艺术谜题,私钥编码在图像、动画和视觉图案中。 | 链 | 已解决 | 未解决 | 总计 | |-------|--------|----------|-------| | Bitcoin | 9 | 2 | 11 | | Ethereum | 2 | 0 | 2 | | Litecoin | 1 | 0 | 1 | | Decred | 1 | 0 | 1 | **未解决:** Level 5, Level HALV ### bitaps [Bitaps Mnemonic Challenge](https://bitaps.com/mnemonic/challenge) - Shamir Secret Sharing Scheme (SSSS) 谜题,原始的 12 个单词助记词使用 3-of-5 阈值被拆分为 5 个份额。 | 地址 | 状态 | 奖金 | |---------|--------|-------| | bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6 | 未解决 | ~1.0 BTC | 三个必需份额中有两个已公开。目标:破解 SSSS 方案或查找实现漏洞。 ### bitimage [Bitimage](https://github.com/coreyphillips/bitimage) 谜题 - 使用 SHA256(Base64(file)) 作为 BIP39 熵,从任意文件派生的 Bitcoin 地址。 | 谜题 | 密码短语 | 状态 | 奖金 | |--------|------------|--------|-------| | kitten | 无 | ✅ 已解决 (2019-07-09) | 0.00095 BTC | | kitten_passphrase | 有 | ⏳ 未解决 | ~0.01 BTC | 这两个谜题使用相同的源文件(Antonopoulos 小猫推文)。密码短语谜题需要一个未知的 BIP39 密码短语。 ## 数据 所有谜题数据在编译时从 `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/... ``` ## 相关工具 | 工具 | 描述 | |------|-------------| | [vuke](https://github.com/oritwoen/vuke) | 研究工具,用于研究脆弱的 Bitcoin 密钥生成实践。分析已解决的谜题以寻找弱模式。 | | [vgen](https://github.com/oritwoen/vgen) | Bitcoin 助记符地址生成器,支持正则表达式模式匹配和 GPU 加速。 | ## 许可证 MIT
标签:Arch Linux, Crates.io, CSV, JSON, Rust库, YAML, 余额查询, 加密货币, 加密资产, 区块链, 可视化界面, 安全库, 密码学, 密码学挑战, 手动系统调用, 数据导出, 文档结构分析, 比特币谜题, 私钥验证, 网络空间测绘, 谜题, 赏金任务, 通知系统, 通知系统, 通知系统