Rand Protocol
Bangun dari kode sumber

Kompilasi sendiri

Setiap klien Rand Wallet dibangun dari satu repositori publik, randprotocol/clients, berlisensi GPL-3.0-only. Unduhan yang dipublikasikan dibuat dengan perintah-perintah di halaman ini dan tidak ada yang lain, sehingga Anda dapat membuat paket yang sama di mesin Anda sendiri. Versi 0.8.0 adalah tag v0.8.0.

Sebelum Anda mulai

Yang perlu dipasang

Hanya baris untuk klien yang Anda inginkan. Build pertama klien mana pun akan mengompilasi prover dan memakan waktu beberapa menit; setelah itu, build ulang berjalan cepat.

Setiap klien
git, rustup, dan Node 22 atau lebih baru. rustup memasang Rust 1.98.1, versi yang dipatok oleh repositori, saat cargo pertama kali dijalankan di dalam checkout.
Desktop, OS apa pun
tauri-cli 2: cargo install tauri-cli --version "^2" --locked
Desktop di Linux
sudo apt install build-essential libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf rpm file (nama untuk Debian dan Ubuntu; distribusi lain memiliki padanannya)
Desktop di Windows
Visual Studio Build Tools dengan “Desktop development with C++”, dan Git for Windows, yang Git Bash-nya menjalankan skrip
Desktop di macOS
Xcode Command Line Tools: xcode-select --install
Chrome, Firefox, dompet web
Tidak perlu yang lain. Build memasang wasm-bindgen-cli sendiri.
Android
JDK 17 atau lebih baru, serta Android SDK dengan platform 36, build-tools 36, dan NDK 27
iOS
Mac dengan Xcode 16 atau lebih baru

1. Ambil kode sumber

Kloning repositori beserta satu submodulnya, yaitu full node, yang kodenya menjadi kriptografi dompet. Checkout tag rilis untuk membangun persis apa yang dipublikasikan, atau tetap di main untuk versi terbaru. Akun GitHub atau kunci SSH tidak diperlukan.

Ambil kode sumber
bash
git clone --recurse-submodules https://github.com/randprotocol/clients.git
cd clients
git checkout v0.8.0 && git submodule update --init   # rilis, bukan main

Tanpa git: unduh rand-wallet-0.8.0-source.tar.gz dari rilis dan ekstrak. Arsip ini memuat submodul di dalamnya, yang tidak disertakan oleh arsip “Source code” milik GitHub.

2. Uji core (opsional)

Core adalah pustaka Rust yang dibungkus oleh setiap klien. Pengujiannya membuat bukti yang sesungguhnya dan memeriksanya dengan verifier milik chain itu sendiri, yang memakan waktu sekitar satu menit setelah kompilasi pertama.

Uji core (opsional)
bash
cd core && cargo test --release && cd ..

3. Desktop: Linux, Windows, macOS

Satu skrip membangun paket untuk OS tempat skrip itu dijalankan, dengan nama yang dipakai oleh rilis. Di Linux: AppImage, .deb, .rpm, dan binary mentah dalam .tar.gz. Di Windows, dari Git Bash: .msi dan -setup.exe. Di macOS: .dmg. Setiap platform hanya membangun paketnya sendiri.

Selengkapnya di Linux, Windows, macOS.

Desktop: Linux, Windows, macOS
bash
cargo install tauri-cli --version "^2" --locked   # sekali saja
scripts/release/build-desktop.sh   # → dist/release/v<version>/
scripts/release/build-desktop.sh --target x86_64-apple-darwin   # file .dmg Intel, dari Mac Apple-silicon

cd desktop/src-tauri && cargo tauri dev   # atau langsung jalankan, tanpa pengemasan

Build pertama mengompilasi prover dan memakan waktu beberapa menit.

4. Ekstensi Chrome dan Firefox

Core dikompilasi ke WebAssembly, lalu skrip pack setiap peramban menyalin berkas ke dist/ dan mengompresnya menjadi zip. Tidak ada bundler maupun minifier: selain modul WebAssembly, berkas yang Anda muat adalah berkas yang ada di repositori.

Selengkapnya di Chrome, Firefox.

Ekstensi Chrome dan Firefox
bash
core/scripts/build-wasm.sh   # → extension/shared/core/
chrome/pack.sh   # → dist/chrome/ dan dist/rand-wallet-chrome-<version>.zip
firefox/pack.sh   # → dist/firefox/ dan 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

Core dibangun sebagai pustaka native untuk arm64 dan x86_64, lalu Gradle membangun aplikasinya di atasnya. Build debug dapat dipasang di ponsel atau emulator mana pun; build rilis ditandatangani dengan kunci yang Anda buat sendiri.

Selengkapnya di Android.

Android
bash
core/scripts/build-android.sh   # → android/app/src/main/jniLibs/
cd android
echo "sdk.dir=$HOME/Android/Sdk" > local.properties   # di mana pun SDK Anda berada
./gradlew assembleDebug   # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk

6. iOS

Core dibangun sebagai XCFramework untuk perangkat dan simulator, dan aplikasinya adalah proyek Xcode biasa. Untuk menjalankannya di iPhone Anda sendiri, Apple ID Anda harus ada di Xcode → Settings → Accounts dan tim Anda dipilih di Signing & Capabilities.

Selengkapnya di iOS.

iOS
bash
core/scripts/build-ios.sh   # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj   # pilih simulator atau perangkat Anda, lalu Run

7. Dompet web lokal

Dompet yang sama di tab peramban, disajikan kepada Anda oleh server kecil yang hanya mendengarkan di 127.0.0.1.

Selengkapnya di Web.

Dompet web lokal
bash
web/wallet/serve.sh   # membangun, lalu menyajikan http://127.0.0.1:8787/

8. Jalankan pengujian

Antarmuka bersama, dompet web, dan ekstensi memiliki satu rangkaian pengujian JavaScript; aplikasi desktop dan aplikasi Android memiliki rangkaian masing-masing.

Jalankan pengujian
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 )
Rilis

Cara berkas yang dipublikasikan dibuat

Pada tag rilis, runner GitHub menjalankan skrip yang sama: aplikasi desktop di macOS, Windows, dan Linux, kedua zip ekstensi, dan arsip kode sumber, yang dilampirkan pada rilis beserta SHA256SUMS. Alur kerjanya adalah .github/workflows/release.yml, dan Jenkinsfile menjalankan pipeline yang sama di tempat lain. Paket Android dibangun dan ditandatangani di mesin seorang maintainer, karena kunci penandatanganannya tidak ada di CI mana pun.

Yang diberitahukan oleh checksum

Dan yang tidak

Unduhan yang cocok dengan SHA-256-nya adalah berkas yang dipublikasikan. Build-nya belum dapat direproduksi bit demi bit, sehingga build Anda sendiri tidak akan memiliki jumlah hash yang sama dengan yang dipublikasikan, dan hash yang cocok bukanlah bukti dari kode sumber mana suatu berkas berasal. Jika itulah pertanyaannya, jawabannya adalah halaman ini: bangun, lalu jalankan hasil build Anda.