Rand Protocol
Documentation
Écosystème

Validateurs, agrégateurs et prouveurs

Comment les rôles s'articulent sur Rand : quelle machine prouve un transfert et avec quelle clé, ce qu'un nœud RPC vérifie avant de le diffuser par gossip, comment les validateurs ordonnent, vérifient et finalisent les blocs sans rien prouver, et où un agrégateur scellerait une fenêtre de preuves une fois l'agrégation activée.

Utilisez cette page pour voir qui fait quoi lorsqu’un transfert traverse Rand. Prouver coûte cher et vérifier coûte peu, si bien que le travail est réparti selon cette frontière. Le côté de l’expéditeur produit les preuves. Les validateurs se contentent de les vérifier, de les ordonner et de voter. Un agrégateur, une fois activé, replierait de nombreuses preuves en une seule. La figure suit un transfert depuis le portefeuille jusqu’à un bloc final ; les sections suivantes reprennent chaque rôle tour à tour.

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
Sur un téléphone, faites défiler la figure latéralement. Un transfert, de haut en bas. Les flèches pleines correspondent à ce que fait aujourd'hui la chain 20 ; le cadre et la flèche en pointillés représentent l'agrégation de blocs, qui est construite et fusionnée mais absente du genesis de la chain 20.

Le parcours d’un transfert

  1. Le portefeuille construit le transfert. Il choisit ses notes en entrée, récupère leurs témoins de Merkle, construit quatre sorties et scelle chacune dans une enveloppe ML-KEM-768. Il calcule ensuite le binding de la transaction, un hachage portant sur tout sauf les preuves (Transactions).
  2. Le portefeuille prouve lui-même l’autorisation. Il s’agit d’une preuve de palier 10 portant sur la clé de dépense et un sel frais, l’affaire de quelques secondes. C’est la seule preuve qui touche à la clé de dépense, et elle est toujours produite sur la machine du portefeuille.
  3. La preuve de bundle est produite là où la mémoire le permet. Cette preuve de palier 14 établit la propriété, l’appartenance, les nullifiers et l’équilibre, et culmine à environ 6 GB. L’application de bureau et un téléphone disposant d’environ 8 GB la produisent eux-mêmes. Tout appareil plus modeste confie la tâche à un prover auquel il est apparié : un prover que vous exploitez, ou le pool des validateurs à prover.randprotocol.org. L’un comme l’autre reçoit la clé de visualisation et le sel, jamais la clé de dépense (Proofs).
  4. Un nœud RPC la vérifie. Le nœud auquel le portefeuille soumet la transaction recalcule le condensé du bundle, vérifie les deux preuves par rapport au binding, contrôle les frais, et ne diffuse la transaction à ses pairs qu’ensuite (Proofs, Mempool).
  5. Les validateurs l’ordonnent et la finalisent. Le leader de la vue prend les transactions encore applicables, celles dont les frais par KiB sont les plus élevés en premier, et propose un bloc. Chaque validateur revérifie chaque preuve qu’il contient et vote. Le bloc est validé une fois que trois certificats de quorum s’enchaînent sur lui dans des vues consécutives, ce qui exige que 18 des 26 validateurs de la chain 20 soient en ligne (Consensus).
  6. Le bloc est final, et chacun peut le vérifier. Une transaction est finale lorsque rand_getTransaction renvoie un bloc. Un nœud qui se synchronise plus tard revérifie chaque certificat et chaque preuve au lieu de se fier aux signatures.

Les rôles

