Rand Protocol
Documentazione
Ecosistema

Validator, aggregatori e prover

Come si combinano i ruoli su Rand: quale macchina dimostra un trasferimento e con quale chiave, che cosa verifica un nodo RPC prima di diffonderlo in gossip, come i validator ordinano, verificano e finalizzano i blocchi senza dimostrare nulla, e dove un aggregatore sigillerebbe una finestra di prove una volta attivata l'aggregazione.

Usa questa pagina per capire chi fa cosa quando un trasferimento attraversa Rand. Dimostrare è costoso e verificare è economico, quindi il lavoro è diviso lungo questa linea. Il lato del mittente produce le prove. I validatori si limitano a controllarle, ordinarle e votare. Un aggregatore, una volta attivato, comprimerebbe molte prove in una sola. La figura segue un trasferimento dal wallet fino a un blocco finale; le sezioni successive trattano ciascun ruolo a turno.

How a transfer moves through Rand A wallet makes the authorisation proof itself and gets the bundle proof from this device, a prover of its own, or the validators' prover pool, which is sent the viewing key only. The transaction goes to an RPC node, which verifies both proofs and gossips it to the validators. The validators order it in a block, re-verify every proof, vote, and commit the block. Finalised blocks are kept by observers and archive nodes. An aggregator, built but switched off on chain 20, would prove one recursive proof over a window of bundle proofs and submit it for a sealing block. 1 · ON THE SENDER'S SIDE Wallet holds the spend key; it never leaves builds the transfer, seals the envelopes authorisation proof · tier 10 · seconds always made here, over the spend key Bundle prover tier 14 · about 6 GB of memory · 1–2 min this device (desktop app, 8 GB phone) a rand-prover you run the validators' pool prover.randprotocol.org viewing key + salt bundle proof checked locally transaction: two proofs, nullifiers, commitments, sealed envelopes, fee 2 · ANY RPC NODE checks the binding, both proofs and the fee on four verify workers behind a 64-deep queue, then gossips the transaction on, only once it has verified gossip 3 · VALIDATORS · 26 ON CHAIN 20, 18 NEEDED TO COMMIT Mempool still-valid, best fee per KiB Leader proposes round robin · about one block a second HotStuff votes final after three chained QCs every validator re-verifies every proof in a block before it votes; no validator proves anything Aggregate → a sealing block 4 · FINALISED BLOCKS served by every RPC node and the explorer archive nodes keep every raw proof wallets scan them with their own keys window AGGREGATOR · BUILT, OFF ON CHAIN 20 one recursive proof over a window of bundle proofs; GPU-class, bonded paid a proving share and a subsidy
Su un telefono, scorri la figura in orizzontale. Un solo trasferimento, dall'alto verso il basso. Le frecce continue indicano ciò che la chain 20 fa oggi; il riquadro e la freccia tratteggiati indicano l'aggregazione dei blocchi, che è sviluppata e integrata ma non è nel genesis della chain 20.

Il percorso di un trasferimento

  1. Il wallet costruisce il trasferimento. Sceglie le note di input, recupera i relativi witness di Merkle, costruisce quattro output e sigilla ciascuno in una busta ML-KEM-768. Calcola poi il binding della transazione, un hash su tutto tranne le prove (Transactions).
  2. Il wallet dimostra da sé l’autorizzazione. È una prova di tier 10 sulla chiave di spesa e su un salt nuovo, questione di pochi secondi. È l’unica prova che tocca la chiave di spesa, e viene sempre prodotta sulla macchina del wallet stesso.
  3. La prova del bundle viene prodotta dove c’è memoria sufficiente. Questa prova di tier 14 dimostra la proprietà, l’appartenenza, i nullifier e il bilancio, e raggiunge un picco di circa 6 GB. L’app desktop e un telefono con circa 8 GB la producono da soli. Qualsiasi dispositivo più piccolo affida il compito a un prover con cui è associato: uno che gestisci tu, oppure il pool dei validatori su prover.randprotocol.org. A entrambi vengono inviati la chiave di visualizzazione e il salt, mai la chiave di spesa (Proofs).
  4. Un nodo RPC la controlla. Il nodo a cui il wallet invia la transazione ricalcola il digest del bundle, verifica entrambe le prove rispetto al binding, controlla la commissione e solo allora propaga la transazione ai propri peer (Proofs, Mempool).
  5. I validatori la ordinano e la finalizzano. Il leader della view prende le transazioni ancora valide, partendo da quelle con la miglior commissione per KiB, e propone un blocco. Ogni validatore riverifica ogni prova al suo interno e vota. Il blocco viene confermato quando tre quorum certificate si concatenano su di esso in view consecutive, il che richiede 18 dei 26 validatori della chain 20 online (Consensus).
  6. Il blocco è finale e chiunque può verificarlo. Una transazione è finale quando rand_getTransaction restituisce un blocco. Un nodo che si sincronizza più tardi riverifica ogni certificato e ogni prova, invece di fidarsi delle firme.

I ruoli

