Rand Protocol
Bina daripada kod sumber

Susun sendiri

Setiap klien Rand Wallet dibina daripada satu repositori awam, randprotocol/clients, di bawah GPL-3.0-only. Muat turun yang diterbitkan dihasilkan oleh arahan pada halaman ini dan tiada yang lain, justeru anda boleh menghasilkan pakej yang sama pada mesin anda sendiri. Versi 0.8.0 ialah tag v0.8.0.

Sebelum anda bermula

Apa yang perlu dipasang

Hanya baris untuk klien yang anda mahu. Binaan pertama mana-mana klien menyusun prover dan mengambil masa beberapa minit; selepas itu, binaan semula adalah pantas.

Setiap klien
git, rustup dan Node 22 atau lebih baharu. rustup memasang Rust 1.98.1, versi yang ditetapkan oleh repositori, pada kali pertama cargo dijalankan dalam salinan semakan.
Desktop, mana-mana OS
tauri-cli 2: cargo install tauri-cli --version "^2" --locked
Desktop pada Linux
sudo apt install build-essential libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf rpm file (nama bagi Debian dan Ubuntu; pengedaran lain mempunyai pakej yang setara)
Desktop pada Windows
Visual Studio Build Tools dengan “Desktop development with C++”, dan Git for Windows, yang Git Bash-nya menjalankan skrip
Desktop pada macOS
Xcode Command Line Tools: xcode-select --install
Chrome, Firefox, dompet web
Tiada yang lain. Binaan memasang wasm-bindgen-cli sendiri.
Android
JDK 17 atau lebih baharu, dan Android SDK dengan platform 36, build-tools 36 dan NDK 27
iOS
Mac dengan Xcode 16 atau lebih baharu

1. Dapatkan kod sumber

Klon repositori beserta satu submodulnya, iaitu nod penuh, yang kodnya ialah kriptografi dompet. Semak keluar tag keluaran untuk membina tepat apa yang diterbitkan, atau kekal pada main untuk yang terkini. Akaun GitHub atau kunci SSH tidak diperlukan.

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

Tanpa git: muat turun rand-wallet-0.8.0-source.tar.gz daripada keluaran dan nyahmampatkannya. Ia mengandungi submodul di dalamnya, yang ditinggalkan oleh arkib “Source code” GitHub sendiri.

2. Uji teras (pilihan)

Teras ialah pustaka Rust yang dibungkus oleh setiap klien. Ujiannya menghasilkan bukti sebenar dan menyemaknya dengan verifier milik rantaian itu sendiri, yang mengambil masa kira-kira satu minit selepas penyusunan pertama.

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

3. Desktop: Linux, Windows, macOS

Satu skrip membina pakej bagi OS tempat ia dijalankan, dengan nama yang digunakan oleh keluaran. Pada Linux: AppImage, .deb, .rpm dan binari kosong dalam .tar.gz. Pada Windows, daripada Git Bash: .msi dan -setup.exe. Pada macOS: .dmg. Sesebuah platform hanya membina pakejnya sendiri.

Maklumat lanjut tentang Linux, Windows, macOS.

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

cd desktop/src-tauri && cargo tauri dev   # atau jalankan sahaja, tanpa pembungkusan

Binaan pertama menyusun prover dan mengambil masa beberapa minit.

4. Sambungan Chrome dan Firefox

Teras disusun kepada WebAssembly, kemudian skrip pek setiap pelayar menyalin fail ke dalam dist/ dan memampatkannya dalam fail zip. Tiada pembungkus (bundler) dan tiada pengecil (minifier): selain modul WebAssembly, fail yang anda muatkan ialah fail yang ada dalam repositori.

Maklumat lanjut tentang Chrome, Firefox.

Sambungan 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

Teras dibina sebagai pustaka natif untuk arm64 dan x86_64, kemudian Gradle membina aplikasi di sekelilingnya. Binaan nyahpepijat boleh dipasang pada mana-mana telefon atau emulator; binaan keluaran ditandatangani dengan kunci yang anda cipta sendiri.

Maklumat lanjut tentang 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-mana 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

Teras dibina sebagai XCFramework untuk peranti dan simulator, dan aplikasinya ialah projek Xcode biasa. Menjalankannya pada iPhone anda sendiri memerlukan Apple ID anda dalam Xcode → Settings → Accounts dan pasukan anda dipilih di bawah Signing & Capabilities.

Maklumat lanjut tentang iOS.

iOS
bash
core/scripts/build-ios.sh   # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj   # pilih simulator atau peranti anda, kemudian Run

7. Dompet web setempat

Dompet yang sama dalam tab pelayar, dihidangkan kepada anda oleh pelayan kecil yang hanya mendengar pada 127.0.0.1.

Maklumat lanjut tentang Web.

Dompet web setempat
bash
web/wallet/serve.sh   # membina, kemudian menghidangkan http://127.0.0.1:8787/

8. Jalankan ujian

Antara muka kongsi, dompet web dan sambungan mempunyai satu suite JavaScript; aplikasi desktop dan aplikasi Android mempunyai suite masing-masing.

Jalankan ujian
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 )
Keluaran

Bagaimana fail yang diterbitkan dihasilkan

Pada tag keluaran, runner GitHub menjalankan skrip yang sama: aplikasi desktop pada macOS, Windows dan Linux, kedua-dua zip sambungan, dan arkib kod sumber, dilampirkan pada keluaran bersama SHA256SUMS. Aliran kerjanya ialah .github/workflows/release.yml, dan Jenkinsfile menjalankan saluran paip yang sama di tempat lain. Pakej Android dibina dan ditandatangani pada mesin penyelenggara, kerana kunci tandatangannya tiada dalam mana-mana CI.

Apa yang dikatakan oleh checksum kepada anda

Dan apa yang tidak dikatakannya

Muat turun yang sepadan dengan SHA-256 ialah fail yang diterbitkan. Binaan ini belum boleh dihasilkan semula bit demi bit, jadi binaan anda sendiri tidak akan mempunyai hasil tambah yang sama dengan yang diterbitkan, dan hasil tambah yang sepadan bukanlah bukti dari kod sumber mana sesuatu fail itu datang. Jika itu soalannya, jawapannya ialah halaman ini: bina, dan jalankan apa yang anda bina.