Rand Protocol
ドキュメント
エコシステム

Validator、aggregator、prover

Rand における各ロールがどのように組み合わさるかを説明します。どのマシンがどの鍵で transfer の証明を生成するのか、RPC ノードがゴシップする前に何を検証するのか、validator が証明を生成することなくどのようにブロックを順序付け・検証・ファイナライズするのか、そして aggregation が有効になった際に aggregator がどこで証明のウィンドウを確定させるのかを示します。

このページでは、送金が Rand を通過する際に、誰が何を担うのかを説明します。証明の生成は高コストで、検証は低コストです。そのため、作業はこの境界で分担されています。証明を作るのは送信者側です。validator は、証明を検証し、順序付けし、投票するだけです。aggregator は、有効化されると、多数の証明を1つにまとめます。図はウォレットから最終ブロックまでの1件の送金を追っています。図の後の各節では、各ロールを順に取り上げます。

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
スマートフォンでは、図を横にスワイプしてください。1件の送金を上から下へ示しています。実線の矢印は現在のチェーン20の動作です。破線のボックスと矢印はブロック集約を表します。これは実装とマージが済んでいますが、チェーン20のジェネシスには含まれていません。

1件の送金の経路

  1. ウォレットが送金を構築します。 入力ノートを選び、そのMerkle witnessを取得し、4つの出力を作って、それぞれをML-KEM-768のエンベロープで封印します。続いて、トランザクションのバインディング(証明を除くすべてに対するハッシュ)を計算します(トランザクション)。
  2. ウォレットが認可の証明を自分で生成します。 これは、spend keyと新しいsaltに対するティア10の証明で、所要時間は数秒です。spend keyに触れる証明はこれだけで、常にウォレット自身のマシン上で生成されます。
  3. バンドル証明は、メモリのある場所で生成します。 ティア14のこの証明は、所有権、メンバーシップ、ナリファイア、残高を示すもので、ピーク時に約6 GBを使用します。デスクトップアプリと、約8 GBのメモリを持つスマートフォンは、自分で生成します。それより小さい端末は、ペアリングしたプルーバーに処理を任せます。ペアリング先は、自分で運用するプルーバーか、prover.randprotocol.org のvalidatorのプールです。どちらに対しても、送るのはviewing keyとsaltで、spend keyは決して送りません(証明)。
  4. RPCノードが検証します。 ウォレットの送信先となったノードは、バンドルダイジェストを再計算し、バインディングに対して両方の証明を検証し、手数料を確認します。その後で初めて、トランザクションをピアにゴシップします(証明、メンプール)。
  5. validatorが順序付けして確定させます。 そのビューのリーダーは、まだ適用可能なトランザクションを、KiBあたりの手数料が高いものから順に取り、ブロックを提案します。すべてのvalidatorが、ブロック内のすべての証明を再検証して投票します。連続する3つのビューでquorum certificateが3つ連鎖すると、ブロックはコミットされます。これには、チェーン20の26台のvalidatorのうち18台がオンラインである必要があります(コンセンサス)。
  6. ブロックが確定し、誰でも検証できます。 rand_getTransaction がブロックを返した時点で、トランザクションは確定です。後から同期するノードは、署名を信頼するのではなく、すべての証明書とすべての証明を再検証します。

ロール

