Rand Protocol
문서
생태계

검증자, 애그리게이터, 증명자

Rand의 역할들이 어떻게 맞물리는지 설명합니다. 어떤 머신이 어떤 키로 전송을 증명하는지, RPC 노드가 전송을 가십하기 전에 무엇을 검사하는지, 검증자가 증명을 생성하지 않고도 어떻게 블록을 정렬하고 검증하고 확정하는지, 그리고 집계가 활성화되면 애그리게이터가 어디에서 증명 구간을 봉인하는지를 다룹니다.

Rand를 통해 전송이 이동할 때 누가 무엇을 하는지 살펴보려면 이 페이지를 사용하십시오. 증명 생성은 비용이 많이 들고 검증은 저렴하므로, 작업은 그 경계를 따라 나뉩니다. 증명은 발신자 측에서 만듭니다. 검증자(validator)는 증명을 확인하고, 순서를 정하고, 투표만 합니다. 어그리게이터(aggregator)는 활성화되면 여러 증명을 하나로 접습니다. 그림은 하나의 전송이 지갑에서 최종 블록에 이르기까지의 과정을 따라가며, 그 뒤의 각 절은 역할을 하나씩 다룹니다.

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
휴대폰에서는 그림을 옆으로 밀어 보십시오. 하나의 전송을 위에서 아래로 나타냈습니다. 실선 화살표는 chain 20이 현재 수행하는 동작이며, 점선 상자와 점선 화살표는 블록 어그리게이션입니다. 이는 구현과 병합이 완료되었으나 chain 20의 제네시스에는 포함되지 않았습니다.

하나의 전송이 거치는 경로

  1. 지갑이 전송을 구성합니다. 지갑은 입력 노트를 고르고, 해당 노트의 Merkle 증인(witness)을 가져오며, 네 개의 출력을 만들고 각각을 ML-KEM-768 봉투(envelope)로 봉인합니다. 그런 다음 트랜잭션의 바인딩, 즉 증명을 제외한 모든 것에 대한 해시를 계산합니다 (Transactions).
  2. 지갑이 승인 증명을 직접 생성합니다. 이는 지출 키와 새로운 솔트에 대한 tier-10 증명이며, 소요 시간은 수 초입니다. 지출 키를 다루는 유일한 증명이므로 항상 지갑 자체의 기기에서 생성됩니다.
  3. 번들 증명은 메모리가 있는 곳에서 생성됩니다. 이 tier-14 증명은 소유권, 멤버십, 널리파이어(nullifier), 잔액을 증명하며 최대 약 6 GB를 사용합니다. 데스크톱 앱과 약 8 GB를 갖춘 휴대폰은 이를 직접 생성합니다. 그보다 작은 기기는 페어링된 프로버(prover)에 작업을 맡깁니다. 직접 운영하는 프로버이거나 prover.randprotocol.org의 검증자 풀이 해당됩니다. 어느 쪽이든 조회 키(viewing key)와 솔트가 전달되며, 지출 키는 전달되지 않습니다 (Proofs).
  4. RPC 노드가 이를 확인합니다. 지갑이 제출하는 노드는 번들 다이제스트를 다시 계산하고, 바인딩에 대해 두 증명을 모두 검증하고, 수수료를 확인한 뒤에야 트랜잭션을 피어에게 가십(gossip)합니다 (Proofs, Mempool).
  5. 검증자가 순서를 정하고 확정합니다. 해당 뷰(view)의 리더는 여전히 유효한 트랜잭션을 KiB당 수수료가 가장 높은 순으로 선택하여 블록을 제안합니다. 모든 검증자는 블록 안의 모든 증명을 다시 검증하고 투표합니다. 연속된 뷰에서 세 개의 쿼럼 인증서(quorum certificate)가 블록 위에 연쇄적으로 쌓이면 블록이 커밋되며, 이를 위해서는 chain 20의 검증자 26개 중 18개가 온라인 상태여야 합니다 (Consensus).
  6. 블록은 최종 확정되며, 누구나 이를 확인할 수 있습니다. rand_getTransaction이 블록을 반환하면 트랜잭션은 확정된 것입니다. 이후에 동기화하는 노드는 서명을 신뢰하는 대신 모든 인증서와 모든 증명을 다시 검증합니다.

역할

