Rand Protocol
Mobile

Rand Wallet per Android

Un'app Java nativa costruita sul core del wallet in Rust condiviso, caricato come libreria nativa. La chiave di spesa è cifrata con una chiave custodita dall'Android Keystore, il backup è disattivato e le build di release usano solo HTTPS.

Scheda su Google Play in attesa. Finché non supera la revisione, installa la versione 0.8.0 dal download qui sotto, oppure compilala dai sorgenti.

Icona di Rand Wallet
Realizzato con
Java
Distribuito tramite
Google Play, prima in test aperto
Richiede
Android 8 (API 26) o successivo, arm64 o x86_64
Invio
Genera la prova sul telefono, oppure tramite il prover di RandProtocol
Download

Versione 0.8.0

I file sono allegati alla release v0.8.0 su GitHub; i pulsanti qui sono collegamenti a quei file e da questo sito non viene servito nulla.

  1. Apri il file sul telefono e consenti l'installazione quando Android lo chiede, oppure esegui adb install su di esso da un computer.
  2. Il pacchetto è firmato con la chiave di questo progetto. Per verificarlo, apksigner verify --print-certs dovrebbe stampare lo SHA-256 75:22:2E:BF:22:D3:95:80:A5:11:2A:AC:B7:EC:2E:03:93:91:07:77:96:E0:45:1D:7B:CF:E3:7E:FA:06:53:52.
  3. Google Play firma con una propria chiave, quindi quando la scheda sarà attiva Android ti chiederà di rimuovere questa copia prima di installare quella. Esporta prima il file della chiave da Impostazioni.
Pacchetto Android (.apk)
arm64 e x86_64 · 11.9 MB
Scarica
rand-wallet-0.8.0-android.apk
SHA-256 400d5c4873cc70c7893a4a0bed36eecf261bd1c9bb9578c6544d8ffbf7e976d7
Verifica ciò che hai scaricato
SHA256SUMS
# con SHA256SUMS scaricato nella stessa cartella del file
shasum -a 256 -c SHA256SUMS --ignore-missing     # macOS
sha256sum -c SHA256SUMS --ignore-missing         # Linux

# oppure stampa la somma di un singolo file e confrontala con quella indicata sopra
shasum -a 256 rand-wallet-0.8.0-android.apk

Una somma corrispondente indica che il file è quello che è stato pubblicato. Non indica che il file sia stato compilato dai sorgenti: le build non sono ancora riproducibili bit per bit, quindi, se è ciò che ti serve sapere, compilalo tu stesso.

Invio

Genera la prova sul telefono, oppure tramite il prover di RandProtocol

Su un telefono con circa 8 GB di memoria l'app genera la prova di un trasferimento direttamente sul dispositivo, in un servizio in primo piano con una notifica finché è in esecuzione, quindi passare ad altre app non la interrompe.

La prova di un bundle raggiunge un picco di circa 6,2 GB. Su un telefono con meno memoria Android arresterebbe l'app a metà della prova, perciò il passaggio di verifica avvisa con i valori del dispositivo stesso. Il telefono usa allora per impostazione predefinita il prover di RandProtocol, oppure il tuo rand-prover via https (Impostazioni → Prover), e costruisce il trasferimento mentre il prover genera la prova.

