Rand Protocol
Documentação
Ecossistema

Validadores, agregadores e provers

Como as funções na Rand se encaixam: qual máquina prova uma transferência e com que chave, o que um nó RPC verifica antes de propagá-la por gossip, como os validadores ordenam, verificam e finalizam blocos sem provar nada, e onde um agregador selaria uma janela de provas assim que a agregação for ativada.

Use esta página para ver quem faz o quê quando uma transferência percorre a Rand. Provar é caro e verificar é barato, por isso o trabalho é dividido ao longo dessa linha. O lado do remetente gera as provas. Os validadores apenas as verificam, ordenam e votam. Um agregador, uma vez ativado, combinaria muitas provas em uma só. A figura acompanha uma transferência da carteira até um bloco final; as seções seguintes tratam de cada papel em separado.

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
No celular, deslize a figura para o lado. Uma transferência, de cima para baixo. As setas contínuas mostram o que a chain 20 faz hoje; a caixa e a seta tracejadas representam a agregação de blocos, que está construída e integrada, mas não consta do genesis da chain 20.

O caminho de uma transferência

  1. A carteira monta a transferência. Ela escolhe suas notes de entrada, obtém as testemunhas de Merkle delas, monta quatro saídas e sela cada uma em um envelope ML-KEM-768. Em seguida calcula o binding da transação, um hash sobre tudo, exceto as provas (Transactions).
  2. A carteira prova a autorização por conta própria. É uma prova de tier 10 sobre a chave de gasto e um salt novo, questão de poucos segundos. É a única prova que toca a chave de gasto e é sempre gerada na máquina da própria carteira.
  3. A prova do bundle é gerada onde há memória para isso. Esta prova de tier 14 demonstra a posse, a pertinência, os nullifiers e o saldo, e chega a cerca de 6 GB de pico. O aplicativo de desktop e um celular com cerca de 8 GB a geram sozinhos. Qualquer dispositivo menor entrega a tarefa a um prover com o qual esteja pareado: um que você mesmo execute, ou o pool dos validadores em prover.randprotocol.org. Ambos recebem a chave de visualização e o salt, nunca a chave de gasto (Proofs).
  4. Um nó RPC a verifica. O nó ao qual a carteira submete a transação recalcula o digest do bundle, verifica as duas provas contra o binding, confere a taxa e só então propaga a transação aos seus pares (Proofs, Mempool).
  5. Os validadores a ordenam e a finalizam. O líder da view pega as transações que ainda são aplicáveis, começando pela melhor taxa por KiB, e propõe um bloco. Cada validador reverifica todas as provas nele contidas e vota. O bloco é confirmado quando três quorum certificates se encadeiam sobre ele em views consecutivas, o que exige 18 dos 26 validadores da chain 20 online (Consensus).
  6. O bloco é final e qualquer pessoa pode verificá-lo. Uma transação é final quando rand_getTransaction retorna um bloco. Um nó que sincroniza depois reverifica todos os certificados e todas as provas, em vez de confiar nas assinaturas.

Os papéis

papelo que fazprova?o que vêexecuta
carteiramonta, autoriza e submete transferências e chamadas; varre a chain com as próprias chavessempre a prova de autorização; a prova do bundle quando o dispositivo tem memóriatudo sobre as próprias notesos aplicativos da página Clients, ou rand; na chain 20, Rand Wallet ou rand v0.6.8 ou posterior
prover delegadogera a prova do bundle para uma carteira pareada com ele; cada resposta é verificada pela carteira antes de qualquer submissãosomente provas de bundlea chave de visualização da carteira pareada: todo o seu histórico, passado e futuro; não pode gastarrand-prover run, ou rand-node run --prover
pool de provers dos validadoresum prover delegado operado por quatro hosts, dois validadores e duas máquinas que só provam, sob um único nome e uma única chave, para carteiras sem prover próprio; sem taxasomente provas de bundleo mesmo que qualquer prover delegado, para toda carteira que o pareieprover.randprotocol.org, fingerprint RGTF-7HKJ-XZFV-GQ1J
nó RPC (observador)sincroniza, reverifica todas as provas, serve JSON-RPC, propaga transações verificadas; não votanãosomente campos públicos: commitments, nullifiers, envelopes selados, provasrand-node run
validadortudo o que um observador faz, além de propor em suas views e votar no HotStuffnãosomente campos públicosrand-node run --validator
agregadorgera uma prova recursiva sobre uma janela de provas de bundle finalizadas e a submete para um bloco de selagemsim, as maiores provas da redesomente campos públicos e provasrand-node aggregate --watch, em uma chain com uma seção aggregation

Provar e validar são trabalhos distintos, e um validador não precisa de hardware de prover. Dois dos quatro membros do pool são validadores que também executam um prover, como serviço; os outros dois são máquinas dedicadas à prova, que não têm chave de validador. Operar o pool não faz parte de validar. Os requisitos de cada papel e a memória de prova medida por tier estão em Validator and aggregator hardware.

O que cada papel pode aprender

A privacidade de uma transferência depende de quem detém cada chave, não de confiar na rede:

  • Validadores, nós RPC e o explorer veem o que todo nó vê: commitments, nullifiers, envelopes selados, a taxa e as provas. Não veem o valor, o ativo, o remetente nem o destinatário.
  • Um prover delegado, incluindo o pool, recebe a chave de visualização. Com ela, pode ler todo o histórico da carteira pareada. Nunca pode gastar, porque a prova de autorização sobre a chave de gasto é gerada na máquina da carteira. Parear o pool significa optar por mostrar esse histórico aos seus operadores. Se você quer mantê-lo privado, prove no seu próprio dispositivo ou execute o seu próprio prover.
  • Um prover delegado não consegue enganar a carteira. A carteira lê o digest de cada prova recebida, confere o tamanho e a verifica localmente, de modo que uma prova errada nunca chega a um nó.

Agregação: construída, não ativada

Hoje cada bloco carrega todas as provas brutas, cerca de 2,85 MB por transferência, de modo que um bloco de 20 MiB comporta cerca de sete transferências. A agregação de blocos é a resposta do fullnode. Um agregador pega as provas de bundle de uma janela de blocos finalizados (rand_getUnsealed), gera uma prova recursiva que verifica todas elas e a submete. O bloco que a inclui sela a janela. Os validadores passam então a verificar um único agregado em vez de N provas, e os nós podem descartar as provas brutas cobertas. Os agregadores são bonded e sem permissão, executam em máquinas da classe GPU e recebem a parcela de prova dos bundles cobertos, além de um subsídio de bloco em novos RAND.

Está construída e integrada, mas não está ativa. Ela exige uma seção aggregation no genesis, e a chain 20 não tem nenhuma, por isso rand_status informa todos os contadores de agregação como zero. Antes de poder ser ativada, o formato de bundle precisa ser remedido sob o conjunto de restrições atual, e um exercício de agregado forjado precisa ser executado contra o verificador de recursão. Em uma chain com autorização dividida, ela selaria apenas as provas de bundle, não as provas de autorização (Proofs).

Última verificação em relação ao commit c0878c3f do fullnode (chain 21) em 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. Onde o código e esta página divergirem, o código está certo; avise-nos.