Rand Protocol
Compiler depuis les sources

Compilez-le vous-même

Chaque client Rand Wallet est compilé à partir d'un seul dépôt public, randprotocol/clients, sous licence GPL-3.0-only. Les téléchargements publiés sont produits par les commandes de cette page et par rien d'autre : vous pouvez donc produire les mêmes paquets sur votre propre machine. La version 0.8.0 correspond au tag v0.8.0.

Avant de commencer

Ce qu'il faut installer

Uniquement les lignes du client qui vous intéresse. La première compilation de n'importe quel client compile le prover et prend plusieurs minutes ; ensuite, une recompilation est rapide.

Tous les clients
git, rustup et Node 22 ou ultérieur. rustup installe Rust 1.98.1, la version que fixe le dépôt, la première fois que cargo s'exécute dans la copie de travail.
Bureau, tout système
tauri-cli 2 : cargo install tauri-cli --version "^2" --locked
Bureau sous Linux
sudo apt install build-essential libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf rpm file (noms pour Debian et Ubuntu ; les autres distributions ont des équivalents)
Bureau sous Windows
Visual Studio Build Tools avec « Desktop development with C++ », et Git for Windows, dont Git Bash exécute les scripts
Bureau sous macOS
Xcode Command Line Tools : xcode-select --install
Chrome, Firefox, wallet web
Rien de plus. La compilation installe elle-même wasm-bindgen-cli.
Android
JDK 17 ou ultérieur, et le SDK Android avec la plateforme 36, build-tools 36 et NDK 27
iOS
Un Mac avec Xcode 16 ou ultérieur

1. Récupérer les sources

Clonez le dépôt avec son unique sous-module, le full node, dont le code constitue la cryptographie du wallet. Placez-vous sur le tag de la version pour compiler exactement ce qui a été publié, ou restez sur main pour la dernière version. Aucun compte GitHub ni clé SSH n'est nécessaire.

Récupérer les sources
bash
git clone --recurse-submodules https://github.com/randprotocol/clients.git
cd clients
git checkout v0.8.0 && git submodule update --init   # la version publiée, plutôt que main

Sans git : téléchargez rand-wallet-0.8.0-source.tar.gz depuis la version publiée et décompressez-le. Il contient le sous-module, que les archives « Source code » de GitHub omettent.

2. Tester le cœur (facultatif)

Le cœur est la bibliothèque Rust que chaque client encapsule. Ses tests produisent une vraie preuve et la vérifient avec le verifier de la chaîne elle-même, ce qui prend environ une minute après la première compilation.

Tester le cœur (facultatif)
bash
cd core && cargo test --release && cd ..

3. Bureau : Linux, Windows, macOS

Un seul script compile les paquets du système sur lequel il s'exécute, sous les noms qu'utilisent les versions publiées. Sous Linux : un AppImage, un .deb, un .rpm et le binaire seul dans un .tar.gz. Sous Windows, depuis Git Bash : le .msi et le -setup.exe. Sous macOS : le .dmg. Une plateforme ne compile que ses propres paquets.

En savoir plus sur Linux, Windows, macOS.

Bureau : Linux, Windows, macOS
bash
cargo install tauri-cli --version "^2" --locked   # une seule fois
scripts/release/build-desktop.sh   # → dist/release/v<version>/
scripts/release/build-desktop.sh --target x86_64-apple-darwin   # le .dmg Intel, depuis un Mac Apple silicon

cd desktop/src-tauri && cargo tauri dev   # ou simplement l'exécuter, sans le empaqueter

La première compilation compile le prover et prend plusieurs minutes.

4. Extensions Chrome et Firefox

Le cœur est compilé en WebAssembly, puis le script d'empaquetage de chaque navigateur copie les fichiers dans dist/ et les compresse en zip. Il n'y a ni bundler ni minifieur : hormis le module WebAssembly, les fichiers que vous chargez sont ceux du dépôt.

En savoir plus sur Chrome, Firefox.

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

Le cœur est compilé en bibliothèque native pour arm64 et x86_64, puis Gradle construit l'application autour de lui. Une compilation de débogage s'installe sur n'importe quel téléphone ou émulateur ; une compilation de production est signée avec une clé que vous créez vous-même.

En savoir plus sur Android.

Android
bash
core/scripts/build-android.sh   # → android/app/src/main/jniLibs/
cd android
echo "sdk.dir=$HOME/Android/Sdk" > local.properties   # là où se trouve votre SDK
./gradlew assembleDebug   # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk

6. iOS

Le cœur est compilé en XCFramework pour l'appareil et le simulateur, et l'application est un projet Xcode ordinaire. Pour l'exécuter sur votre propre iPhone, il faut votre identifiant Apple dans Xcode → Settings → Accounts et votre équipe choisie sous Signing & Capabilities.

En savoir plus sur iOS.

iOS
bash
core/scripts/build-ios.sh   # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj   # choisissez un simulateur ou votre appareil, puis Run

7. Le wallet web local

Le même wallet dans un onglet de navigateur, servi par un petit serveur qui écoute uniquement sur 127.0.0.1.

En savoir plus sur Web.

Le wallet web local
bash
web/wallet/serve.sh   # compile, puis sert http://127.0.0.1:8787/

8. Lancer les tests

L'interface partagée, le wallet web et l'extension disposent d'une même suite JavaScript ; l'application de bureau et l'application Android ont chacune la leur.

Lancer les tests
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 )
Versions publiées

Comment les fichiers publiés sont produits

Sur un tag de version, les runners de GitHub exécutent les mêmes scripts : l'application de bureau sous macOS, Windows et Linux, les deux zips d'extension et l'archive des sources, joints à la version avec SHA256SUMS. Le workflow est .github/workflows/release.yml, et un Jenkinsfile exécute le même pipeline ailleurs. Le paquet Android est compilé et signé sur la machine d'un mainteneur, car sa clé de signature ne se trouve dans aucun CI.

Ce que vous apprend une somme de contrôle

Et ce qu'elle ne vous apprend pas

Un téléchargement dont le SHA-256 correspond est bien le fichier qui a été publié. Les compilations ne sont pas encore reproductibles bit à bit : votre propre compilation n'aura donc pas la même somme que celle publiée, et une somme identique ne prouve pas de quelles sources provient un fichier. Si telle est la question, la réponse est cette page : compilez, et exécutez ce que vous avez compilé.