역할수행하는 일증명 생성 여부볼 수 있는 정보실행 방법
지갑전송과 호출을 구성, 승인, 제출하며 자신의 키로 체인을 스캔합니다승인 증명은 항상, 번들 증명은 기기에 메모리가 있을 때자신의 노트에 관한 모든 정보Clients 페이지의 앱 또는 rand. chain 20에서는 Rand Wallet 또는 rand v0.6.8 이상
위임 프로버페어링된 지갑을 위해 번들 증명을 생성합니다. 무엇이든 제출되기 전에 모든 응답을 지갑이 확인합니다번들 증명만페어링된 지갑의 조회 키: 과거와 미래를 포함한 전체 내역. 지출은 할 수 없습니다rand-prover run 또는 rand-node run --prover
검증자 프로버 풀자체 프로버가 없는 지갑을 위해, 하나의 이름과 하나의 키 뒤에서 네 대의 호스트(검증자 두 대와 증명만 수행하는 기계 두 대)가 운영하는 위임 프로버입니다. 수수료는 없습니다번들 증명만이를 페어링하는 모든 지갑에 대해, 다른 위임 프로버와 동일prover.randprotocol.org, 지문 RGTF-7HKJ-XZFV-GQ1J
RPC 노드 (옵저버)동기화하고, 모든 증명을 다시 검증하며, JSON-RPC를 제공하고, 검증된 트랜잭션을 가십합니다. 투표는 하지 않습니다아니요공개 필드만: 커밋먼트, 널리파이어, 봉인된 봉투, 증명rand-node run
검증자옵저버가 하는 모든 일에 더해, 자신의 뷰에서 제안하고 HotStuff에서 투표합니다아니요공개 필드만rand-node run --validator
어그리게이터확정된 번들 증명의 한 구간에 대해 하나의 재귀 증명을 생성하고, 이를 봉인 블록에 제출합니다예, 네트워크에서 가장 큰 증명공개 필드와 증명만rand-node aggregate --watch, aggregation 섹션이 있는 체인에서

증명 생성과 검증은 별개의 업무이며, 검증자에게 프로버 하드웨어는 필요하지 않습니다. 풀의 네 구성원 중 둘은 서비스로서 프로버도 운영하는 검증자이고, 나머지 둘은 검증자 키를 보유하지 않는 전용 프로버 기계입니다. 풀을 운영하는 것은 검증의 일부가 아닙니다. 각 역할의 사양과 tier별로 측정된 증명 메모리는 Validator and aggregator hardware에 있습니다.

각 역할이 알 수 있는 정보

전송의 프라이버시는 네트워크에 대한 신뢰가 아니라 누가 어떤 키를 가지고 있는가에 달려 있습니다.

  • 검증자, RPC 노드, 익스플로러는 모든 노드가 보는 것을 봅니다. 커밋먼트, 널리파이어, 봉인된 봉투, 수수료, 증명입니다. 금액, 자산, 발신자, 수신자는 볼 수 없습니다.
  • 풀을 포함한 위임 프로버는 조회 키를 전달받습니다. 이를 통해 페어링된 지갑의 전체 내역을 읽을 수 있습니다. 지출 키에 대한 승인 증명은 지갑의 기기에서 생성되므로 지출은 결코 할 수 없습니다. 풀을 페어링한다는 것은 그 운영자에게 해당 내역을 보여주기로 선택한다는 뜻입니다. 비공개로 유지하려면 자신의 기기에서 증명하거나 자신의 프로버를 운영하십시오.
  • 위임 프로버는 지갑을 속일 수 없습니다. 지갑은 받은 모든 증명에서 다이제스트를 읽고, 크기를 확인하고, 로컬에서 검증하므로 잘못된 증명은 노드에 도달하지 않습니다.

어그리게이션: 구현되었으나 비활성

현재 모든 블록은 원본 증명을 모두 담고 있으며, 전송 하나당 약 2.85 MB이므로 20 MiB 블록에는 전송 약 일곱 건이 들어갑니다. 블록 어그리게이션은 풀노드 측의 해답입니다. 어그리게이터는 확정된 블록 구간의 번들 증명(rand_getUnsealed)을 가져와 이를 모두 검증하는 하나의 재귀 증명을 생성하고 제출합니다. 이를 포함하는 블록이 해당 구간을 봉인합니다. 그러면 검증자는 N개의 증명 대신 하나의 어그리게이트를 검증하며, 노드는 포함된 원본 증명을 삭제할 수 있습니다. 어그리게이터는 본드(bond)를 예치하고 허가 없이 참여하며, GPU급 기계에서 운영되고, 포함된 번들의 증명 몫과 새로 발행되는 RAND의 블록 보조금을 받습니다.

구현과 병합은 완료되었으나 활성 상태는 아닙니다. 제네시스에 aggregation 섹션이 필요한데 chain 20에는 없으므로, rand_status는 모든 어그리게이션 카운터를 0으로 보고합니다. 활성화하기 전에 현재 제약 조건 집합에서 번들 형태를 다시 측정해야 하며, 재귀 검증기를 대상으로 위조 어그리게이트 시험을 수행해야 합니다. 승인 분리 체인에서는 승인 증명이 아니라 번들 증명만 봉인하게 됩니다 (Proofs).

fullnode 커밋 c0878c3f(chain 21) 기준으로 2026-10-12에 마지막으로 검증되었습니다, 그리고 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. 코드와 이 페이지의 내용이 다를 경우 코드가 옳습니다. 알려 주시기 바랍니다.