
مكتبة بيانات المكافآت والألغاز والتحديات المتعلقة بالتشفير
مكتبة بيانات للمكافآت والألغاز والتحديات المتعلقة بالعملات المشفرة.
آرتش لينكس (AUR):
paru -S boha
من crates.io:
cargo install boha --features cli,balance
[dependencies]
boha = "0.19"
مع جلب الرصيد:
[dependencies]
boha = { version = "0.19", features = ["balance"] }
# إحصائيات
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
# البحث عن الألغاز بالمعرف أو العنوان أو الشبكة أو العملة
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
# صيغ الإخراج (الافتراضي: جدول)
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) |
معاملة لغز البيتكوين - 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 - تحدٍّ تشفيري متعدد المراحل بعنوان بيتكوين واحد.
| العنوان | الحالة | الجائزة |
|---|---|---|
| 1GSMG1JC9wtdSwfwApgj2xcmJPAwx7prBe | غير محلول | ~1.25 BTC |
كانت في الأصل 5 BTC، وتنخفض الجائزة مع كل تنصيف بيتكوين.
مكافآت تصادم التجزئة لبيتر تود - عناوين P2SH يمكن المطالبة بها عبر إيجاد تصادمات تجزئة.
ألغاز زدن البصرية المشفرة - ألغاز فنية تُشفَّر فيها المفاتيح الخاصة داخل صور ورسوم متحركة وأنماط بصرية.
غير محلول: المستوى 5، المستوى HALV
مكافآت تيامات على Arweave - ألغاز تشفيرية على بلوكتشين Arweave، من إنشاء تيامات (chronobot.io).
| الحالة | العدد |
|---|---|
| تمت المطالبة | 7 |
| غير محلول | 4 |
ألغاز بوبي لي المشفرة Ballet - أوراق بيتكوين مادية (محافظ Ballet) بمفاتيح خاصة مشفرة عبر BIP38. الحل يكون بكسر عبارة المرور المطبوعة على البطاقة.
| الحالة | العدد |
|---|---|
| محلول | 1 |
| غير محلول | 2 |
تحدي Bitaps لعبارة الاسترجاع - لغز مخطط مشاركة السر Shamir (SSSS) حيث تم تقسيم عبارة الاسترجاع الأصلية المكوّنة من 12 كلمة إلى 5 أسهم باستخدام عتبة 3-من-5.
| العنوان | الحالة | الجائزة |
|---|---|---|
| bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6 | غير محلول | ~1.0 BTC |
تم نشر سهمين من الأسهم الثلاثة المطلوبة. الهدف: كسر مخطط SSSS أو إيجاد أخطاء في التنفيذ.
ألغاز Bitimage - عناوين بيتكوين مشتقة من ملفات عشوائية باستخدام SHA256(Base64(file)) كإنتروبيا BIP39.
| اللغز | عبارة المرور | الحالة | الجائزة |
|---|---|---|---|
| kitten | لا | ✅ محلول (2019-07-09) | 0.00095 BTC |
| kitten_passphrase | نعم | ⏳ غير محلول | ~0.01 BTC |
يستخدم كلا اللغزين نفس الملف المصدر (تغريدة قط أنتونوبولوس). لغز عبارة المرور يتطلب عبارة مرور BIP39 غير معروفة.
تحديات Keybase WarpWallet - تحديات محفظة عقلية نُشرت لإظهار مدى سرعة كسر عبارات مرور 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 للاستعلام عن بيانات ألغاز ومكافآت العملات المشفرة عبر ست بلوكتشينات |
boha-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، وnonces متحيزة، وهجمات lattice/HNP. |
| kangaroo | حلال Pollard's Kangaroo لـ ECDLP على secp256k1 باستخدام Vulkan/Metal/DX12 compute. |