Rand Protocol
सोर्स से बिल्ड करें

इसे स्वयं कंपाइल करें

Rand Wallet का हर क्लाइंट एक ही सार्वजनिक रिपॉज़िटरी, randprotocol/clients, से GPL-3.0-only लाइसेंस के अंतर्गत बनाया जाता है। प्रकाशित डाउनलोड केवल इसी पृष्ठ पर दिए गए कमांड से बनाए जाते हैं, इसलिए आप वही पैकेज अपनी मशीन पर बना सकते हैं। संस्करण 0.8.0 टैग v0.8.0 है।

आरंभ करने से पहले

क्या इंस्टॉल करना है

केवल उस क्लाइंट की पंक्तियाँ देखें जिसे आप बनाना चाहते हैं। किसी भी क्लाइंट का पहला बिल्ड प्रूवर को कंपाइल करता है और कई मिनट लेता है; उसके बाद दोबारा बिल्ड जल्दी हो जाता है।

हर क्लाइंट
git, rustup और Node 22 या उसके बाद का संस्करण। जब checkout में पहली बार cargo चलता है, तब rustup रिपॉज़िटरी द्वारा निर्धारित संस्करण Rust 1.98.1 इंस्टॉल करता है।
डेस्कटॉप, कोई भी OS
tauri-cli 2: cargo install tauri-cli --version "^2" --locked
Linux पर डेस्कटॉप
sudo apt install build-essential libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf rpm file (ये Debian और Ubuntu के पैकेज नाम हैं; अन्य डिस्ट्रीब्यूशन में इनके समकक्ष उपलब्ध हैं)
Windows पर डेस्कटॉप
“Desktop development with C++” सहित Visual Studio Build Tools, और Git for Windows, जिसका Git Bash स्क्रिप्ट चलाता है
macOS पर डेस्कटॉप
Xcode Command Line Tools: xcode-select --install
Chrome, Firefox, वेब वॉलेट
और कुछ नहीं। बिल्ड wasm-bindgen-cli को स्वयं इंस्टॉल करता है।
Android
JDK 17 या उसके बाद का संस्करण, और platform 36, build-tools 36 तथा NDK 27 सहित Android SDK
iOS
Xcode 16 या उसके बाद के संस्करण वाला Mac

1. सोर्स प्राप्त करें

रिपॉज़िटरी को उसके एकमात्र सबमॉड्यूल, फ़ुल नोड, के साथ क्लोन करें; वॉलेट की क्रिप्टोग्राफ़ी फ़ुल नोड का ही कोड है। ठीक वही बनाने के लिए जो प्रकाशित हुआ था, रिलीज़ टैग को checkout करें, या नवीनतम कोड के लिए main पर ही रहें। GitHub खाते या SSH कुंजी की आवश्यकता नहीं है।

सोर्स प्राप्त करें
bash
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 लाइब्रेरी है जिसे हर क्लाइंट उपयोग करता है। इसके परीक्षण एक वास्तविक प्रूफ़ बनाते हैं और उसे चेन के अपने वेरिफ़ायर से जाँचते हैं; पहले कंपाइल के बाद इसमें लगभग एक मिनट लगता है।

कोर का परीक्षण करें (वैकल्पिक)
bash
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। हर प्लेटफ़ॉर्म केवल अपने ही पैकेज बनाता है।

इस पर और जानकारी: Linux, Windows, macOS.

डेस्कटॉप: Linux, Windows, macOS
bash
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 मॉड्यूल को छोड़कर, आप जो फ़ाइलें लोड करते हैं वे वही हैं जो रिपॉज़िटरी में हैं।

इस पर और जानकारी: Chrome, Firefox.

Chrome और Firefox एक्सटेंशन
bash
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.

Android
bash
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.

iOS
bash
core/scripts/build-ios.sh   # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj   # कोई सिम्युलेटर या अपना डिवाइस चुनें, फिर Run

7. स्थानीय वेब वॉलेट

वही वॉलेट एक ब्राउज़र टैब में, जिसे एक छोटा सर्वर आप तक पहुँचाता है जो केवल 127.0.0.1 पर सुनता है।

इस पर और जानकारी: Web.

स्थानीय वेब वॉलेट
bash
web/wallet/serve.sh   # बिल्ड करता है, फिर http://127.0.0.1:8787/ सर्व करता है

8. परीक्षण चलाएँ

साझा इंटरफ़ेस, वेब वॉलेट और एक्सटेंशन का एक ही JavaScript परीक्षण-समूह है; डेस्कटॉप ऐप और Android ऐप के अपने-अपने हैं।

परीक्षण चलाएँ
bash
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 से मेल खाता है, वह वही फ़ाइल है जो प्रकाशित की गई थी। बिल्ड अभी बिट-दर-बिट पुनरुत्पादनीय नहीं हैं, इसलिए आपके अपने बिल्ड का सम प्रकाशित बिल्ड के सम से मेल नहीं खाएगा, और मेल खाता सम इस बात का प्रमाण नहीं है कि कोई फ़ाइल किस सोर्स से बनी। यदि प्रश्न यही है, तो उत्तर यह पृष्ठ है: इसे बिल्ड करें, और वही चलाएँ जो आपने बनाया।