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