इसे स्वयं कंपाइल करें
Rand Wallet का हर क्लाइंट एक ही सार्वजनिक रिपॉज़िटरी, randprotocol/clients, से GPL-3.0-only लाइसेंस के अंतर्गत बनाया जाता है। प्रकाशित डाउनलोड केवल इसी पृष्ठ पर दिए गए कमांड से बनाए जाते हैं, इसलिए आप वही पैकेज अपनी मशीन पर बना सकते हैं। संस्करण 0.8.0 टैग v0.8.0 है।
क्या इंस्टॉल करना है
केवल उस क्लाइंट की पंक्तियाँ देखें जिसे आप बनाना चाहते हैं। किसी भी क्लाइंट का पहला बिल्ड प्रूवर को कंपाइल करता है और कई मिनट लेता है; उसके बाद दोबारा बिल्ड जल्दी हो जाता है।
1. सोर्स प्राप्त करें
रिपॉज़िटरी को उसके एकमात्र सबमॉड्यूल, फ़ुल नोड, के साथ क्लोन करें; वॉलेट की क्रिप्टोग्राफ़ी फ़ुल नोड का ही कोड है। ठीक वही बनाने के लिए जो प्रकाशित हुआ था, रिलीज़ टैग को checkout करें, या नवीनतम कोड के लिए 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
एक ही स्क्रिप्ट उस OS के पैकेज बनाती है जिस पर वह चलती है, उन्हीं नामों से जो रिलीज़ में प्रयुक्त होते हैं। 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 में कंपाइल किया जाता है, फिर हर ब्राउज़र की pack स्क्रिप्ट फ़ाइलों को 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 से मेल खाता है, वह वही फ़ाइल है जो प्रकाशित की गई थी। बिल्ड अभी बिट-दर-बिट पुनरुत्पादनीय नहीं हैं, इसलिए आपके अपने बिल्ड का सम प्रकाशित बिल्ड के सम से मेल नहीं खाएगा, और मेल खाता सम इस बात का प्रमाण नहीं है कि कोई फ़ाइल किस सोर्स से बनी। यदि प्रश्न यही है, तो उत्तर यह पृष्ठ है: इसे बिल्ड करें, और वही चलाएँ जो आपने बनाया।