Un dispositivo che non è in grado di generare una prova usa per impostazione predefinita i prover di RandProtocol: poche macchine gestite dai validator (quattro oggi, sotto https://prover.randprotocol.org), senza commissioni. Dalla 0.6.9 ciascuno ha una propria chiave, che il wallet fissa (pinning), e il wallet lo segnala prima del primo invio. La macchina che genera la prova di un invio riceve la chiave di visualizzazione del wallet e un salt monouso: il suo operatore può leggere l'intera cronologia del wallet, ogni pagamento ricevuto e inviato, ma non può spendere. La chiave di spesa non lascia mai il tuo dispositivo, che genera da sé la piccola prova di autorizzazione. Per maggiore privacy scegli il tuo prover in Impostazioni → Prover, che sarà allora sempre preferito; il wallet verifica ogni prova prima di inviarla.

Abbinare un prover, passo per passo: docs/prover.md.

Le tue chiavi

Dove risiede la chiave

La chiave di spesa è l'unico segreto del wallet. Non esiste alcun account né alcun server che ne conservi una copia: se perdi la chiave nessuno può ripristinarla, quindi salvala quando il wallet te la mostra.

Chiave di spesa
In EncryptedSharedPreferences: AES-256-GCM con una chiave master custodita dall'Android Keystore. La chiave di visualizzazione non viene mai memorizzata; viene derivata quando serve.
Sblocco
Richiesta biometrica, con le credenziali del dispositivo come alternativa, e blocco automatico dopo l'intervallo impostato in Impostazioni.
Backup
Disattivato, così il vault non lascia mai il telefono tramite il servizio di backup di Google.
Note
Una cache privata dell'app delle tue note e della chiave di transazione di ciascun pagamento, ricostruita da una nuova scansione. Le build di release rifiutano l'HTTP in chiaro.
Inoltre

Lo swap, nell'app

Dalla 0.7.1 le app per telefono hanno la schermata Swap già presente nelle estensioni e nell'app desktop: scambia RAND e token tramite i pool di durian.market senza uscire dal wallet. Il telefono genera da sé la prova della chiamata al programma e l'autorizzazione di spesa, operazione che richiede circa 1,5 GB di memoria, mentre i prover di RandProtocol generano la prova di grandi dimensioni. L'importo che ricevi è esatto; se il pool si muove prima, non viene inviato nulla e ricevi una nuova quotazione.

Compila dai sorgenti

Oppure compilala tu

  1. Compila un APK di debug dal repository clients e installalo con adb, su un telefono o su un emulatore arm64 o x86_64 (API 36).
  2. Dall'emulatore, un nodo sul tuo computer è http://10.0.2.2:8545; le build di debug consentono il traffico in chiaro solo verso quell'indirizzo e verso localhost.

Toolchain: Rust 1.98.1, fissata nel repository e installata da rustup. La guida alla compilazione copre ogni client a partire da una macchina pulita. Directory dei sorgenti: android/, core/.

Rand Wallet per Android
bash
git clone --recurse-submodules https://github.com/randprotocol/clients.git && cd clients
git checkout v0.8.0 && git submodule update --init   # la release; core/vendor/fullnode @ v0.8.0 (c0878c3)
core/scripts/build-android.sh   # → android/app/src/main/jniLibs/ (JDK 17, SDK 36, NDK 27)
cd android && ./gradlew assembleDebug   # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk
Ogni client

Cosa fa, su ogni piattaforma

Crea un wallet
Una chiave di spesa generata sul dispositivo, mostrata una sola volta perché tu la salvi, e l'indirizzo rand1… che ne deriva. Importa una chiave esistente, o un wallet.key.json dalla CLI rand; ogni client esporta lo stesso file.
Ricevi e invia
Il tuo saldo è l'insieme delle note che solo la tua chiave può aprire; il wallet scansiona il commitment tree per trovarle. Un trasferimento di RAND o di qualsiasi token RPL in elenco è un unico bundle 4-in-4-out autorizzato da una prova. Nessuno viene a sapere il mittente, il destinatario, l'importo o quale asset si è mosso.
Faucet
Su una testnet con un faucet aperto, un tocco conia 100 RAND in una nota che solo tu puoi aprire.
Rivela solo ciò che scegli
Copia la tua viewing key e apri La mia cronologia su RandScan per vedere ogni nota che hai inviato o ricevuto, oppure copia la transaction key di un singolo pagamento per rivelare esattamente quel pagamento e nient'altro. L'explorer decifra nel tuo browser e non invia mai la chiave da nessuna parte.

Le chiavi di visualizzazione e le chiavi di transazione si aprono su randscan.org.

Note sulla testnet

Prima di inviare qualsiasi cosa

Chain
L'endpoint pubblico serve la chain 21, attiva dal 12 ottobre 2026, 10:31 UTC (creata su fullnode v0.8.0). Il core del wallet incorpora fullnode v0.8.0 (c0878c3) e rifiuta qualsiasi altra chain: la chain 21 esegue il constraint set 9, quindi un wallet 0.7.x non può inviare su di essa, e questa release non può inviare sulla chain 20. Chiavi e indirizzi restano validi; un wallet che ha scansionato la chain 20 mostra una sola volta un banner di chain diversa e riesegue la scansione dal genesis della chain 21. I depositi e i prelievi tramite bridge mantengono una commissione dello 0,1% in zUSD, che il wallet mostra prima del prelievo.
Endpoint RPC
Impostazioni → Rete. Per impostazione predefinita https://rpc.randprotocol.org; funziona qualsiasi RPC di rand-node raggiungibile, e un URL salvato viene verificato prima di essere conservato
Generazione delle prove
La prova di un bundle raggiunge un picco di circa 6,2 GB di memoria e richiede circa un minuto su una CPU di un portatile
Stato
Software testnet sperimentale. Non sottoposto ad audit. RAND sulla testnet non ha alcun valore reale
Licenza
GPL-3.0-only, come i crate del full node a cui si collega ogni client
Altri client

Un unico wallet, ogni piattaforma

Lo stesso file di chiavi, lo stesso formato di indirizzo e le stesse regole ovunque: un wallet creato qui si importa in qualsiasi altro client e nella CLI rand.