
크립토 바운티, 퍼즐 및 챌린지 데이터 라이브러리
암호화폐 현상금, 퍼즐 및 챌린지 데이터 라이브러리.
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만 지원합니다. 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();
// 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 - 각 퍼즐 N이 [2^(N-1), 2^N - 1] 범위의 개인 키를 갖는 256개의 퍼즐.
해결됨 (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 - 단일 비트코인 주소를 사용하는 다단계 암호화 챌린지.
| 주소 | 상태 | 상금 |
|---|---|---|
| 1GSMG1JC9wtdSwfwApgj2xcmJPAwx7prBe | 미해결 | ~1.25 BTC |
원래 5 BTC였으며, 비트코인 반감기마다 상금이 절반으로 줄어듭니다.
Peter Todd의 해시 충돌 현상금 - 해시 충돌을 찾아 청구할 수 있는 P2SH 주소.
Zden의 시각적 암호화 퍼즐 - 개인 키가 이미지, 애니메이션 및 시각적 패턴에 인코딩된 예술적 퍼즐.
미해결: Level 5, Level HALV
Tiamat의 Arweave 현상금 - Tiamat(chronobot.io)이 만든 Arweave 블록체인의 암호화 퍼즐.
| 상태 | 개수 |
|---|---|
| 청구됨 | 7 |
| 미해결 | 4 |
Bobby Lee의 Ballet 암호화 퍼즐 - BIP38로 암호화된 개인 키가 있는 실물 비트코인 지폐(Ballet 지갑). 카드에 인쇄된 암호를 크래킹하여 해결합니다.
| 상태 | 개수 |
|---|---|
| 해결됨 | 1 |
| 미해결 | 2 |
Bitaps 니모닉 챌린지 - 원래 12단어 니모닉이 3-of-5 임계값을 사용하여 5개의 몫으로 분할된 Shamir Secret Sharing Scheme(SSSS) 퍼즐.
| 주소 | 상태 | 상금 |
|---|---|---|
| bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6 | 미해결 | ~1.0 BTC |
필요한 3개의 몫 중 2개가 공개되어 있습니다. 목표: SSSS 방식을 깨거나 구현 버그를 찾는 것입니다.
Bitimage 퍼즐 - SHA256(Base64(파일))을 BIP39 엔트로피로 사용하여 임의의 파일에서 파생된 비트코인 주소.
| 퍼즐 | 암호 | 상태 | 상금 |
|---|---|---|---|
| kitten | 없음 | ✅ 해결됨 (2019-07-09) | 0.00095 BTC |
| kitten_passphrase | 있음 | ⏳ 미해결 | ~0.01 BTC |
두 퍼즐 모두 동일한 소스 파일(Antonopoulos의 고양이 트윗)을 사용합니다. 암호 퍼즐은 알 수 없는 BIP39 암호가 필요합니다.
Keybase WarpWallet 챌린지 - 취약한 WarpWallet 암호가 얼마나 빨리 크래킹되는지 보여주기 위해 공개된 Brainwallet 챌린지.
| 상태 | 개수 |
|---|---|
| 해결됨 | 4 |
| 만료됨 | 2 |
2013년 11월의 원래 4개 챌린지와 만료 후 Keybase가 회수한 이후의 2개 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 | 6개 블록체인의 암호화폐 퍼즐 및 현상금 데이터를 조회하기 위한 Rust 라이브러리 API |
boha-cli | 퍼즐 데이터를 탐색, 검색, 검증 및 내보내기 위한 CLI |
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 | 취약한 비트코인 키 생성 관행을 연구하기 위한 조사 도구. 해결된 퍼즐에서 약한 패턴을 분석합니다. |
| vgen | 정규식 패턴 매칭과 GPU 가속을 지원하는 비트코인 배니티 주소 생성기. |
| vusi | ECDSA 서명 취약점 분석 - nonce 재사용, polynonce, 편향된 nonce, lattice/HNP 공격. |
| kangaroo | Vulkan/Metal/DX12 컴퓨트를 사용하는 secp256k1용 Pollard's Kangaroo ECDLP 해석기. |