Rand Protocol
Документация
Экосистема

Валидаторы, агрегаторы и провайдеры доказательств

Как роли в Rand соотносятся друг с другом: какая машина доказывает перевод и с каким ключом, что проверяет RPC-узел, прежде чем распространить перевод по gossip-сети, как валидаторы упорядочивают, проверяют и финализируют блоки, ничего не доказывая, и где агрегатор запечатает окно доказательств после включения агрегации.

Используйте эту страницу, чтобы увидеть, кто что делает, когда перевод проходит через Rand. Доказательство стоит дорого, а проверка дёшева, поэтому работа разделена именно по этой линии. Доказательства строит сторона отправителя. Валидаторы только проверяют их, упорядочивают и голосуют. Агрегатор, если его включить, сворачивал бы множество доказательств в одно. На схеме показан путь одного перевода от кошелька до финального блока; следующие разделы разбирают каждую роль по очереди.

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 делает сегодня; пунктирные рамка и стрелка — агрегация блоков: она реализована и влита в основную ветку, но не входит в genesis chain 20.

Путь одного перевода

  1. Кошелёк строит перевод. Он выбирает входные ноты, получает их свидетельства Меркла, строит четыре выхода и запечатывает каждый в конверт ML-KEM-768. Затем он вычисляет привязку транзакции (binding) — хеш всего, кроме доказательств (Transactions).
  2. Кошелёк сам доказывает авторизацию. Это доказательство уровня 10 над ключом траты и свежей солью, занимающее несколько секунд. Это единственное доказательство, которое затрагивает ключ траты, и оно всегда строится на собственной машине кошелька.
  3. Доказательство пакета строится там, где хватает памяти. Это доказательство уровня 14 подтверждает владение, членство, нуллификаторы и баланс; пиковое потребление — около 6 ГБ. Настольное приложение и телефон с примерно 8 ГБ строят его сами. Всё, что меньше, передаёт задачу связанному с ним провеверу: либо вашему собственному, либо пулу валидаторов по адресу prover.randprotocol.org. В любой из них отправляются ключ просмотра и соль, но никогда не ключ траты (Proofs).
  4. Проверяет RPC-узел. Любой узел, к которому обращается кошелёк, пересчитывает дайджест пакета, проверяет оба доказательства относительно привязки, проверяет комиссию и только после этого рассылает транзакцию своим пирам (Proofs, Mempool).
  5. Валидаторы упорядочивают и финализируют её. Лидер вида (view) берёт транзакции, которые всё ещё применимы, начиная с лучшей комиссии за КиБ, и предлагает блок. Каждый валидатор заново проверяет каждое доказательство в нём и голосует. Блок фиксируется, когда на нём в последовательных видах выстраиваются три кворумных сертификата; для этого нужны 18 из 26 валидаторов chain 20, находящихся онлайн (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

Доказательство и валидация — отдельные задачи, и валидатору не нужно оборудование для доказательства. Два из четырёх участников пула — валидаторы, которые дополнительно запускают провер как сервис; остальные два — выделенные машины для доказательства, не имеющие ключа валидатора. Запуск пула не входит в валидацию. Требования для каждой роли и измеренная память доказательства по уровням приведены на странице Validator and aggregator hardware.

Что может узнать каждая роль

Приватность перевода зависит от того, у кого какие ключи, а не от доверия к сети:

  • Валидаторы, RPC-узлы и обозреватель видят то, что видит каждый узел: обязательства, нуллификаторы, запечатанные конверты, комиссию и доказательства. Не сумму, не актив, не отправителя и не получателя.
  • Делегированный провер, включая пул, получает ключ просмотра. С его помощью он может прочитать всю историю связанного кошелька. Потратить средства он не может никогда, потому что доказательство авторизации над ключом траты строится на машине кошелька. Связать кошелёк с пулом — значит решить показать эту историю его операторам. Если вам нужна приватность, стройте доказательства на своём устройстве или запустите собственный провер.
  • Делегированный провер не может обмануть кошелёк. Кошелёк считывает дайджест с каждого полученного доказательства, проверяет размер и верифицирует его локально, так что неверное доказательство никогда не доходит до узла.

Агрегация: реализована, но не включена

Сегодня каждый блок несёт каждое сырое доказательство — около 2,85 МБ на перевод, так что блок в 20 MiB вмещает около семи переводов. Агрегация блоков — ответ fullnode на это. Агрегатор берёт доказательства пакетов из окна финализированных блоков (rand_getUnsealed), строит одно рекурсивное доказательство, проверяющее их все, и отправляет его. Блок, который его включает, запечатывает окно. После этого валидаторы проверяют один агрегат вместо N доказательств, а узлы могут отбросить покрытые сырые доказательства. Агрегаторы вносят залог и работают без разрешений, запускаются на машинах класса GPU, и им платят долю за доказательство покрытых пакетов плюс субсидию блока в новых RAND.

Она реализована и влита, но не активна. Для неё нужен раздел aggregation в genesis, а в chain 20 его нет, поэтому rand_status показывает все счётчики агрегации нулевыми. Прежде чем её можно будет включить, форму её пакета нужно заново измерить при текущем наборе ограничений, а против рекурсивного верификатора нужно провести проверку на поддельный агрегат. В цепочке с раздельной авторизацией она запечатывала бы также только доказательства пакетов, а не доказательства авторизации (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. Если код и эта страница расходятся, прав код; сообщите нам.