اسے خود کمپائل کریں
Rand Wallet کا ہر کلائنٹ ایک ہی عوامی ریپوزٹری، randprotocol/clients، سے GPL-3.0-only کے تحت بنایا جاتا ہے۔ شائع شدہ ڈاؤن لوڈز اسی صفحے پر درج کمانڈز سے بنتے ہیں اور کسی اور چیز سے نہیں، اس لیے آپ یہی پیکجز اپنی مشین پر بنا سکتے ہیں۔ ورژن 0.8.0 ٹیگ v0.8.0 ہے۔
کیا انسٹال کرنا ہے
صرف اس کلائنٹ کی قطاریں جو آپ چاہتے ہیں۔ کسی بھی کلائنٹ کا پہلا بلڈ پروور کو کمپائل کرتا ہے اور کئی منٹ لیتا ہے؛ اس کے بعد دوبارہ بلڈ جلد ہو جاتا ہے۔
1. سورس حاصل کریں
ریپوزٹری کو اس کے واحد سب ماڈیول سمیت کلون کریں، یعنی فل نوڈ، جس کا کوڈ ہی والیٹ کی کرپٹوگرافی ہے۔ بالکل وہی بنانے کے لیے جو شائع ہوا تھا، ریلیز ٹیگ چیک آؤٹ کریں، یا تازہ ترین کے لیے main پر رہیں۔ کسی GitHub اکاؤنٹ یا SSH کلید کی ضرورت نہیں۔
git clone --recurse-submodules https://github.com/randprotocol/clients.git
cd clients
git checkout v0.8.0 && git submodule update --init # ریلیز، نہ کہ main git کے بغیر: ریلیز سے rand-wallet-0.8.0-source.tar.gz ڈاؤن لوڈ کریں اور اسے کھولیں۔ اس میں سب ماڈیول شامل ہے، جسے GitHub کے اپنے “Source code” آرکائیوز چھوڑ دیتے ہیں۔
2. کور کی جانچ کریں (اختیاری)
کور وہ Rust لائبریری ہے جسے ہر کلائنٹ اپنے اندر لپیٹتا ہے۔ اس کے ٹیسٹ ایک حقیقی ثبوت بناتے ہیں اور اسے چین کے اپنے تصدیق کنندہ سے جانچتے ہیں، جس میں پہلی کمپائل کے بعد تقریباً ایک منٹ لگتا ہے۔
cd core && cargo test --release && cd .. 3. ڈیسک ٹاپ: Linux، Windows، macOS
ایک اسکرپٹ اسی آپریٹنگ سسٹم کے پیکجز بناتا ہے جس پر وہ چلتا ہے، انہی ناموں سے جو ریلیزز میں استعمال ہوتے ہیں۔ Linux پر: ایک AppImage، ایک .deb، ایک .rpm اور .tar.gz میں خالی بائنری۔ Windows پر، Git Bash سے: .msi اور -setup.exe۔ macOS پر: .dmg۔ ہر پلیٹ فارم صرف اپنے پیکجز بناتا ہے۔
cargo install tauri-cli --version "^2" --locked # ایک بار
scripts/release/build-desktop.sh # → dist/release/v<version>/
scripts/release/build-desktop.sh --target x86_64-apple-darwin # Intel کے لیے .dmg، Apple silicon والے Mac سے
cd desktop/src-tauri && cargo tauri dev # یا پیکجنگ کے بغیر بس اسے چلائیں پہلا بلڈ پروور کو کمپائل کرتا ہے اور کئی منٹ لیتا ہے۔
4. Chrome اور Firefox ایکسٹینشنز
کور کو WebAssembly میں کمپائل کیا جاتا ہے، پھر ہر براؤزر کا پیک اسکرپٹ فائلوں کو dist/ میں نقل کر کے انہیں zip کرتا ہے۔ نہ کوئی بنڈلر ہے نہ کوئی منیفائر: WebAssembly ماڈیول کے سوا، جو فائلیں آپ لوڈ کرتے ہیں وہی ریپوزٹری کی فائلیں ہیں۔
core/scripts/build-wasm.sh # → extension/shared/core/
chrome/pack.sh # → dist/chrome/ اور dist/rand-wallet-chrome-<version>.zip
firefox/pack.sh # → dist/firefox/ اور dist/rand-wallet-firefox-<version>.zip Chrome: chrome://extensions → Developer mode → Load unpacked → dist/chrome۔ Firefox: about:debugging → This Firefox → Load Temporary Add-on… → dist/firefox/manifest.json۔
5. Android
کور کو arm64 اور x86_64 کے لیے نیٹو لائبریری کے طور پر بنایا جاتا ہے، پھر Gradle اس کے گرد ایپ بناتا ہے۔ ڈیبگ بلڈ کسی بھی فون یا ایمولیٹر پر انسٹال ہو جاتا ہے؛ ریلیز بلڈ پر اس کلید سے دستخط ہوتے ہیں جو آپ خود بناتے ہیں۔
مزید برائے Android.
core/scripts/build-android.sh # → android/app/src/main/jniLibs/
cd android
echo "sdk.dir=$HOME/Android/Sdk" > local.properties # جہاں بھی آپ کا SDK ہو
./gradlew assembleDebug # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk 6. iOS
کور کو ڈیوائس اور سمیولیٹر کے لیے XCFramework کے طور پر بنایا جاتا ہے، اور ایپ ایک عام Xcode پروجیکٹ ہے۔ اسے اپنے iPhone پر چلانے کے لیے Xcode → Settings → Accounts میں آپ کی Apple ID اور Signing & Capabilities کے تحت آپ کی منتخب ٹیم درکار ہے۔
مزید برائے iOS.
core/scripts/build-ios.sh # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj # سمیولیٹر یا اپنی ڈیوائس منتخب کریں، پھر Run 7. مقامی ویب والیٹ
یہی والیٹ ایک براؤزر ٹیب میں، جو آپ کو ایک چھوٹا سرور فراہم کرتا ہے جو صرف 127.0.0.1 پر سنتا ہے۔
مزید برائے Web.
web/wallet/serve.sh # بلڈ کرتا ہے، پھر http://127.0.0.1:8787/ فراہم کرتا ہے 8. ٹیسٹ چلائیں
مشترکہ انٹرفیس، ویب والیٹ اور ایکسٹینشن کا ایک ہی JavaScript ٹیسٹ مجموعہ ہے؛ ڈیسک ٹاپ ایپ اور Android ایپ کے اپنے الگ ہیں۔
npm ci --prefix ui
node --test "ui/test/**/*.test.mjs" "web/wallet/test/**/*.test.mjs" "extension/test/*.test.mjs"
( cd desktop/src-tauri && cargo test )
( cd android && ./gradlew testDebugUnitTest ) شائع شدہ فائلیں کیسے بنتی ہیں
ریلیز ٹیگ پر GitHub کے رنرز یہی اسکرپٹس چلاتے ہیں: macOS، Windows اور Linux پر ڈیسک ٹاپ ایپ، دونوں ایکسٹینشن zip فائلیں، اور سورس آرکائیو، جو SHA256SUMS کے ساتھ ریلیز سے منسلک کیے جاتے ہیں۔ ورک فلو .github/workflows/release.yml ہے، اور ایک Jenkinsfile یہی پائپ لائن کہیں اور چلاتی ہے۔ Android پیکج ایک مینٹینر کی مشین پر بنایا اور دستخط کیا جاتا ہے، کیونکہ اس کی دستخطی کلید کسی CI میں نہیں ہے۔
اور کیا نہیں بتاتا
جو ڈاؤن لوڈ اپنے SHA-256 سے مطابقت رکھتا ہے وہ وہی فائل ہے جو شائع ہوئی تھی۔ بلڈز ابھی بٹ بہ بٹ قابلِ تکرار نہیں ہیں، اس لیے آپ کے اپنے بلڈ کا سم شائع شدہ بلڈ جیسا نہیں ہوگا، اور مطابقت رکھنے والا سم اس بات کا ثبوت نہیں کہ فائل کس سورس سے بنی۔ اگر سوال یہی ہے تو جواب یہ صفحہ ہے: اسے بنائیں، اور جو آپ نے بنایا وہی چلائیں۔