rôlece qu’il faitprouve ?ce qu’il voitexécute
portefeuilleconstruit, autorise et soumet les transferts et les appels ; analyse la chaîne avec ses propres cléstoujours la preuve d’autorisation ; la preuve de bundle lorsque l’appareil dispose de la mémoiretout ce qui concerne ses propres notesles applications de la page Clients, ou rand ; sur la chain 20, Rand Wallet ou rand v0.6.8 ou ultérieure
prover déléguéproduit la preuve de bundle pour un portefeuille apparié ; chaque réponse est vérifiée par le portefeuille avant toute soumissionpreuves de bundle uniquementla clé de visualisation du portefeuille apparié : tout son historique, passé et futur ; il ne peut pas dépenserrand-prover run, ou rand-node run --prover
pool de provers des validateursun prover délégué exploité par quatre hôtes, deux validateurs et deux machines qui ne font que prouver, derrière un seul nom et une seule clé, pour les portefeuilles sans prover propre ; sans fraispreuves de bundle uniquementla même chose que tout prover délégué, pour chaque portefeuille qui l’apparieprover.randprotocol.org, empreinte RGTF-7HKJ-XZFV-GQ1J
nœud RPC (observateur)se synchronise, revérifie chaque preuve, sert le JSON-RPC, diffuse les transactions vérifiées ; ne vote pasnonchamps publics uniquement : engagements, nullifiers, enveloppes scellées, preuvesrand-node run
validateurtout ce que fait un observateur, plus la proposition de blocs dans ses vues et le vote dans HotStuffnonchamps publics uniquementrand-node run --validator
agrégateurproduit une preuve récursive unique couvrant une fenêtre de preuves de bundle finalisées et la soumet pour un bloc de scellementoui, les plus grandes preuves du réseauchamps publics et preuves uniquementrand-node aggregate --watch, sur une chaîne dotée d’une section aggregation

Prouver et valider sont deux tâches distinctes, et un validateur n’a pas besoin de matériel de prover. Deux des quatre membres du pool sont des validateurs qui exécutent aussi un prover, en tant que service ; les deux autres sont des machines dédiées à la preuve, qui ne détiennent aucune clé de validateur. Faire fonctionner le pool ne fait pas partie de la validation. Les dimensionnements de chaque rôle, ainsi que la mémoire de preuve mesurée par palier, figurent dans Validator and aggregator hardware.

Ce que chaque rôle peut apprendre

La confidentialité d’un transfert dépend de qui détient quelle clé, et non de la confiance accordée au réseau :

  • Les validateurs, les nœuds RPC et l’explorateur voient ce que voit tout nœud : engagements, nullifiers, enveloppes scellées, frais et preuves. Ni le montant, ni l’actif, ni l’expéditeur, ni le destinataire.
  • Un prover délégué, pool compris, reçoit la clé de visualisation. Avec elle, il peut lire tout l’historique du portefeuille apparié. Il ne peut jamais dépenser, car la preuve d’autorisation portant sur la clé de dépense est produite sur la machine du portefeuille. Apparier le pool revient à choisir de montrer cet historique à ses opérateurs. Si vous souhaitez le garder privé, prouvez sur votre propre appareil ou exploitez votre propre prover.
  • Un prover délégué ne peut pas tromper le portefeuille. Le portefeuille lit le condensé de chaque preuve reçue, vérifie la taille et la valide localement, de sorte qu’une preuve erronée n’atteint jamais un nœud.

Agrégation : construite, mais inactive

Aujourd’hui, chaque bloc contient chaque preuve brute, soit environ 2.85 MB pour un transfert, si bien qu’un bloc de 20 MiB contient environ sept transferts. L’agrégation de blocs est la réponse du fullnode. Un agrégateur prend les preuves de bundle d’une fenêtre de blocs finalisés (rand_getUnsealed), produit une preuve récursive qui les vérifie toutes, et la soumet. Le bloc qui l’inclut scelle la fenêtre. Les validateurs vérifient alors un seul agrégat au lieu de N preuves, et les nœuds peuvent supprimer les preuves brutes couvertes. Les agrégateurs sont cautionnés et sans permission, s’exécutent sur des machines de classe GPU, et sont rémunérés par la part de preuve des bundles couverts, plus une subvention de bloc en nouveaux RAND.

Elle est construite et fusionnée, mais n’est pas active. Elle requiert une section aggregation dans le genesis, et la chain 20 n’en a aucune, si bien que rand_status indique zéro pour tous les compteurs d’agrégation. Avant de pouvoir l’activer, il faut re-mesurer la forme de son bundle selon le jeu de contraintes actuel, et mener un exercice d’agrégat falsifié contre le vérificateur de récursion. Sur une chaîne à autorisation séparée, elle ne scellerait en outre que les preuves de bundle, et non les preuves d’autorisation (Proofs).

Dernière vérification par rapport au commit c0878c3f de fullnode (chaîne 21) le 2026-10-12, et 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. Lorsque le code et cette page divergent, c'est le code qui a raison ; signalez-le-nous.