Rand Protocol
Compilar desde el código fuente

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.

Antes de empezar

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.

Todos los clientes
git, rustup y Node 22 o posterior. rustup instala Rust 1.98.1, la versión que fija el repositorio, la primera vez que cargo se ejecuta en la copia de trabajo.
Escritorio, cualquier sistema operativo
tauri-cli 2: cargo install tauri-cli --version "^2" --locked
Escritorio en Linux
sudo apt install build-essential libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf rpm file (nombres de Debian y Ubuntu; otras distribuciones tienen equivalentes)
Escritorio en Windows
Visual Studio Build Tools con «Desktop development with C++» y Git for Windows, cuyo Git Bash ejecuta los scripts
Escritorio en macOS
Xcode Command Line Tools: xcode-select --install
Chrome, Firefox, wallet web
Nada más. La compilación instala wasm-bindgen-cli por sí misma.
Android
JDK 17 o posterior, y el Android SDK con la plataforma 36, build-tools 36 y NDK 27
iOS
Un Mac con Xcode 16 o posterior

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.

Obtener el código fuente
bash
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.

Probar el núcleo (opcional)
bash
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.

Más sobre Linux, Windows, macOS.

Escritorio: Linux, Windows, macOS
bash
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.

Más sobre Chrome, Firefox.

Extensiones de Chrome y Firefox
bash
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.

Android
bash
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.

iOS
bash
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.

La wallet web local
bash
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.

Ejecutar las pruebas
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 )
Versiones

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.

Qué te dice una suma de verificación

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.