Compílalo tú mismo
Cada cliente de Rand Wallet se compila a partir de un único repositorio público, randprotocol/clients, bajo GPL-3.0-only. Las descargas publicadas se generan con los comandos de esta página y con nada más, de modo que puedes generar los mismos paquetes en tu propia máquina. La versión 0.8.0 es la etiqueta v0.8.0.
Qué instalar
Solo las filas del cliente que quieras. La primera compilación de cualquier cliente compila el prover y tarda varios minutos; después, recompilar es rápido.
1. Obtener el código fuente
Clona el repositorio con su único submódulo, el nodo completo, cuyo código es la criptografía de la wallet. Haz checkout de la etiqueta de la versión para compilar exactamente lo que se publicó, o quédate en main para lo más reciente. No se necesita cuenta de GitHub ni clave SSH.
git clone --recurse-submodules https://github.com/randprotocol/clients.git
cd clients
git checkout v0.8.0 && git submodule update --init # la versión publicada, en lugar de main Sin git: descarga rand-wallet-0.8.0-source.tar.gz de la versión y descomprímelo. Incluye el submódulo, que los archivos «Source code» propios de GitHub omiten.
2. Probar el núcleo (opcional)
El núcleo es la biblioteca de Rust que envuelve cada cliente. Sus pruebas generan una prueba real y la comprueban con el propio verifier de la cadena, lo que tarda alrededor de un minuto tras la primera compilación.
cd core && cargo test --release && cd .. 3. Escritorio: Linux, Windows, macOS
Un script compila los paquetes del sistema operativo en el que se ejecuta, con los nombres que usan las versiones publicadas. En Linux: un AppImage, un .deb, un .rpm y el binario sin empaquetar en un .tar.gz. En Windows, desde Git Bash: el .msi y el -setup.exe. En macOS: el .dmg. Cada plataforma compila solo sus propios paquetes.
cargo install tauri-cli --version "^2" --locked # una vez
scripts/release/build-desktop.sh # → dist/release/v<version>/
scripts/release/build-desktop.sh --target x86_64-apple-darwin # el .dmg para Intel, desde un Mac con Apple silicon
cd desktop/src-tauri && cargo tauri dev # o simplemente ejecútalo, sin empaquetar La primera compilación compila el prover y tarda varios minutos.
4. Extensiones de Chrome y Firefox
El núcleo se compila a WebAssembly y, después, el script de empaquetado de cada navegador copia los archivos en dist/ y los comprime en un zip. No hay bundler ni minificador: salvo el módulo WebAssembly, los archivos que cargas son los archivos del repositorio.
core/scripts/build-wasm.sh # → extension/shared/core/
chrome/pack.sh # → dist/chrome/ y dist/rand-wallet-chrome-<version>.zip
firefox/pack.sh # → dist/firefox/ y 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
El núcleo se compila como biblioteca nativa para arm64 y x86_64, y después Gradle compila la aplicación a su alrededor. Una compilación de depuración se instala en cualquier teléfono o emulador; una compilación de versión se firma con una clave que creas tú mismo.
Más sobre Android.
core/scripts/build-android.sh # → android/app/src/main/jniLibs/
cd android
echo "sdk.dir=$HOME/Android/Sdk" > local.properties # donde esté tu SDK
./gradlew assembleDebug # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk 6. iOS
El núcleo se compila como un XCFramework para dispositivo y simulador, y la aplicación es un proyecto de Xcode corriente. Para ejecutarla en tu propio iPhone necesitas tu Apple ID en Xcode → Settings → Accounts y tu equipo elegido en Signing & Capabilities.
Más sobre iOS.
core/scripts/build-ios.sh # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj # elige un simulador o tu dispositivo y pulsa Run 7. La wallet web local
La misma wallet en una pestaña del navegador, servida por un pequeño servidor que escucha solo en 127.0.0.1.
Más sobre Web.
web/wallet/serve.sh # compila y luego sirve http://127.0.0.1:8787/ 8. Ejecutar las pruebas
La interfaz compartida, la wallet web y la extensión tienen una única suite de JavaScript; la aplicación de escritorio y la de Android tienen la suya.
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 ) Cómo se generan los archivos publicados
Con una etiqueta de versión, los runners de GitHub ejecutan los mismos scripts: la aplicación de escritorio en macOS, Windows y Linux, los dos zips de las extensiones y el archivo del código fuente, adjuntos a la versión con SHA256SUMS. El workflow es .github/workflows/release.yml, y un Jenkinsfile ejecuta el mismo pipeline en otro lugar. El paquete de Android se compila y se firma en la máquina de un mantenedor, porque su clave de firma no está en ningún CI.
Y qué no te dice
Una descarga cuya SHA-256 coincide es el archivo que se publicó. Las compilaciones aún no son reproducibles bit a bit, así que tu propia compilación no tendrá la misma suma que la publicada, y una suma coincidente no prueba de qué código fuente procede un archivo. Si esa es la pregunta, la respuesta es esta página: compílalo y ejecuta lo que compilaste.