Rand Protocol
Aus dem Quellcode bauen

Selbst kompilieren

Jeder Rand Wallet-Client wird aus einem öffentlichen Repository gebaut, randprotocol/clients, unter GPL-3.0-only. Die veröffentlichten Downloads entstehen aus den Befehlen auf dieser Seite und aus nichts sonst, sodass Sie dieselben Pakete auf Ihrem eigenen Rechner erzeugen können. Version 0.8.0 ist das Tag v0.8.0.

Bevor Sie beginnen

Was zu installieren ist

Nur die Zeilen für den Client, den Sie wollen. Der erste Build eines Clients kompiliert den Prover und dauert mehrere Minuten; danach geht ein erneuter Build schnell.

Jeder Client
git, rustup und Node 22 oder neuer. rustup installiert beim ersten Aufruf von cargo im Checkout Rust 1.98.1, die Version, die das Repository festlegt.
Desktop, jedes Betriebssystem
tauri-cli 2: cargo install tauri-cli --version "^2" --locked
Desktop unter Linux
sudo apt install build-essential libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf rpm file (Namen für Debian und Ubuntu; andere Distributionen haben Entsprechungen)
Desktop unter Windows
Visual Studio Build Tools mit „Desktop development with C++“ sowie Git for Windows, dessen Git Bash die Skripte ausführt
Desktop unter macOS
Xcode Command Line Tools: xcode-select --install
Chrome, Firefox, Web-Wallet
Nichts weiter. Der Build installiert wasm-bindgen-cli selbst.
Android
JDK 17 oder neuer sowie das Android SDK mit Plattform 36, build-tools 36 und NDK 27
iOS
Ein Mac mit Xcode 16 oder neuer

1. Quellcode beschaffen

Klonen Sie das Repository samt seinem einzigen Submodul, dem Full Node, dessen Code die Kryptografie der Wallet ist. Checken Sie das Release-Tag aus, um genau das zu bauen, was veröffentlicht wurde, oder bleiben Sie auf main für den neuesten Stand. Ein GitHub-Konto oder ein SSH-Schlüssel ist nicht nötig.

Quellcode beschaffen
bash
git clone --recurse-submodules https://github.com/randprotocol/clients.git
cd clients
git checkout v0.8.0 && git submodule update --init   # das Release statt main

Ohne git: Laden Sie rand-wallet-0.8.0-source.tar.gz vom Release herunter und entpacken Sie es. Das Submodul ist darin enthalten, das die eigenen „Source code“-Archive von GitHub weglassen.

2. Den Core testen (optional)

Der Core ist die Rust-Bibliothek, die jeder Client umschließt. Seine Tests erzeugen einen echten Beweis und prüfen ihn mit dem Verifier der Chain selbst, was nach der ersten Kompilierung etwa eine Minute dauert.

Den Core testen (optional)
bash
cd core && cargo test --release && cd ..

3. Desktop: Linux, Windows, macOS

Ein Skript baut die Pakete des Betriebssystems, auf dem es läuft, unter den Namen, die die Releases verwenden. Unter Linux: ein AppImage, ein .deb, ein .rpm und die reine Binärdatei in einem .tar.gz. Unter Windows, aus Git Bash: die .msi und die -setup.exe. Unter macOS: die .dmg. Eine Plattform baut nur ihre eigenen Pakete.

Mehr zu Linux, Windows, macOS.

Desktop: Linux, Windows, macOS
bash
cargo install tauri-cli --version "^2" --locked   # einmalig
scripts/release/build-desktop.sh   # → dist/release/v<version>/
scripts/release/build-desktop.sh --target x86_64-apple-darwin   # die Intel-.dmg, von einem Mac mit Apple Silicon

cd desktop/src-tauri && cargo tauri dev   # oder einfach ausführen, ohne zu paketieren

Der erste Build kompiliert den Prover und dauert mehrere Minuten.

4. Erweiterungen für Chrome und Firefox

Der Core wird zu WebAssembly kompiliert, dann kopiert das Pack-Skript jedes Browsers die Dateien nach dist/ und zippt sie. Es gibt keinen Bundler und keinen Minifier: Abgesehen vom WebAssembly-Modul sind die Dateien, die Sie laden, die Dateien im Repository.

Mehr zu Chrome, Firefox.

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

Der Core wird als native Bibliothek für arm64 und x86_64 gebaut, danach baut Gradle die App darum herum. Ein Debug-Build lässt sich auf jedem Telefon oder Emulator installieren; ein Release-Build wird mit einem Schlüssel signiert, den Sie selbst erzeugen.

Mehr zu Android.

Android
bash
core/scripts/build-android.sh   # → android/app/src/main/jniLibs/
cd android
echo "sdk.dir=$HOME/Android/Sdk" > local.properties   # dort, wo Ihr SDK liegt
./gradlew assembleDebug   # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk

6. iOS

Der Core wird als XCFramework für Gerät und Simulator gebaut, und die App ist ein gewöhnliches Xcode-Projekt. Um sie auf Ihrem eigenen iPhone auszuführen, benötigen Sie Ihre Apple ID unter Xcode → Settings → Accounts und Ihr Team unter Signing & Capabilities.

Mehr zu iOS.

iOS
bash
core/scripts/build-ios.sh   # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj   # Simulator oder Gerät wählen, dann Run

7. Die lokale Web-Wallet

Dieselbe Wallet in einem Browser-Tab, bereitgestellt von einem kleinen Server, der ausschließlich auf 127.0.0.1 lauscht.

Mehr zu Web.

Die lokale Web-Wallet
bash
web/wallet/serve.sh   # baut und stellt dann http://127.0.0.1:8787/ bereit

8. Die Tests ausführen

Die gemeinsame Schnittstelle, die Web-Wallet und die Erweiterung haben eine JavaScript-Testsuite; die Desktop-App und die Android-App haben jeweils ihre eigene.

Die Tests ausführen
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 )
Releases

Wie die veröffentlichten Dateien entstehen

Bei einem Release-Tag führen die Runner von GitHub dieselben Skripte aus: die Desktop-App unter macOS, Windows und Linux, beide Erweiterungs-Zips und das Quellarchiv, die dem Release zusammen mit SHA256SUMS beigefügt werden. Der Workflow ist .github/workflows/release.yml, und ein Jenkinsfile führt dieselbe Pipeline an anderer Stelle aus. Das Android-Paket wird auf dem Rechner eines Maintainers gebaut und signiert, weil sein Signaturschlüssel in keiner CI liegt.

Was eine Prüfsumme aussagt

Und was nicht

Ein Download, der zu seinem SHA-256 passt, ist die Datei, die veröffentlicht wurde. Die Builds sind noch nicht bitgenau reproduzierbar, sodass Ihr eigener Build nicht dieselbe Summe wie der veröffentlichte hat, und eine übereinstimmende Summe ist kein Beweis dafür, aus welchem Quellcode eine Datei stammt. Wenn das die Frage ist, lautet die Antwort diese Seite: Bauen Sie es und führen Sie aus, was Sie gebaut haben.