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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 ) 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.
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.