ruolocosa fadimostra?cosa vedeesegue
walletcostruisce, autorizza e invia trasferimenti e chiamate; scansiona la chain con le proprie chiavisempre la prova di autorizzazione; la prova del bundle quando il dispositivo ha memoria sufficientetutto ciò che riguarda le proprie notele app della pagina Clients, oppure rand; sulla chain 20, Rand Wallet o rand v0.6.8 o successivo
prover delegatoproduce la prova del bundle per un wallet associato; ogni risposta viene controllata dal wallet prima che venga inviato qualsiasi cosasolo prove del bundlela chiave di visualizzazione del wallet associato: tutta la sua cronologia, passata e futura; non può spendererand-prover run, oppure rand-node run --prover
pool di prover dei validatoriun prover delegato gestito da quattro host, due validatori e due macchine che si limitano a dimostrare, dietro un solo nome e una sola chiave, per i wallet privi di un prover proprio; nessuna commissionesolo prove del bundlelo stesso di qualsiasi prover delegato, per ogni wallet che vi si associaprover.randprotocol.org, impronta RGTF-7HKJ-XZFV-GQ1J
nodo RPC (osservatore)si sincronizza, riverifica ogni prova, serve JSON-RPC, propaga le transazioni verificate; non votanosolo campi pubblici: commitment, nullifier, buste sigillate, proverand-node run
validatoretutto ciò che fa un osservatore, più la proposta di blocchi nelle proprie view e il voto in HotStuffnosolo campi pubblicirand-node run --validator
aggregatoreproduce una prova ricorsiva su una finestra di prove di bundle finalizzate e la invia per un blocco di sigillaturasì, le prove più grandi della retesolo campi pubblici e proverand-node aggregate --watch, su una chain con una sezione aggregation

Dimostrare e validare sono compiti distinti, e un validatore non ha bisogno di hardware da prover. Due dei quattro membri del pool sono validatori che eseguono anche un prover, come servizio; gli altri due sono macchine dedicate alla prova che non detengono alcuna chiave di validatore. Gestire il pool non fa parte della validazione. Le dimensioni per ciascun ruolo e la memoria di proving misurata per ogni tier si trovano in Validator and aggregator hardware.

Cosa può apprendere ciascun ruolo

La privacy di un trasferimento dipende da chi detiene quale chiave, non dalla fiducia nella rete:

  • I validatori, i nodi RPC e l’explorer vedono ciò che vede ogni nodo: commitment, nullifier, buste sigillate, la commissione e le prove. Non l’importo, l’asset, il mittente né il destinatario.
  • Un prover delegato, pool incluso, riceve la chiave di visualizzazione. Con essa può leggere l’intera cronologia del wallet associato. Non può mai spendere, perché la prova di autorizzazione sulla chiave di spesa viene prodotta sulla macchina del wallet. Associare il pool significa scegliere di mostrare quella cronologia ai suoi operatori. Se vuoi mantenerla privata, dimostra sul tuo dispositivo o gestisci un tuo prover.
  • Un prover delegato non può ingannare il wallet. Il wallet legge il digest da ogni prova ricevuta, ne controlla la dimensione e la verifica in locale, così una prova errata non raggiunge mai un nodo.

Aggregazione: sviluppata, non attiva

Oggi ogni blocco contiene ogni prova grezza, circa 2,85 MB per un trasferimento, quindi un blocco da 20 MiB ne contiene circa sette. L’aggregazione dei blocchi è la risposta del fullnode. Un aggregatore prende le prove di bundle di una finestra di blocchi finalizzati (rand_getUnsealed), produce una prova ricorsiva che le verifica tutte e la invia. Il blocco che la include sigilla la finestra. I validatori verificano così un solo aggregato anziché N prove, e i nodi possono scartare le prove grezze coperte. Gli aggregatori sono vincolati da un bond e senza permessi, girano su macchine di classe GPU e ricevono la quota di proving dei bundle coperti più un sussidio di blocco in nuovi RAND.

È sviluppata e integrata, ma non è attiva. Richiede una sezione aggregation nel genesis, e la chain 20 non ne ha una, quindi rand_status riporta a zero tutti i contatori di aggregazione. Prima che possa essere attivata, la forma del suo bundle deve essere rimisurata con l’attuale insieme di vincoli, e va eseguito un test con aggregati contraffatti contro il verificatore della ricorsione. Su una chain con autorizzazione separata sigillerebbe inoltre solo le prove di bundle, non le prove di autorizzazione (Proofs).

Ultima verifica rispetto al commit c0878c3f del fullnode (chain 21) il 2026-10-12 e fullnode `c0878c3f` (v0.8.0): `deploy/genesis-chain21.json` (26 validators, no `aggregation` section), `crates/randprotocol-prover/src/wire.rs` (the wallet hands the prover the binding), fullnode main `cb0a32ea`: `deploy/prover/README.md` (status 2026-10-01 06:00 UTC: four members), randprotocol.org `rand_status` on chain 20, 2026-10-01, and on chain 21, 2026-10-12: `aggregation` all zero, 26 peers, this tree's Proofs, Consensus, Mempool and Validator and aggregator hardware pages. Dove il codice e questa pagina non concordano, ha ragione il codice; segnalacelo.