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