Rand Wallet لنظام Android
تطبيق Java أصلي فوق نواة المحفظة المشتركة المكتوبة بلغة Rust، تُحمَّل بوصفها مكتبة أصلية. المفتاح الإنفاق مشفَّر بمفتاح يحتفظ به Android Keystore، والنسخ الاحتياطي معطّل، ولا تتحدث نسخ الإصدار إلا عبر HTTPS.
إدراج Google Play قيد الانتظار. إلى أن يجتاز المراجعة، ثبّت الإصدار 0.8.0 من التنزيل أدناه، أو ابنِه من المصدر.
- مبني باستخدام
- Java
- يُوزَّع عبر
- Google Play، بدءًا بالاختبار المفتوح
- المتطلبات
- Android 8 (API 26) أو أحدث، arm64 أو x86_64
- الإرسال
- يُنشئ الإثبات على الهاتف، أو عبر مُثبِت RandProtocol
الإصدار 0.8.0
الملفات مرفقة بـإصدار v0.8.0 على GitHub؛ والأزرار هنا روابط إليها، ولا يُقدَّم شيء من هذا الموقع.
- افتح الملف على الهاتف واسمح بالتثبيت عندما يطلب Android ذلك، أو شغّل adb install عليه من حاسوب.
- الحزمة موقّعة بمفتاح هذا المشروع نفسه. وللتحقق منها يجب أن يطبع apksigner verify --print-certs القيمة SHA-256 75:22:2E:BF:22:D3:95:80:A5:11:2A:AC:B7:EC:2E:03:93:91:07:77:96:E0:45:1D:7B:CF:E3:7E:FA:06:53:52.
- يوقّع Google Play بمفتاحه الخاص، فعندما تصبح القائمة متاحة سيطلب منك Android إزالة هذه النسخة قبل تثبيت تلك. صدّر ملف مفتاحك من الإعدادات أولًا.
# باستخدام SHA256SUMS المنزَّل في المجلد نفسه الذي يوجد فيه الملف
shasum -a 256 -c SHA256SUMS --ignore-missing # macOS
sha256sum -c SHA256SUMS --ignore-missing # Linux
# أو اطبع المجموع الاختباري لملف واحد وقارنه بالقيمة الموضحة أعلاه
shasum -a 256 rand-wallet-0.8.0-android.apk المجموع الاختباري المطابق يعني أن الملف هو الذي نُشر. ولا يعني أن الملف بُني من المصدر: فالإصدارات المبنية غير قابلة لإعادة الإنتاج بت لبت حتى الآن، لذا إن كان هذا ما تريد معرفته، فـابنِه بنفسك.
يُنشئ الإثبات على الهاتف، أو عبر مُثبِت RandProtocol
على هاتف تبلغ ذاكرته نحو 8 GB يُنشئ التطبيق إثبات التحويل على الجهاز نفسه، في خدمة تعمل في المقدمة مع إشعار أثناء تشغيلها، فلا يوقفها التنقل بين التطبيقات.
يبلغ ذروة استهلاك إثبات الحزمة نحو 6.2 GB. وعلى هاتف ذاكرته أقل سيوقف Android التطبيق في منتصف الإثبات، لذا تُحذّرك خطوة المراجعة بأرقام جهازك نفسه. عندئذٍ يستخدم الهاتف مُثبِت RandProtocol افتراضيًا، أو rand-prover الخاص بك عبر https (الإعدادات ← المُثبِت)، ويبني التحويل بينما يُنشئ المُثبِت الإثبات.
الجهاز الذي لا يستطيع إنشاء إثبات يستخدم مُثبِتات RandProtocol افتراضيًا: عدة أجهزة يشغّلها المدقّقون (أربعة حاليًا، تحت https://prover.randprotocol.org)، دون رسوم. ابتداءً من 0.6.9 يملك كلٌّ منها مفتاحه الخاص الذي تثبّته المحفظة، وتُبلغك المحفظة بذلك قبل أول عملية إرسال. يتلقى الجهاز الذي يُنشئ إثبات عملية الإرسال مفتاح العرض الخاص بالمحفظة وملحًا يُستخدم مرة واحدة: يستطيع مشغّله قراءة سجل المحفظة كاملًا، أي كل دفعة مستلمة ومُرسلة، ولا يستطيع الإنفاق. أما مفتاح الإنفاق فلا يغادر جهازك أبدًا، وهو الذي يُنشئ بنفسه إثبات التفويض الصغير. وللمزيد من الخصوصية اختر مُثبِتك الخاص في الإعدادات ← المُثبِت، ليكون عندئذٍ المفضّل دائمًا؛ وتتحقق المحفظة من كل إثبات قبل أن ترسله.
إقران مُثبِت (prover) خطوة بخطوة: docs/prover.md.
أين يقيم المفتاح
مفتاح الإنفاق هو السر الوحيد للمحفظة. لا يوجد حساب ولا خادم يحتفظ بنسخة: إن فقدت المفتاح فلن يستطيع أحد استعادته، فاحفظه عندما تعرضه المحفظة عليك.
المبادلة داخل التطبيق
ابتداءً من 0.7.1 صار في تطبيقات الهاتف شاشة المبادلة (Swap) الموجودة في الإضافات وتطبيق سطح المكتب: تداوَل RAND والرموز عبر مجمّعات durian.market دون مغادرة المحفظة. يُنشئ الهاتف بنفسه إثبات استدعاء البرنامج وتفويض الإنفاق، وهذا يحتاج إلى نحو 1.5 GB من الذاكرة، بينما تُنشئ مُثبِتات RandProtocol الإثبات الكبير. المبلغ الذي تتلقاه دقيق؛ وإذا تحرّك المجمّع أولًا فلا يُرسل شيء وتحصل على عرض سعر جديد.
أو ابنِه بنفسك
- ابنِ APK لأغراض التنقيح من مستودع clients وثبّته باستخدام adb، على هاتف أو على محاكٍ بمعمارية arm64 أو x86_64 (API 36).
- من المحاكي، يكون عنوان عقدة على حاسوبك هو http://10.0.2.2:8545؛ وتسمح نسخ التنقيح بالنص الصريح إلى هذا العنوان وإلى localhost فقط.
سلسلة الأدوات: Rust 1.98.1، مثبّتة في المستودع، ويثبّتها rustup. دليل البناء يغطي كل عميل انطلاقًا من جهاز نظيف. أدلة المصدر: android/, core/.
git clone --recurse-submodules https://github.com/randprotocol/clients.git && cd clients
git checkout v0.8.0 && git submodule update --init # الإصدار الرسمي؛ core/vendor/fullnode @ v0.8.0 (c0878c3)
core/scripts/build-android.sh # → android/app/src/main/jniLibs/ (JDK 17, SDK 36, NDK 27)
cd android && ./gradlew assembleDebug # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk ما يفعله، على كل منصة
- إنشاء محفظة
- مفتاح إنفاق يُولَّد على الجهاز ويُعرض مرة واحدة لتحفظه، وعنوان rand1… المشتق منه. استورد مفتاحًا موجودًا، أو ملف wallet.key.json من واجهة rand CLI؛ فكل عميل يصدّر الملف نفسه.
- الاستلام والإرسال
- رصيدك هو مجموعة الملاحظات (notes) التي لا يفتحها سوى مفتاحك؛ وتمسح المحفظة شجرة الالتزامات لتجدها. والتحويل بعملة RAND أو بأي رمز RPL مدرج هو حزمة واحدة بأربعة مدخلات وأربعة مخرجات يخوّلها إثبات. لا أحد يعرف المرسل ولا المستلم ولا المبلغ ولا الأصل الذي انتقل.
- الحنفية (Faucet)
- على testnet ذات حنفية مفتوحة، تُصدر نقرة واحدة 100 RAND في ملاحظة (note) لا يفتحها سواك.
- اكشف ما تختاره فقط
- انسخ مفتاح العرض الخاص بك وافتح My history في RandScan لترى كل ملاحظة (note) أرسلتها أو استلمتها، أو انسخ مفتاح معاملة دفعة واحدة لتكشف تلك الدفعة بالذات ولا شيء غيرها. يفك المستكشف التشفير في متصفحك ولا يرسل المفتاح إلى أي مكان.
تُفتح مفاتيح العرض ومفاتيح المعاملات على randscan.org.
قبل أن ترسل أي شيء
- السلسلة
- تخدم نقطة النهاية العامة السلسلة 21، وهي تعمل منذ 12 Oct 2026 10:31 UTC (قُطعت على fullnode v0.8.0). تضمّن نواة المحفظة fullnode v0.8.0 (c0878c3) وترفض أي سلسلة أخرى: تعمل السلسلة 21 بمجموعة القيود 9، ولذلك لا تستطيع محفظة 0.7.x الإرسال عليها، ولا يستطيع هذا الإصدار الإرسال على السلسلة 20. تنتقل المفاتيح والعناوين كما هي؛ وتعرض المحفظة التي فحصت السلسلة 20 لافتة «سلسلة مختلفة» مرة واحدة ثم تعيد الفحص من كتلة التكوين الأولى للسلسلة 21. تحتفظ إيداعات الجسر وسحوباته برسم قدره 0.1% بعملة zUSD، وتعرضه المحفظة قبل أن تسحب.
- نقطة نهاية RPC
- Settings → Network. القيمة الافتراضية https://rpc.randprotocol.org؛ ويصلح أي RPC لـ rand-node تستطيع الوصول إليه، ويُفحص العنوان المحفوظ قبل اعتماده
- الإثبات
- يبلغ استهلاك إثبات الحزمة ذروته عند نحو 6.2 GB من الذاكرة، ويستغرق نحو دقيقة على معالج حاسوب محمول
- الحالة
- برمجيات testnet تجريبية. لم تخضع للتدقيق. لا قيمة حقيقية لعملة RAND على testnet
- الترخيص
- GPL-3.0-only، مثل حزم العقدة الكاملة التي يرتبط بها كل عميل
محفظة واحدة، كل منصة
ملف المفتاح نفسه وصيغة العنوان نفسها والقواعد نفسها في كل مكان: المحفظة المنشأة هنا تُستورد إلى أي عميل آخر وإلى واجهة سطر الأوامر rand.