Rand Protocol
مستندات
اکوسیستم

اعتبارسنج‌ها، تجمیع‌کننده‌ها و prover‌ها

چگونه نقش‌ها در Rand در کنار هم قرار می‌گیرند: کدام ماشین یک انتقال را اثبات می‌کند و با چه کلیدی، یک گره RPC پیش از انتشار انتقال در شبکه چه چیزی را بررسی می‌کند، اعتبارسنج‌ها چگونه بلوک‌ها را بدون اثبات هیچ چیزی مرتب، تأیید و نهایی می‌کنند، و یک تجمیع‌کننده پس از فعال‌شدن تجمیع، یک پنجره از اثبات‌ها را کجا مهر و موم می‌کند.

از این بخش برای دیدن این که چه کسی در هنگام عبور یک انتقال از Rand چه کاری انجام می‌دهد استفاده کنید. اثبات‌سازی پرهزینه و راستی‌آزمایی ارزان است، بنابراین کار در امتداد همین مرز تقسیم شده است. سمتِ فرستنده اثبات‌ها را می‌سازد. اعتبارسنج‌ها (validators) فقط آن‌ها را بررسی می‌کنند، مرتب می‌کنند و رأی می‌دهند. یک 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 امروز انجام می‌دهد؛ کادر و پیکان خط‌چین تجمیع بلاک است که ساخته و ادغام شده، اما در genesis مربوط به chain 20 نیست.

مسیر یک انتقال

  1. کیف پول انتقال را می‌سازد. نوت‌های ورودی خود را برمی‌گزیند، شاهدهای Merkle آن‌ها را دریافت می‌کند، چهار خروجی می‌سازد و هر کدام را در یک پاکتِ ML-KEM-768 مهروموم می‌کند. سپس binding تراکنش را محاسبه می‌کند، یعنی هشی از همه‌چیز به‌جز اثبات‌ها (Transactions).
  2. کیف پول مجوز را خودش اثبات می‌کند. این یک اثبات tier-10 روی کلید خرج و یک salt تازه است و چند ثانیه طول می‌کشد. این تنها اثباتی است که به کلید خرج دست می‌زند و همیشه روی دستگاه خودِ کیف پول ساخته می‌شود.
  3. اثبات بسته (bundle) جایی ساخته می‌شود که حافظه‌اش وجود دارد. این اثبات tier-14 مالکیت، عضویت، nullifierها و تراز را نشان می‌دهد و به حدود ۶ گیگابایت در اوج نیاز دارد. برنامهٔ دسکتاپ و تلفنی با حدود ۸ گیگابایت آن را خودشان می‌سازند. هر دستگاه کوچک‌تر کار را به یک prover جفت‌شده با خود می‌سپارد: proverی که خودتان اجرا می‌کنید، یا استخر validatorها در prover.randprotocol.org. به هر دو کلید مشاهده و salt فرستاده می‌شود، نه کلید خرج (Proofs).
  4. یک گره RPC آن را بررسی می‌کند. هر گره‌ای که کیف پول به آن ارسال کند، digest بسته را دوباره محاسبه می‌کند، هر دو اثبات را در برابر binding راستی‌آزمایی می‌کند، کارمزد را بررسی می‌کند و تنها پس از آن تراکنش را به همتایان خود gossip می‌کند (Proofs، Mempool).
  5. اعتبارسنج‌ها آن را مرتب و نهایی می‌کنند. رهبر view تراکنش‌هایی را که هنوز معتبرند برمی‌دارد، با بیشترین کارمزد به‌ازای هر KiB در ابتدا، و یک بلاک پیشنهاد می‌کند. هر اعتبارسنج همهٔ اثبات‌های درون آن را دوباره راستی‌آزمایی می‌کند و رأی می‌دهد. بلاک زمانی کامیت می‌شود که سه گواهی حدنصاب (quorum certificate) در view‌های متوالی روی آن زنجیر شوند، که به آنلاین بودن ۱۸ اعتبارسنج از ۲۶ اعتبارسنج chain 20 نیاز دارد (Consensus).
  6. بلاک نهایی است و همه می‌توانند آن را بررسی کنند. یک تراکنش وقتی نهایی است که rand_getTransaction یک بلاک برگرداند. گرهی که بعداً همگام شود، هر گواهی و هر اثبات را دوباره راستی‌آزمایی می‌کند و به امضاها اعتماد نمی‌کند.

نقش‌ها

rolewhat it doesproves?what it seesruns
کیف پولانتقال‌ها و فراخوانی‌ها را می‌سازد، مجاز می‌کند و ارسال می‌کند؛ زنجیر را با کلیدهای خودش اسکن می‌کندهمیشه اثبات مجوز؛ اثبات بسته وقتی دستگاه حافظهٔ کافی داردهمه‌چیز دربارهٔ نوت‌های خودشبرنامه‌های صفحهٔ Clients، یا rand؛ روی chain 20، Rand Wallet یا rand نسخهٔ v0.6.8 یا بالاتر
prover واگذارشدهاثبات بسته را برای کیف پولِ جفت‌شده با خود می‌سازد؛ هر پاسخ پیش از ارسال هر چیز توسط کیف پول بررسی می‌شودفقط اثبات‌های بستهکلید مشاهدهٔ کیف پولِ جفت‌شده: کل تاریخچهٔ آن، گذشته و آینده؛ نمی‌تواند خرج کندrand-prover run، یا rand-node run --prover
استخر prover اعتبارسنج‌هایک prover واگذارشده که چهار میزبان آن را اجرا می‌کنند، دو اعتبارسنج و دو ماشین که فقط اثبات می‌سازند، پشت یک نام و یک کلید، برای کیف پول‌هایی که proverی از خود ندارند؛ بدون کارمزدفقط اثبات‌های بستههمان چیزی که هر prover واگذارشده می‌بیند، برای هر کیف پولی که آن را جفت کندprover.randprotocol.org، اثر انگشت RGTF-7HKJ-XZFV-GQ1J
گره RPC (ناظر)همگام می‌شود، هر اثبات را دوباره راستی‌آزمایی می‌کند، JSON-RPC ارائه می‌دهد، تراکنش‌های راستی‌آزمایی‌شده را gossip می‌کند؛ بدون رأیخیرفقط فیلدهای عمومی: commitmentها، nullifierها، پاکت‌های مهروموم‌شده، اثبات‌هاrand-node run
اعتبارسنجهر کاری که ناظر می‌کند، به‌علاوهٔ پیشنهاد بلاک در viewهای خود و رأی دادن در HotStuffخیرفقط فیلدهای عمومیrand-node run --validator
aggregatorیک اثبات بازگشتی روی پنجره‌ای از اثبات‌های بستهٔ نهایی‌شده می‌سازد و آن را برای یک بلاک مهرکننده ارسال می‌کندبله، بزرگ‌ترین اثبات‌های شبکهفقط فیلدهای عمومی و اثبات‌هاrand-node aggregate --watch، روی زنجیری که بخش aggregation دارد