ロール役割証明を生成するか見えるもの実行方法
ウォレット送金とコールを構築、認可、送信し、自分のキーでチェーンをスキャンする認可の証明は常に生成。バンドル証明は、端末にメモリがある場合に生成自分のノートに関するすべてクライアントページのアプリ、または rand。チェーン20では、Rand Walletまたは rand v0.6.8以降
委任プルーバーペアリングされたウォレットのためにバンドル証明を生成する。すべての応答は、何かが送信される前にウォレットが検証するバンドル証明のみペアリングされたウォレットのviewing key。過去と将来を含む全履歴が見える。使うことはできないrand-prover run、または rand-node run --prover
validatorのプルーバープール独自のプルーバーを持たないウォレットのために、1つの名前と1つのキーの背後で、4台のホスト(validator 2台と、証明専用のマシン2台)が運用する委任プルーバー。手数料なしバンドル証明のみペアリングしたすべてのウォレットについて、他の委任プルーバーと同じprover.randprotocol.org、フィンガープリント RGTF-7HKJ-XZFV-GQ1J
RPCノード(オブザーバー)同期し、すべての証明を再検証し、JSON-RPCを提供し、検証済みのトランザクションをゴシップする。投票はしないしない公開フィールドのみ:コミットメント、ナリファイア、封印されたエンベロープ、証明rand-node run
validatorオブザーバーの機能すべてに加えて、自分のビューでの提案と、HotStuffでの投票を行うしない公開フィールドのみrand-node run --validator
aggregator確定したバンドル証明のウィンドウに対して1つの再帰証明を生成し、封印ブロックのために送信するする。ネットワーク上で最大の証明公開フィールドと証明のみrand-node aggregate --watch。aggregation セクションを持つチェーン上で実行

証明の生成とバリデーションは別々の仕事であり、validatorにプルーバー用のハードウェアは不要です。プールの4台のうち2台は、プルーバーをサービスとして併せて運用するvalidatorです。残りの2台は、validatorキーを持たない専用のプルーバーマシンです。プールの運用は、バリデーションの一部ではありません。各ロールの規模と、ティアごとに実測した証明のメモリ使用量は、validatorとaggregatorのハードウェアに記載しています。

各ロールが知り得ること

送金のプライバシーは、ネットワークを信頼することではなく、誰がどのキーを持つかで決まります。

  • validator、RPCノード、エクスプローラーに見えるのは、すべてのノードに見えるものです。コミットメント、ナリファイア、封印されたエンベロープ、手数料、証明です。金額、アセット、送信者、受信者は見えません。
  • 委任プルーバー(プールを含む) には、viewing keyが送られます。それを使えば、ペアリングされたウォレットの全履歴を読めます。ただし、spend keyに対する認可の証明はウォレットのマシン上で生成されるため、使うことはできません。プールとペアリングするということは、その運用者に履歴を見せることを選ぶということです。非公開にしたい場合は、自分の端末で証明を生成するか、自分のプルーバーを運用してください。
  • 委任プルーバーはウォレットを欺けません。 ウォレットは、受け取ったすべての証明からダイジェストを読み取り、サイズを確認し、ローカルで検証します。そのため、誤った証明がノードに届くことはありません。

集約:実装済み、未有効化

現在、すべてのブロックはすべての生の証明を含んでおり、送金1件あたり約2.85 MBです。そのため、20 MiBのブロックに入る送金は約7件です。ブロック集約は、fullnodeによるこの問題への答えです。aggregatorは、確定したブロックのウィンドウからバンドル証明を取得し(rand_getUnsealed)、それらすべてを検証する1つの再帰証明を生成して、送信します。それを含むブロックが、そのウィンドウを封印します。これにより、validatorはN個の証明の代わりに1つの集約を検証すればよくなり、ノードは対象となった生の証明を破棄できます。aggregatorはボンドを預け入れる許可不要のロールで、GPUクラスのマシンで動作し、対象となるバンドルの証明分の報酬と、新規発行されるRANDによるブロック補助金を受け取ります。

実装とマージは済んでいますが、有効にはなっていません。ジェネシスに aggregation セクションが必要ですが、チェーン20にはそれがないため、rand_status はすべての集約カウンターをゼロと報告します。有効化する前に、現在の制約セットのもとでバンドルの形状を再測定し、再帰検証器に対して偽造集約の演習を行う必要があります。また、認可を分離したチェーンでは、封印されるのはバンドル証明のみで、認可の証明は封印されません(証明)。

fullnode のコミット c0878c3f(チェーン 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。 コードとこのページが食い違う場合は、コードが正です。お知らせください。