اثبات‌سازی و اعتبارسنجی دو کار جداگانه‌اند و اعتبارسنج به سخت‌افزار prover نیاز ندارد. دو عضو از چهار عضو استخر اعتبارسنج‌هایی هستند که یک prover را هم به‌عنوان سرویس اجرا می‌کنند؛ دو عضو دیگر ماشین‌های اختصاصی اثبات‌سازی‌اند که کلید اعتبارسنج ندارند. اجرای استخر جزئی از اعتبارسنجی نیست. اندازه‌های لازم برای هر نقش و حافظهٔ اثبات‌سازیِ اندازه‌گیری‌شده برای هر tier در Validator and aggregator hardware آمده است.

هر نقش چه چیزی می‌تواند بفهمد

حریم خصوصی یک انتقال به این بستگی دارد که کدام کلید دست چه کسی است، نه به اعتماد به شبکه:

  • اعتبارسنج‌ها، گره‌های RPC و explorer همان چیزی را می‌بینند که هر گرهی می‌بیند: commitmentها، nullifierها، پاکت‌های مهروموم‌شده، کارمزد و اثبات‌ها. نه مبلغ را، نه دارایی را، نه فرستنده را و نه گیرنده را.
  • به prover واگذارشده، از جمله استخر، کلید مشاهده فرستاده می‌شود. با آن می‌تواند کل تاریخچهٔ کیف پولِ جفت‌شده را بخواند. هرگز نمی‌تواند خرج کند، زیرا اثبات مجوز روی کلید خرج بر روی دستگاه کیف پول ساخته می‌شود. جفت کردن استخر یعنی انتخاب این که آن تاریخچه به اپراتورهای آن نشان داده شود. اگر می‌خواهید خصوصی بماند، روی دستگاه خودتان اثبات بسازید یا proverِ خودتان را اجرا کنید.
  • prover واگذارشده نمی‌تواند کیف پول را فریب دهد. کیف پول digest را از هر اثباتی که به آن داده می‌شود می‌خواند، اندازه را بررسی می‌کند و آن را به‌صورت محلی راستی‌آزمایی می‌کند، بنابراین اثبات نادرست هرگز به گره نمی‌رسد.

تجمیع: ساخته شده، روشن نیست

امروز هر بلاک همهٔ اثبات‌های خام را حمل می‌کند، حدود ۲٫۸۵ مگابایت برای یک انتقال، بنابراین یک بلاک ۲۰ MiB حدود هفت انتقال را در خود جا می‌دهد. تجمیع بلاک پاسخ fullnode به این مسئله است. یک aggregator اثبات‌های بستهٔ پنجره‌ای از بلاک‌های نهایی‌شده را (rand_getUnsealed) برمی‌دارد، یک اثبات بازگشتی می‌سازد که همهٔ آن‌ها را راستی‌آزمایی می‌کند و آن را ارسال می‌کند. بلاکی که آن را شامل شود پنجره را مهر می‌کند. سپس اعتبارسنج‌ها به‌جای N اثبات یک اثبات تجمیعی را راستی‌آزمایی می‌کنند و گره‌ها می‌توانند اثبات‌های خامِ پوشش‌داده‌شده را کنار بگذارند. aggregatorها وثیقه‌گذارند و بدون نیاز به مجوزند، روی ماشین‌های هم‌رده GPU اجرا می‌شوند و سهم اثبات‌سازیِ بسته‌های پوشش‌داده‌شده را به‌علاوهٔ یارانهٔ بلاک به RAND جدید دریافت می‌کنند.

ساخته و ادغام شده، اما فعال نیست. به یک بخش aggregation در genesis نیاز دارد و chain 20 هیچ‌کدام ندارد، بنابراین rand_status همهٔ شمارنده‌های تجمیع را صفر گزارش می‌کند. پیش از آن که بتوان آن را روشن کرد، شکل بستهٔ آن باید زیر مجموعهٔ محدودیت‌های فعلی دوباره اندازه‌گیری شود و باید یک تمرین aggregate جعلی در برابر راستی‌آزمای بازگشتی اجرا شود. روی زنجیری با مجوز تفکیک‌شده نیز فقط اثبات‌های بسته را مهر می‌کند، نه اثبات‌های مجوز را (Proofs).

آخرین بار با کامیت c0878c3f از fullnode (زنجیرهٔ 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 بررسی شد. هرجا کد و این صفحه با هم اختلاف دارند، حق با کد است؛ به ما اطلاع دهید.