Rand Protocol
مستندات
توسعه‌دهندگان

توسعه‌دهندگان

پنج مخزن، پشته فناوری، Rand zkVM و نقاط عطف آن، مراحل استخر محافظت‌شده، کارهای v0.5 و نسخه‌های پس از آن تا v0.6.8 روی chain 20، ساختار سورس fullnode، آنچه مشخص شده اما عرضه نشده است، و نحوه ساخت، آزمون و مشارکت.

Rand متن‌باز است. گره کامل، کاوشگر، پل، پژوهش اثبات و کلاینت‌های کیف پول هر یک در مخزن جداگانهٔ خود در GitHub قرار دارند. کد را بخوانید، آزمون‌ها را اجرا کنید، وصله بفرستید. این صفحه نقشهٔ راه است: هر مؤلفه کجاست، با چه ساخته شده، سیستم اثبات تا کجا پیش رفته و امروز کجا متوقف می‌شود.

مخزن‌ها

مخزنمحتوازبان
randprotocol/fullnodeگره کامل مرجع و کیف پول: HotStuff BFT زنجیره‌ای، شبکه‌سازی libp2p، استخر نوت‌های محافظت‌شدهٔ RAND، تأییدکنندهٔ اثبات zkVM، JSON-RPC، رابط خط فرمان کیف پول rand و اثبات‌کنندهٔ تفویضی rand-prover.Rust
randprotocol/randscan.orgکاوشگر بلاک پشت randscan.org: یک نمایه‌ساز axum با API از نوع REST و WebSocket روی PostgreSQL، و یک رابط کاربری Next.js.Rust · TypeScript
randprotocol/bridgeپل نگهبان برای USDT و USDC از Ethereum، Binance Smart Chain، Tron و Solana: قراردادهای امانت‌داری، قالب مشترک گواهی و بردارهای آزمون آن.Solidity · Rust
randprotocol/zkp-circuitsراهنمای گام‌به‌گام سیستم‌های اثبات (Groth16 در برابر STARK، استخر محافظت‌شده، امضاهای حلقه‌ای، میکسر)، research/، zkVM مرجع Rand، recursion/، ماشین مجازی بازگشتی، زنجیرهٔ ابزار مهمان و دو مترجم، و هسته‌های CUDA. ساخت fullnode نیاز دارد این مخزن در کنار آن با نام circuits/ کلون شده باشد.Rust
randprotocol/clientsکلاینت‌های کیف پول: دسکتاپ، وب، iOS و Android.Rust · Swift · Java · JavaScript

پشته

سراسر Rust. Rand زنجیرهٔ مستقل خود را دارد: یک گره HotStuff BFT با لایهٔ شایعه‌پراکنی libp2p، یک استخر نوت کاملاً محافظت‌شده به‌عنوان دفتر کل، امضاها و رمزنگاری نوت‌های مقاوم در برابر کوانتوم، و zkVM مربوط به Rand برای محاسبات محرمانه، همه در مخزن fullnode. خود سیستم اثبات بخشی است که در حال پژوهش فعال است؛ در ادامه آمده است.

لایهآنچه اجرا می‌شود
اجماعHotStuff BFT زنجیره‌ای، حدنصاب‌های وزن‌دار بر اساس سهم، تأیید سه‌زنجیره‌ای
شبکه‌سازیlibp2p: TCP، Noise، Yamux، gossipsub، Kademlia، و mDNS در شبکه‌های محلی
دفتر کلاستخر نوت محافظت‌شده: درخت Poseidon2 با عمق ۳۲، مجموعهٔ ابطال‌گر، یک بستهٔ دارایی پنهان ۴ ورودی و ۴ خروجی در هر تراکنش (۲ ورودی و ۲ خروجی تا زنجیرهٔ ۱۳)؛ از زنجیرهٔ ۱۷ یک اثبات احراز هویت دوم از رده ۱۰ در کنار اثبات بسته (مجوز دو‌بخشی)؛ از زنجیرهٔ ۱۸ پاکت‌های نوت ۱٬۸۶۰ بایتی با یادداشت رمزنگاری‌شده
توکن‌هاRPL: توکن یک ورودی ثبت‌نام در دفتر کل با شناسهٔ rpl1… است، نه یک قرارداد؛ به‌صورت نوت در همان استخر جابه‌جا می‌شود
سهام‌گذاریثبت عمومی اعتبارسنج‌ها: وثیقه از یک بسته، آزادسازی وثیقه در دو دوره، دوره‌های ۱٬۰۰۰ بلوکی؛ از زنجیرهٔ ۲۰ اعتبارسنج جدید با رأی مجموعه پذیرفته می‌شود
محاسبات محرمانهzkVM مربوط به Rand: RV32IM زیر یک STARK دسته‌ای Plonky3، FRI با پنهان‌سازی ZK، مجموعهٔ قیود ۸؛ از زنجیرهٔ ۱۸ هر فراخوانی یک سقف گاز اعلام می‌کند که مدار آن را اِعمال می‌کند و به ازای هر گاز و هر KiB هزینه پرداخت می‌شود؛ از زنجیرهٔ ۲۰ یک برنامه حالت خود را در سلول‌ها نگه می‌دارد و ارزش را در یک خزانه (RPL-2) در اختیار دارد
رمزنگاریDilithium2 · ML-KEM-768 · Poseidon2 · BLAKE3 · ChaCha20-Poly1305
ذخیره‌سازییک RocksDB برای هر گره، کامیت‌های fsync‌شده، بررسی یکپارچگی هنگام راه‌اندازی؛ هرس اختیاری تاریخچه (--prune-history 24h) و گره‌های آرشیو که همه‌چیز را نگه می‌دارند
پلقفل‌های گواهی‌شده توسط نگهبانان روی چهار زنجیره، با حدنصاب هم‌امضایی Dilithium2 روی هر mint؛ دارایی پل‌شده یک نوت در همان استخر است
زبانسراسر Rust؛ Solidity برای پل، TypeScript برای کاوشگر

یک رابطه برای هر برنامه

رابطهٔ اجرای جهانی در white paper یعنی R_exec به‌صورت کد وجود دارد: rand_zkvm، یک ماشین RV32IM که زیر یک STARK دسته‌ای واحد روی Plonky3 و بر میدان Goldilocks اثبات می‌شود. این اثبات می‌کند که یک ردگیری، برنامهٔ hc را روی ورودی‌هایی که با H_IN نمک‌دار متعهد شده‌اند تا این خروجی‌های عمومی اجرا کرده است، و هیچ چیزی دربارهٔ برنامه هرگز پارامتر تأییدکننده نیست. انتشار یک برنامهٔ محرمانه یعنی ثبت یک هش، نه ساخت یک مدار اختصاصی.

سیستم اثبات شفاف است، بدون تنظیم اولیهٔ مورد اعتماد و بدون منحنی pairing، و فرض آن یک تابع هش مقاوم در برابر برخورد است. انتظار می‌رود هر مؤلفهٔ دیگری که با اثبات‌ها سروکار دارد به جای ساختن نسخهٔ خودش، به این crate همگرا شود. این crate در zkp-circuits/research قرار دارد و در مجموعهٔ قیود ۸ در fullnode گنجانده شده است (circuits aeacf31، fullnode نسخه‌های v0.6.7 و v0.6.8). جدول‌ها و اندازه‌گیری‌های زیر مجموعهٔ قیود ۵ (نقطهٔ عطف M4.2) را توصیف می‌کنند، مگر آنکه سطری مجموعه‌ای متأخرتر را نام ببرد؛ آن‌ها از docs/zkvm.md، docs/zkvm-milestones.md و docs/confidential.md در fullnode تا تاریخ 2026-09-13 گرفته شده‌اند، و اندازه‌گیری‌ها همان‌طور که روی یک لپ‌تاپ Apple Silicon سنجیده شده‌اند آمده‌اند، نه به‌عنوان هدف.

هشت جدول روی باس‌های نام‌دار، و نهمی در صورت نیاز

یک تعهد، یک گشایش FRI. جدول‌ها هرگز یکدیگر را فراخوانی نمی‌کنند؛ آن‌ها حقایق را روی باس‌های LogUp نام‌دار مبادله می‌کنند (PROGRAM، PROGRAM_WORD، MEMORY، ALU، POSEIDON2، INPUT_DIGEST، INPUT_READ، KECCAK و جستجوهای بازه و نیبل) و تأییدکننده بررسی می‌کند که هر باس به‌صورت سراسری متوازن باشد. بیشینهٔ درجهٔ قید هر جدول با یک آزمون زیر سقف ۸ که ضریب انبساط FRI اجازه می‌دهد ثابت نگه داشته شده است.

جدولنوعنقش
programشاهدکلمات دستورالعمل خام که از M3.4 در مدار رمزگشایی می‌شوند و توسط cpu در hc هضم می‌شوند
cpuشاهدیک سطر برای هر چرخه، به‌علاوهٔ سطرهای هضم که برنامه را در hc و ورودی‌های نمک‌دار را در H_IN جذب می‌کنند
memoryشاهدثبات‌ها و RAM در یک جدول، مرتب‌شده بر اساس (space, addr, ts)؛ دسترسی زیرکلمه از M2.5
aluشاهدحساب بایت‌-اندامی، شیفت‌ها، مقایسه‌ها؛ ضرب و تقسیم RV32M از M2.6
rangeاز پیش پردازش‌شده · ۲۵۶ سطربررسی‌های بازه و جستجوی توان‌های دو
nibbleاز پیش پردازش‌شده · ۲۵۶ سطرAND، OR و XOR چهار‌بیتی؛ هر برخورد خود یک بررسی بازه روی هر دو operand است
poseidon2شاهدیک سطر برای هر دور جایگشت در بلوک‌های ۳۲ سطری؛ باس POSEIDON2 و هر دو هضم را سرویس می‌دهد
inputشاهد · از M4.1یک سطر برای هر کلمهٔ ورودی خصوصی؛ INPUT_DIGEST و INPUT_READ را سرویس می‌دهد، بنابراین یک خواندن نمی‌تواند از تعهد بگریزد
keccakشاهد · اختیاریKeccak-f[1600] در بلوک‌های ۳۲ سطری، فقط در اثباتی حاضر است که مهمان آن KECCAK را فراخوانده باشد (M4.2)

از آن زمان سه مجموعهٔ قیود دیگر اضافه شده است. مجموعهٔ ۶ یک جدول اجباری public برای ورودی عمومی زمان استقرار یک برنامه افزود که به هضم بدون نمک H_PUB گره خورده است، و یک جدول اختیاری sha256 در کنار keccak. مجموعهٔ ۷ (زنجیرهٔ ۱۶) هر پایانهٔ LogUp را روی یک باس جدید BLIND کور می‌کند و هر جدول اعلام‌شده را روی کف 2⁷ سطر می‌نشاند، و فراخوانی سیستمی POSEIDON2_LEN با طول مقید را اضافه می‌کند. مجموعهٔ ۸ (زنجیرهٔ ۱۸) یک ستون GAS به جدول cpu و یک مقدار عمومی، یعنی GAS_LIMIT اعلام‌شده، می‌افزاید.

آنچه یک اثبات آشکار می‌کند

عمومی: هش کد hc (هشت کلمهٔ هضم درون مدار)، تعهد ورودی نمک‌دار H_IN (هشت کلمه)، رده گاز، و هشت کلمهٔ خروجی. از مجموعهٔ قیود ۶ همچنین H_PUB، هضم ورودی عمومی، و از مجموعهٔ قیود ۸ سقف گاز اعلام‌شده. سرآیند اثبات ارتفاع جدول‌های Keccak و SHA-256 را اعلام می‌کند، بنابراین نشان می‌دهد که آیا یک فراخوانی هش کرده است و، بالاتر از کف 2⁷، تقریباً چقدر.

پنهان: ورودی‌های خصوصی (H_IN نمک‌دار است، پس هم پنهان‌کننده است و هم الزام‌آور)؛ هر کلمهٔ دستورالعمل، چون تأییدکننده hc را بررسی می‌کند و هرگز برنامه را نه؛ هر مقدار ثبات و حافظه؛ هر شاخه‌ای که پیموده شده؛ تعداد دقیق چرخه‌ها و گاز دقیق مصرف‌شده؛ و اینکه کدام فراخوانی‌های سیستمی اجرا شده‌اند، جز آنچه ارتفاع دو جدول هش نشان می‌دهد.

رده برای هر اثبات عمومی است، چون اندازهٔ یک STARK از پیش ارتفاع ردگیری آن را آشکار می‌کند؛ پنهان کردن شاخص چیزی نصیب ما نمی‌کرد. hc الزام‌آور است، نه پنهان‌کننده: به امروز کجا متوقف می‌شود نگاه کنید.

اندازه‌گیری‌شده، در مجموعهٔ قیود ۵

FRI۸۰ پرس‌وجو · ۲۰ بیت PoW · ضریب انبساط ۸ · arity برابر ۸ · ZK روشن؛ ۲۶۰ بیت حدسی، حدود ۸۶ اثبات‌شده. تنظیم مجدد ۲۷ پرس‌وجویی M2 با ممیزی 2026-09-12 بازگردانده شد
فراخوانیprivate_payment در رده ۱۰: حدود ۷ ثانیه برای اثبات، حدود ۱٫۲ MB اثبات با ۸۰ پرس‌وجو (۴۳۵ KB با ۲۷)، پایین‌تر از ۲۱٫۶ ثانیه و ۸۹۲ KB در M1
انتقالمهمان بستهٔ ۲ ورودی و ۲ خروجی در زنجیره‌ها تا ۱۳: ۳٬۸۱۱ کلمه، حدود ۹٬۱۶۰ چرخه، رده ۱۴؛ حدود ۱۰۰ ثانیه برای اثبات، حدود ۱٫۳ MB اثبات. مهمان دارایی پنهان ۴ ورودی و ۴ خروجی زنجیرهٔ ۱۴ به همان رده پین شده است: حدود ۱۰۰ ثانیه، حدود ۱٫۴۲ MB
تأییدحدود ۱۶ ms با کلید گرم؛ نخستین تأیید در یک کلید تازهٔ (رده، ارتفاع‌ها) حدود ۲۳۰ ms
بلوکبودجهٔ ۴ MiB و سقف اثبات ۲ MiB: حدود سه انتقال محافظت‌شده در هر بلوک با ۸۰ پرس‌وجو

لپ‌تاپ Apple Silicon، ساخت release. تقسیم جدول بایت در M2.3 همان چیزی است که زمان اثبات را جابه‌جا کرد؛ پروفایل ۸۰ پرس‌وجویی همان چیزی است که اندازهٔ اثبات را دوباره بالا برد. کلید تأییدکننده مستقل از محتوای برنامه است و بر اساس رده و ارتفاع‌های برنامه، ورودی و keccak که اثبات اعلام کرده کلیدگذاری می‌شود، بنابراین یک گره یک کلید را گرم می‌کند و دوباره به کار می‌برد.

پس از مجموعه‌های بعدی، اندازه‌ها تغییر کردند. تحت مجموعهٔ قیود 7، اثبات رده 10 در پروفایل تولیدی 1,367,688 بایت است و اثبات رده 10 حاوی Keccak برابر 3,283,898 بایت (اندازه‌گیری‌شده در 2026-09-28). از chain 17 به بعد، هر انتقال دو اثبات دارد: اثبات بستهٔ رده 14 با حدود 1.49 MB، و اثبات احراز رده 10 با حدود 1.37 MB که اثبات آن حدود 7 s طول می‌کشد. جنسیس chain 20 بلوک 20 MiB و سقف اثبات 4 MiB را تعیین می‌کند و هیچ فراخوانی نمی‌تواند از رده 14 فراتر رود.

سه هدف، یک مدار

فقط RISC-V به‌صورت بومی اجرا می‌شود. برنامه‌های Solidity و Solana یا روی یک guest مفسر در همان رابطه اجرا می‌شوند و بایت‌کد آن‌ها ورودی است، یا خارج از زنجیره به برنامه‌های RISC-V ترجمه می‌شوند که خروجی‌شان کلمه‌به‌کلمه با خروجی مفسر برابر است. opcodeهای پرهزینه جدول‌های هم‌پردازندهٔ اختصاصی می‌خواهند، نه شبیه‌سازی بیت‌به‌بیت.

هدفمسیرهم‌پردازنده‌ها
RISC-Vبومی. RV32IM، یا دست‌اسمبل‌شده با asm.rs یا Rust از نوع no_std که برای riscv32im-unknown-none-elf کامپایل شده و از M4.1 به بعد به‌صورت باینری تخت بارگذاری می‌شود، یا ساخته‌شده از Rust یا C توسط rand-guest در کانتینر تصویر (استقرار یک برنامهٔ Rust)Poseidon2 (و از مجموعهٔ 7 POSEIDON2_LEN)؛ Keccak-f[1600] از M4.2؛ SHA-256 از مجموعهٔ 6
Soliditysolc --bin-runtime برای تولید بایت‌کد EVM، سپس یا guest مفسر evm.bin (بایت‌کد به‌عنوان ورودی) یا evm2rv که بایت‌کد را به C ترجمه می‌کند و rand-guest آن را به تصویر RV32IM با همان خروجی‌ها می‌سازد (مترجم Ethereum)Keccak-256 (جدول همراه است)، حساب پیمانه‌ای 256 بیتی، ECRECOVER، فراخوانی‌های سیستمی شاهد Merkle برای storage
Solana / SVMیک ELF از نوع sBPF، که guest مفسر sbpf.bin اجرایش می‌کند یا sbpf2rv آن را به تصویر RV32IM با همان خروجی‌ها ترجمه می‌کند (مترجم Solana)SHA-256، تأیید Ed25519، ضرب 64 بیتی

نقاط عطف

نقطهٔ عطف 1 ماشین همه‌منظوره را اثبات کرد. نقطهٔ عطف 3 آن را به یک استخر محافظت‌شده تبدیل کرد: انتقالی با اثبات عضویت درون مدار تحت R_exec اثبات می‌شود و تأییدکننده hc را بدون دیدن حتی یک کلمهٔ برنامه بررسی می‌کند. نقطهٔ عطف 4 دربارهٔ سازگاری است: بارگذار، تعهد ورودی و جدول Keccak آن به‌صورت مجموعه‌های قیود 4 و 5 عرضه شدند و جدول SHA-256 با مجموعهٔ 6. guestهای مفسر EVM و sBPF، زنجیرهٔ ابزار rand-guest و دو مترجم ساخته شده‌اند. انتقال ERC-20 روی یک ماشین 128 GB اثبات شده است؛ اثبات SPL Token در رده 20 هنوز انجام نشده. نقطهٔ عطف 5 ماشین بازگشتی پشت تجمیع بلوک‌هاست که ساخته شده و روی همهٔ زنجیرها خاموش است. مجموعه‌های قیود 7 و 8 پس از بازبینی‌های سپتامبر و مدل gas آمدند.

شناسهدامنهمعیار خروجوضعیت
M1پنج جدول، ISA پایهٔ RV32I، HALT/WRITE_OUTPUT/READ_INPUT، ZK روشن، پدینگ رده، اسمبلر، شبیه‌سازfib، memcpy، bubble_sort، alu_mix و balance_check اثبات و تأیید می‌شوند؛ هر آزمون تقلب رد می‌شودانجام شد. 44 آزمون؛ یک بازبینی بعدی پنج شکاف درستی (soundness) را در یک موج بست
M1.5کلیدهای مشاهده: یک guest انتقال محافظت‌شدهٔ یک‌به‌یک، پاکت‌های یادداشت زیر ML-KEM-768 و ChaCha20-Poly1305، افشای محدود به طرف و به تراکنش، یک دفتر کل شبیه‌سازی‌شدهیک انتقال در رده 12 اثبات می‌شود و دفتر کل آن را می‌پذیرد؛ هر دامنهٔ افشا دقیقاً ردیف‌های خودش را باز می‌کند؛ یک کلید مشاهده نمی‌تواند خرج کندانجام شد. در node گنجانده نشده است
M2حافظهٔ نهان کلید تأییدکننده، تنظیم مجدد FRI روی هدف حدسی 100 بیتی، شکافتن جدول بایت به جدول بازه و جدول نیبل، بارها و ذخیره‌های زیرکلمه‌ای، افزونهٔ RV32Mمحدودتر از برنامه تحویل شد: بارگذار باینری تخت و اتصال محکم‌تر READ_INPUT به M4.1 منتقل شدانجام شد. fib در رده 10: اثبات از 892 KB به 268 KB، زمان اثبات از 21.6 s به 3.1 s، نخستین تأیید از 2.17 s به 16 ms. مجموعهٔ قیود 3، یک هاردفورک
M3تراشهٔ Poseidon2 و فراخوانی سیستمی؛ NOTE_COMMIT، NULLIFY و MERKLE_VERIFY به‌صورت روال‌های guest روی آن؛ انتقال تعهد خرج‌شده از خروجی عمومی؛ جدول برنامه به‌عنوان شاهد با hc که درون مدار هضم می‌شودرابطهٔ انتقال تحت R_exec با عضویت درون مدار اثبات می‌شود و verify(hc, proof) هرگز کلمه‌ای از برنامه نمی‌بیندانجام شد. guest انتقال: 4,554 دستور، 4,903 چرخه، رده 14. پیمایش Merkle اکنون یک حلقهٔ شمارشی است، پس اندازهٔ برنامه دیگر با عمق درخت رشد نمی‌کند
CUDAبک‌اند اثبات‌کنندهٔ GPU: NTTها و تعهدهای Merkle با Poseidon2 به‌صورت کرنل‌های CUDA پشت traitهای Dft و Mmcs در Plonky3؛ rand send، call و deploy گزینهٔ --cuda را می‌پذیرندهر guest از طریق دوقلوی مرجع Rust خالص و درایور mock اثبات و تأیید می‌شود؛ تأییدکنندهٔ CPU بک‌اندها را از هم تشخیص نمی‌دهدانجام شد؛ نخستین اجرا روی سخت‌افزار 2026-09-28. روی NVIDIA H100 کرنل‌ها برای sm_80 و sm_90 به PTX ساخته می‌شوند و با مرجع CPU و Plonky3 مطابقت دارند. اندازه‌گیری مجدد تولیدی روی یک گره GPU ناوگان هنوز مانده است. یک فراخوانی CUDA نمی‌تواند پاکت ورودی را مهر و موم کند، چون salt هرگز از اثبات‌کننده خارج نمی‌شود
M4.1بارگذار باینری تخت و نخستین guestهای no_std Rust کامپایل‌شده برای riscv32im-unknown-none-elf؛ تعهد ورودی salt‌دار H_IN با جدول ورودی مخصوص خودش، تا READ_INPUT یک جستجو در برابر بردار متعهد باشدیک guest ساخته‌شده با زنجیرهٔ ابزار استاندارد بارگذاری، اثبات و تأیید می‌شود؛ دو خواندن از یک اندیس ورودی هم‌خوان‌اند و ورودی‌ها به H_IN متصل‌اندانجام شد. در 2026-09-11 به‌صورت مجموعهٔ قیود 4 فرود آمد: 26 مقدار عمومی، هشت جدول، یک هاردفورک
M4.2جدول هم‌پردازندهٔ Keccak-f[1600] دست‌نویس و فراخوانی سیستمی KECCAK، که فقط در صورت استفادهٔ guest در اثبات حاضر است؛ ارتفاع حافظهٔ اعلام‌شده در اثبات؛ کلید تأییدکننده‌ای که بر چهار مؤلفه کلید می‌خورد؛ FRI بازگشته به 80 پرس‌وجو پس از ممیزی 2026-09-12keccak256 به‌عنوان guest کامپایل‌شده اثبات می‌شود و اثبات بدون این جدول از نظر شکل با اثباتی از M4.1 بایت‌به‌بایت یکسان استانجام شد. در 2026-09-12 به‌صورت مجموعهٔ قیود 5 فرود آمد، یک هاردفورک. یک اثبات حاوی Keccak حدود 1.9 MB بزرگ‌تر است و از سقف پیش‌فرض 2 MiB فراتر می‌رود. زنجیری که جنسیسش سقف را بالا ببرد آن را می‌پذیرد: chain 13 (8 MiB) در 2026-09-19 یک فراخوانی حاوی Keccak با 3.41 MB را پذیرفت و سقف chain 20 برابر 4 MiB است
M4.3 · M4.4guestهای مفسر EVM و sBPF کامپایل‌شده به RV32IM با بایت‌کد خارجی به‌عنوان ورودی؛ یک جدول هم‌پردازندهٔ SHA-256 در کنار Keccak؛ سپس زنجیرهٔ ابزار rand-guest و مترجم‌های evm2rv و sbpf2rv (2026-09-18)یک انتقال ERC-20 و یک SPL Transfer هر یک تحت R_exec اثبات می‌شوندساخته شده؛ یک اثبات خروج انجام شده است. evm.bin (18,009 کلمه) و sbpf.bin (8,317) بردارهای ERC-20 و SPL Token را اجرا می‌کنند و تصویرهای ترجمه‌شده کلمه‌به‌کلمه با آن‌ها یکسان‌اند. transfer در ERC-20 در رده 18 روی یک droplet با 128 GB در 2026-09-19 اثبات شد (اوج 85.0 GB، 53.8 min)؛ اثبات SPL Token در رده 20 با برون‌یابی حدود 330 GB برآورد شده و انجام نشده است (حافظهٔ اثبات). هیچ‌کدام روی زنجیره قابل فراخوانی نیست: فراخوانی در رده 14 سقف دارد
M5ماشین بازگشتی (rVM): ماشین بومی Goldilocks با 24 دستور که برنامه‌هایش اثبات‌های zkVM در Rand را تأیید می‌کنند، یک برنامهٔ تجمیع N-عمومی برای هر شکل اثبات داخلی، تفکیک بک‌اند CPU و CUDA، و یک خودتأییدکننده (M5.1 تا M5.4، 2026-09-13 تا 2026-09-16)50 اثبات بستهٔ تولیدی واقعی پذیرفته شد و 50 اثبات دست‌کاری‌شده در مرحلهٔ نام‌برده رد شد؛ یک اثبات rVM از برنامهٔ تأییدکننده روی یک اثبات بستهٔ واقعی به‌صورت بومی تأیید می‌شود (پروفایل آزمون)ساخته شده؛ اثبات‌های تولیدی ماشین بزرگ می‌خواهند. به‌صورت crates/randprotocol-rvm vendored شده است. تجمیع سمت زنجیره ادغام شده و روی همهٔ زنجیرها خاموش است (در ادامه)
set 7هر پایانهٔ LogUp کورشده؛ ارتفاع هر جدول اعلام‌شده حداقل 2⁷ ردیف؛ بررسی‌های بازهٔ 32 بیتی روی کلمه‌های ورودی، عمومی و salt؛ فراخوانی سیستمی POSEIDON2_LEN؛ اصلاح JALR؛ کلیدهای تأییدکننده با salt از key_derivation_v2اصلاحات بازبینی‌های zkVM در 2026-09-27 و 28 که یک کلید تأییدکننده را جابه‌جا می‌کنند، در یک برشانجام شد. Fullnode v0.6.1، chain 16 (2026-09-28)، یک هاردفورک
set 8سنجهٔ gas: ستون GAS در جدول cpu و یک GAS_LIMIT عمومی، با اثبات GAS ≤ GAS_LIMIT درون مدار؛ gas دقیق اجرا خصوصی می‌ماندهر فراخوانی هزینهٔ حدی را که اعلام می‌کند می‌پردازد و هر اثبات بسته همان حد ثابت‌شده را اعلام می‌کندانجام شد. Fullnode v0.6.7-rc1، chain 18 (2026-09-29)، یک هاردفورک. bundle_gas_limit برابر 20,479 است

فازهای استخر محافظت‌شده

دفتر کل fullnode در سه فاز فرود آمد که هر کدام یک هاردفورک بود (docs/shielded.md §7). S1 دفتر کل حساب‌محور را با یک استخر یادداشت جایگزین کرد؛ S3 پل را به‌صورت یادداشت بازگرداند و اول فرود آمد؛ S2 استیکینگ را روی آن گذاشت. هر سه روی main و روی زنجیر فعلی هستند.

چین ۱۴ و ردیف‌های زیر S2 کار v0.5 هستند. هر ردیف یک هارد فورک است؛ همه با هم به‌صورت یک زنجیره‌ی تازه، یعنی chain 14، در تاریخ 2026-09-20 از بیلد b3c594c بریده شدند و همان روز، پس از یک رفت‌وبرگشت زنده‌ی zUSD از طریق نقاط پایانی مبدأ مستقر‌شده، با برچسب v0.5 منتشر شدند. Chain 15، که از 2026-09-26 روی v0.5.8 و نسخه‌های بعدی زنده بود، همه‌ی آن را داشت و اصلاحات وابسته به genesis در ممیزی‌های v4 و v5 را نیز فعال کرده بود: یک faucet با فهرست مجاز و بودجه‌ی هر epoch، فعال‌سازی تأخیری bond، سقف وزن stake، ثبت‌نام‌های وابسته به genesis، consensus_domain برابر 1، قواعد پل نسخه‌ی 2 و سقف رجیستری توکن، کارمزد ثبت سوخته‌شده و کران 2⁶³ برای note. Chain 20 که از 2026-10-01 ساعت 06:17 UTC روی v0.6.8 (c9c9bd3c) زنده است و هارد فورکی از chain 19 است، همه‌ی این‌ها را نگه می‌دارد و کار انتشارهای v0.6 را که در ادامه فهرست شده است به آن می‌افزاید.

شناسهدامنهمعیار خروجوضعیت
S1خود استخر: note‌ها، بسته‌های اثبات‌شده‌ی 2-in-2-out، درخت تعهد Poseidon2 با عمق 32 و مجموعه‌ی nullifier، کیف پول rand با اثبات‌گر محلی، RPC حذف‌شده‌ی اطلاعات حساسیک انتقال shielded بین کیف پول‌ها، یک رقابت double-spend بین دو اعتبارسنج و یک استقرار-و-فراخوانی که با بسته‌ها پرداخت می‌شود، همگی در مجموعه‌ی آزمون خوشه‌ای می‌گذرندانجام شد. از chain 6 (2026-09-12) روی ناوگان عمومی زنده است
S3پل به‌صورت note: دارایی پل‌شده شاخص دارایی رجیستری را حمل می‌کند، یک گواهی یک note واریز می‌کند که خود زنجیره آن را محاسبه می‌کند، BridgeBurn تنها تراکنش دو‌بسته‌ای است؛ پاکت‌های مهرشده برای ورودی‌های فراخوانی که فراخواننده، یک کلید برای هر فراخوانی یا یک ممیز نام‌برده می‌تواند بازشان کندیک دارایی پل‌شده به‌صورت note ضرب، خرج و سوزانده می‌شود؛ فراخواننده می‌تواند آنچه یک برنامه روی آن اجرا شده را بدون انتشار آن افشا کند و rand open-call گشایش را با H_IN مقایسه می‌کندانجام شد. نخست فرود آمد. Chain‌های 9 تا 13 بخش پل را از genesis خود حذف کردند؛ هر زنجیره از 14 به بعد آن را دارد. از chain 14 هر burn یک بسته است، نه دو
S2استیکینگ روی زنجیره‌ی shielded: یک ثبت‌نام عمومی اعتبارسنج، Bond از burn یک بسته، Unbond طی دو epoch، Withdraw به یک note در نشانی پرداخت، epoch‌های 1,000 بلوکی که مجموعه را دوباره استخراج می‌کنند، و یک ممیزی عرضه روی ثبت‌نام و استخریک اعتبارسنج پنجم ثبت‌نام می‌کند، bond می‌گذارد و از epoch بعد پیشنهاد بلوک می‌دهد؛ یکی از مجموعه unbond می‌کند و به noteای برداشت می‌کند که کیف پول پرداخت آن را خرج می‌کند؛ هر دو در مجموعه‌ی آزمون خوشه‌ای می‌گذرندانجام شد. درخت تعهد محلی کیف پول در 2026-09-21 به دنبال آن آمد: کیف پول witness‌های خود را محاسبه می‌کند و دیگر به نود خود نمی‌گوید کدام برگ را خرج می‌کند
RPLاستاندارد توکن (docs/tokens.md): توکن یک مدخل رجیستری در دفتر کل با شناسه‌ی bech32m ‏62 نویسه‌ای rpl1… است؛ ساخت آن در ازای کارمزد ثبت به RAND بدون نیاز به مجوز است؛ مرجع ضرب هنگام ثبت ثابت می‌شود: هیچ‌کس، یک کلید یا پل؛ نمادها یکتا نیستند؛ rand token create، mint، set-authority، burn، info، list و rand_getTokens، rand_getToken، rand_getTokenSupplyیک توکن ثبت، ضرب، با rand send --asset ارسال و به‌صورت note در همان استخر سوزانده می‌شوداز chain 14 (v0.5) در حال اجراست. روی chain 20 کارمزد ثبت 1 RAND است و سوزانده می‌شود، رجیستری حداکثر 4,096 توکن را نگه می‌دارد و genesis فهرست zUSD را در شاخص 1 دارد
RPL-2وضعیت برنامه (docs/program-state.md): سلول‌های هر برنامه (کلیدی 8 کلمه‌ای به مقداری 8 کلمه‌ای، در ریشه‌ی وضعیت)، یک خزانه‌ی عمومی برای هر دارایی، توکنی که فقط برنامه‌اش آن را ضرب می‌کند، و کنش Invoke (‏Action 33)، فراخوانی‌ای که سلول‌هایی را که می‌خواند و می‌نویسد و note‌هایی را که پرداخت می‌کند اعلام می‌کند؛ rand program invoke، state، vault و rand_getProgramCell، rand_getProgramCells، rand_getProgramVaultدفتر کل یک گذار را فقط وقتی اعمال می‌کند که هر خوانش اعلام‌شده هنوز برقرار باشد و خزانه همه‌ی پرداخت‌ها را پوشش دهد؛ خوانش کهنه رد و دوباره اثبات می‌شوداز chain 20 (v0.6.8) در حال اجراست. cell_fee برابر 0.01 RAND برای هر سلول ساخته‌شده؛ حداکثر 8 خوانش، 8 نوشتن و 4 پرداخت در هر invoke. نک. برنامه‌ها
بسته‌ی دارایی پنهانهر تراکنش دقیقاً یک بسته‌ی 4-in-4-out به‌جای بسته‌ی 2-in-2-out دارد: شکاف‌های 0–1 دارایی خصوصی را نگه می‌دارند (در انتقال فقط-RAND ساختگی‌اند)، شکاف‌های 2–3 همیشه RAND‌اند و کارمزد را می‌پردازند. انتقال توکن دو‌بسته‌ای و burn پل دو‌بسته‌ای حذف شده‌اندانتقال RAND و انتقال هر توکن RPL شکل یکسانی منتشر می‌کنند، پس داریی‌ای که جابه‌جا شد پنهان می‌مانداز chain 14 (v0.5) در حال اجراست. Tier 14، حدود 100 s برای اثبات، حدود 1.42 MB اثبات روی chain‌های 14 و 15؛ hc_bundle برابر 83d3a370… در آن‌ها. Chain‌های 18 تا 20 گارد بسته‌ی v3 را پین می‌کنند، hc_bundle برابر 60af094a…، حدود 1.49 MB
الزام تراکنشهر اثبات بسته روی H("rand-tx-bind-1", chain_id ‖ tx with proofs blanked) ساخته و در برابر آن راستی‌آزمایی می‌شود، که در بخش ورودی عمومی حمل می‌شودیک اثبات رونوشت‌شده‌ی دست‌نخورده که با مقصد، اعتبارسنج یا memo تغییرکرده دوباره ارسال شود رد می‌شوداز chain 14 (v0.5) در حال اجراست. از chain 20 (binding_domain برابر 1) پیش‌تصویر H("rand-tx-bind-2", genesis hash ‖ chain_id ‖ …) است و هر پیام کنش امضاشده نیز هش genesis را حمل می‌کند، پس هیچ‌چیزی که برای یک زنجیره اثبات یا امضا شده باشد روی زنجیره‌ی دیگر راستی‌آزمایی نمی‌شود
B1–B4سخت‌سازی پل (docs/bridge.md §§14–20). B1: سقف ضرب روزانه برای هر پشتوانه، و کلید مکثی که فقط می‌تواند مکث کند (رفع مکث نیازمند حد نصاب PQ است). B2: مهر زمانی بلوکی که بیش از 60 s پس از والدش باشد نامعتبر است و اعتبارسنج به بلوکی که بیش از 15 s جلوتر از ساعتش باشد رأی نمی‌دهد، پس اعتبارسنج‌ها به NTP نیاز دارند. B3: حد نصاب هم‌امضایی Dilithium2 روی هر ضرب. B4: فهرست‌کردن توکن پل‌شده یا یک پشتوانه پس از genesis تحت حد نصاب نگهبانان PQ، بدون برش زنجیرهzUSD، یک توکن با هفت پشتوانه (USDT و USDC روی Ethereum، Binance Smart Chain، Tron و Solana)، با تراکنش ثبت می‌شود و total_supply == Σ backings.locked به‌طور ساختاری برقرار است. دروازه‌ی محلی نه‌فازی (zusd_e2e.rs: چهار اعتبارسنج، اثبات‌های واقعی، faucet تا ثبت تا واریز تا انتقال تا burn تا ممیزی) 9 از 9 را گذرانداز chain 14 (v0.5) در حال اجراست. روی chain 20: سقف ضرب 100,000 zUSD در روز برای هر پشتوانه به‌علاوه‌ی 4,000 zUSD سراسری در هر 24 ساعت غلتان (قواعد پل نسخه‌ی 2)، مجموعه‌ی نگهبانان 1 با هشت نگهبان PQ، کارمزد 10 bps به zUSD روی هر ضرب و هر burn (bridge.fees)، و چرخش نگهبانان که نیازمند تصرف است و 86,400 s انتظار دارد (bridge.rotation). zUSD در genesis مربوط به chain 20 با هفت پشتوانه‌اش و 99 zUSD قفل‌شده در لحظه‌ی برش فهرست شده است
ممیزی v3اصلاحات دور سوم ممیزی داخلی، به رهبری یکی از هم‌بنیان‌گذاران (2026-09-19؛ هیچ ممیزی مستقلی انجام نشده است). POOL-1: Mint مربوط به faucet گشایش note خود را (pk، time، r) حمل می‌کند، پذیرش تعهد را دوباره محاسبه می‌کند و ضرب‌کننده rand-mint-2 را امضا می‌کند؛ note‌های alloc در genesis نیز گشایش دارند. RPC-1: rand_getWitness(es) حداکثر دو بازسازی درخت را هم‌زمان اجرا می‌کند و پس از 10 s پاسخ -32000 busy می‌دهد. OPS-1: هر هجده کلید اعتبارسنج چرخانده شد، خارج از مخزن تولید شد و هیچ کلیدی در مخزن ردیابی نمی‌شودضربی که تعهدش به بیش از مقدارش باز شود رد می‌شود؛ هیچ کلید chain 14 هرگز در مخزن نبوده استاز chain 14 (v0.5) در حال اجراست. PRIV-1، یعنی درخواست witness که برگ را نام می‌برد، در 2026-09-21 با درخت خود کیف پول بسته شد

انتشارها پس از v0.5

هر انتشار یک برچسب git با مدخلی در CHANGELOG.md مربوط به fullnode است. انتشاری که اجماع، قالب سیمی یا کلید راستی‌آزمایی را تغییر دهد با یک زنجیره‌ی جدید عرضه می‌شود؛ بقیه یکی‌یکی نود به نود روی زنجیره‌ی زنده می‌روند.

نسخهآنچه آوردزنجیره
v0.5 تا v0.5.8توکن‌های RPL، zUSD و پل مستحکم‌شده (در بالا)؛ اصلاحات ممیزی؛ هرس تاریخچه؛ مستحکم‌سازی اجماع و همگام‌سازی14، 15
v0.5.9اصلاحات بازپویش: faucet فقط از اعتبارسنج‌های genesis ضرب می‌کند، عقب‌نشینی در همگام‌سازی، پیش‌بررسی‌های gossip15
v0.5.10اشتراک‌گذاری نشانی: اثرانگشت‌ها، پیوندهای randpay: و کدهای QR؛ یادداشت رمزگذاری‌شده که نخستین‌بار در زنجیره 18 روشن شد15
v0.5.11آزادسازی تدریجی زمان‌قفل‌دار در genesis برای سهم تیم، سرمایه‌گذاران و شرکا. وابسته به genesis و در هیچ زنجیره‌ای فعال نیستهیچ‌کدام
v0.6اصلاحات zkVM، rVM و تجمیع از بازبینی‌های شهریور15
v0.6.1مجموعه قیود 7: پوشانندگی LogUp، کف جدول 2⁷، بررسی‌های بازه 32 بیتی، POSEIDON2_LEN، اصلاح JALR. زنجیره 16 با hardening_v6 و guest بسته نسخه 2 ساخته شد16
v0.6.2اثبات‌سازی تفویضی، مرحله 1: باینری rand-prover و گزینه --prover کیف پول. اثبات‌گر مرحله 1 کلید خرج را دریافت می‌کند16
v0.6.3، v0.6.4اثبات‌سازی تفویضی، مرحله 2: مجوزدهی تفکیک‌شده. اثبات بسته دیگر کلید خرج را نمی‌گیرد، اثبات مجوز در سطح 10 آن را می‌گیرد، و دامنه شناسه تراکنش به rand-txid-3 تغییر می‌کند17
v0.6.6، v0.6.7-rc1گس: مجموعه قیود 8، سقف گس اعلام‌شده برای هر اثبات، قیمت‌های پویای گس و بایت؛ یادداشت روشن شد. v0.6.6 هرگز به‌صورت تگ‌شده منتشر نشد18
v0.6.7اصلاحاتی در زنجیره 18 که هیچ قاعده اجماعی را تغییر نمی‌دهند: هرس اثبات‌های مهروموم‌شده (خاموش)، تثبیت قالب envelope، بهداشت کلید مشاهده، تخصیص‌دهنده حافظه rVM، هم‌پوشانی در کرنل‌های GPU، پوشش آزمون ALU. پیش از پایان مجموعه آزمون کامل workspace تگ شد18، 19
v0.6.8RPL-2: سلول‌های برنامه، خزانه‌های برنامه و کنش Invoke. کارمزدهای پل zUSD در هر دو جهت. آخرین اصلاحات audit-v6: بدون آزادسازی خودکار قفل (CON-4) و یک pacemaker مبتنی بر گواهی وقفه زمانی (CH-1)؛ شنوندهٔ --public-rpc، محدودیت‌های خواندن، همتاهای اعتبارسنج رزروشده، بودجه‌های همگام‌سازی و gossip، سقف بایت استخر، و کران بر درجه اعلام‌شده در سرایند اثبات (ZKV-4)؛ و قواعد وابسته به genesis که زنجیره 20 روشن می‌کند: اتصال به هش genesis، testnet، پنجره اثبات 1,024 بلوکی، سقف قیمت گس و بار بایت پرداخت‌شده، پذیرش با رأی، سقف ورود سهام به‌صورت کسری، و مالکیت و تأخیر برای چرخش‌های پل. کیف پول‌ها برای ارسال در زنجیره 20 به این ساخت نیاز دارند20

امروز تا کجا پیش رفته

انحراف‌ها از whitepaper، بیان‌شده و نه پنهان‌شده. هر یک در مستندات خود crate همراه با نقطه عطفی که آن را می‌بندد پیگیری می‌شود.

  • hc متعهدکننده است اما پوشاننده نیست: نمک ندارد، بنابراین یک برنامه حدس‌زده‌شده را می‌توان تأیید کرد و دو استقرار از یک برنامه به هم قابل پیوندند. آنچه M3.4 برداشت این بود که تأییدگر کل برنامه را آشکارا در اختیار داشته باشد.
  • کیف پولی که پیش از 2026-09-21 ساخته شده باشد شاهدها را از گره خود می‌خواهد، و درخواست شاهد برگی را نام می‌برد که قرار است خرج شود. rand فعلی نسخه خود از درخت را نگه می‌دارد و هرگز درخواست نمی‌کند؛ گره همچنان rand_getWitness را برای کیف پول‌های قدیمی‌تر ارائه می‌دهد.
  • سپرده‌ها در مرز عمومی‌اند: ضرب faucet، نوت genesis و سپرده پل همگی مقدارشان را آشکارا حمل می‌کنند (از زنجیره 14 به بعد ضرب و نوت genesis بازگشایی خود را هم حمل می‌کنند، بنابراین کلید مالک نیز عمومی است)، همان دیدپذیری یک‌گامی که سپرده از حالت شفاف به حالت shielded در هر جای دیگر دارد.
  • دانش‌صفر آماری است، نه کامل. این همان ویژگی‌ای است که FRI پوشاننده Plonky3 0.7 در عمل فراهم می‌کند، و crate هم همین را می‌گوید.
  • هش transcript از نوع Poseidon2 با ثابت‌های دور توسعه‌ای است، نه SHA3-384 / BLAKE3-384 مقاله‌ها. یک تعویض پیکربندی است، نه بازنویسی.
  • با 80 پرس‌وجوی FRI، اثبات بسته در زنجیره‌های 14 و 15 حدود 1.42 MB بود (حدود 1.3 MB تا زنجیره 13). از زنجیره 17 به بعد یک انتقال حدود 2.85 MB اثبات حمل می‌کند: اثبات بسته، حدود 1.49 MB، و اثبات مجوز، حدود 1.37 MB. در یک زنجیره پیش‌فرض، با بلوک‌های 4 MiB و سقف اثبات 2 MiB، اثباتی که Keccak دارد یکسره از سقف اثبات فراتر می‌رود؛ genesis زنجیره 20 بلوک‌های 20 MiB و سقف اثبات 4 MiB تعیین می‌کند (زنجیره‌های 13 تا 16 مقدار 8 MiB داشتند).
  • سرایند اثبات فراخوانی پنهان نیست. سطح و ارتفاع جدول‌های Keccak و SHA-256 را اعلام می‌کند، پس نشان می‌دهد که فراخوانی هش کرده است یا نه. فراخوانی‌هایی که در زنجیره 15 پیش از کف اثبات‌گر v0.6 ثبت شدند بیش از این را آشکار می‌کردند: جدول خصوصی با کمتر از 2⁷ سطر را می‌شد از اثبات بیرون خواند. کف اثبات‌گر v0.6 این را برای فراخوانی‌های جدید بست، و مجموعه قیود 7 با hardening_v6 آن را از زنجیره 16 به بعد به قاعده زنجیره تبدیل کرد.
  • هر فراخوانی تا سطح 14 محدود است، با حداکثر 2¹² سطر Keccak (128 جایگشت) و 2¹³ سطر SHA-256 (128 فشرده‌سازی)، و تحت hardening_v6 برنامه‌ای با بیش از 8,180 کلمه قابل استقرار نیست. guestهای مفسر EVM و sBPF و تصاویر ترجمه‌شده ERC-20 و SPL Token همگی از این حد بزرگ‌ترند.
  • هر که شاهد را در اختیار دارد همه‌چیز را می‌بیند. ZK دید تأییدگر را محافظت می‌کند، نه دید اثبات‌گر را. از زنجیره 17 به بعد کیف پول می‌تواند اثبات بسته را بدون سپردن کلید خرج به یک rand-prover جفت‌شده بسپارد، اما آن اثبات‌گر همچنان کلید مشاهده را دارد و نوت‌ها را می‌بیند. بک‌اند CUDA نخستین‌بار در 2026-09-28 روی سخت‌افزار اجرا شد و هنوز اندازه‌گیری تولیدی ندارد.

ساختار مخزن

workspace Cargo مربوط به fullnode، همان‌گونه که در README و دایرکتوری crates/ آن چیده شده است.

مسیرآنچه در آن است
crates/randprotocol-core/منطق محض، بدون I/O: رمزنگاری، نوت‌ها و درخت تعهد، قواعد دفتر کل، گس، genesis، ماشین حالت HotStuff
crates/randprotocol-zkvm/zkVM مربوط به Rand، vendored از zkp-circuits/research در مجموعه قیود 8 (مدارها aeacf31؛ با deploy/sync-zkvm.sh دوباره همگام شده)، به‌علاوه تأییدگر اثبات سمت زنجیره و حافظه نهان کلید تأییدگر آن
crates/randprotocol-rvm/ماشین بازگشتی، vendored از zkp-circuits/recursion: ماشینی بومی میدان که برنامه‌هایش اثبات‌های zkVM مربوط به Rand را تأیید می‌کنند
crates/bridge-codec/قالب سیمی پل نگهبان و قاعده حدنصاب آن، بایت به بایت مشترک با قراردادهای Solidity و برنامه Solana
crates/randprotocol-node/ذخیره‌سازی RocksDB، شبکه libp2p، mempool، همگام‌سازی بلوک، سرور JSON-RPC و باینری rand-node
crates/randprotocol-client/باینری کیف پول rand و کتابخانه RpcClient، بدون وابستگی به RocksDB یا libp2p
crates/randprotocol-prover/باینری rand-prover: اثبات‌گری تفویضی که بسته‌ها را برای کیف پول‌های جفت‌شده اثبات می‌کند
deploy/فایل‌های genesis شبکه testnet، nodes.env، اسکریپت‌های اجرا، آماده‌سازی ابری، اسکریپت‌های انتقال و بازسازی. از زمان آماده‌سازی زنجیره 14 هیچ کلیدی در اینجا ردیابی نمی‌شود
docs/مستندات مرجع و مشخصات طراحی
scripts/testnet محلی با دو اعتبارسنج

مشخص‌شده، اما هنوز عرضه‌نشده

این مؤلفه‌ها در مقاله‌ها یا مستندات fullnode توصیف شده‌اند اما در حال اجرا نیستند: یا در مخزن‌ها وجود ندارند، یا ساخته شده‌اند و برای هیچ زنجیره‌ای روشن نیستند. فهرست شده‌اند تا فاصله میان مشخصات و کد خوانا باشد و نه استنباطی.

مؤلفهوضعیت
پل · نگهباندیمن‌های نگهبان و رله که قالب گواهی را سرتاسر اجرا می‌کنند؛ قراردادها، codec و نیمه دریافت‌کننده fullnode عرضه شده‌اند، دیمن‌ها نه
fullnode · تجمیعتجمیع بلوک با ماشین بازگشتی: مهروموم، هرس و همگام‌سازی به شکل مهروموم‌شده. ساخته شده و در همه زنجیره‌ها خاموش است؛ rand-node genesis دارای بخش aggregation را رد می‌کند. هنوز به تمرین سرتاسری مجموع جعلی نیاز دارد، و فقط اثبات بسته را حذف می‌کند، نه اثبات مجوز را. اثبات‌های تولیدی rVM به ماشینی بزرگ نیاز دارند: تحت مجموعه قیود 7 تجمیع دو مورد 133 GB، سه مورد 221 GB، و اثبات خروج بیش از 256 GB گرفت (اندازه‌گیری‌شده در 2026-09-28 و 29؛ تحت مجموعه قیود 8 دوباره اندازه‌گیری نشده)
fullnode · آزادسازی تدریجیتخصیص‌های زمان‌قفل‌دار genesis برای تیم، سرمایه‌گذاران و شرکا (v0.5.11، docs/vesting.md). وابسته به genesis: بدون بخش vesting چهار کنش آزادسازی تدریجی رد می‌شوند، و هیچ زنجیره‌ای چنین بخشی ندارد. ممیزی عرضه زنجیره 20 همه شمارنده‌های آزادسازی تدریجی را صفر گزارش می‌کند. از v0.6.8 یک ورودی قابل‌ابطال با حدنصابی از ابطال‌کنندگانش باطل می‌شود، و فقط به خزانه‌ای که ورودی genesis آن نام برده
fullnode · جریمه سپردهجریمه سپرده و زندانی‌کردن برای دوگانه‌گویی رهبر در v0.6.8 پشت staking.slashing ساخته شده‌اند و در زنجیره 20 خاموش‌اند (genesis آن چنین بخشی ندارد، در حالی که هر 26 کلید اعتبارسنج به یک اپراتور تعلق دارند). پاداش بلوک، فانوس رهبر مبتنی بر hash-sortition، انباشتگر nullifier و فراخوانی‌های میان‌برنامه‌ای ساخته نشده‌اند. وضعیت پایدار برای هر برنامه به‌صورت RPL-2 عرضه شد (بالا)
prover/دیمن اثبات‌سازی GPU: دسته‌ها را از صف برمی‌دارد، در ثبت رقابت می‌کند. کرنل‌های CUDA در zkp-circuits قرار دارند و نخستین‌بار در 2026-09-28 روی NVIDIA H100 اجرا شدند؛ دیمن بازار وجود ندارد. rand-prover که عرضه شده است برای کیف پول‌های جفت‌شده با خود اثبات می‌سازد و بازار نیست
zkp-circuits · M4.4 اثبات خروجاثبات یک انتقال SPL Token (سطح 20)، با برون‌یابی حدود 330 GB. انتقال ERC-20 (سطح 18) در 2026-09-19 روی یک droplet با 128 GB اثبات شد. هیچ‌کدام در زنجیره 20 قابل فراخوانی نیست، زیرا فراخوانی را به سطح 14 محدود می‌کند

ساخت و آزمون

Rust در هر مخزن، گردش‌کار استاندارد خود را دارد. fullnode یک workspace واحد Cargo است با toolchain پین‌شده و یک مجموعه تست خوشه‌ای که گره‌های واقعی را روی TCP راه‌اندازی می‌کند. ساخت آن به این نیاز دارد که مخزن circuits در کنار آن، در دایرکتوری‌ای با نام circuits و روی commitی که crateهای vendored از آن همگام‌سازی شده‌اند (aeacf31 برای v0.6.7 و v0.6.8) checkout شده باشد. zkVM یک crate مستقل در zkp-circuits است که toolchain پین‌شدهٔ خودش را دارد و یک نمونهٔ نمایشی که شرح می‌دهد یک فراخوانی محرمانه چه چیزی را آشکار می‌کند و چه چیزی را آشکار نمی‌کند.

fullnode:

git clone https://github.com/randprotocol/fullnode.git
git clone https://github.com/randprotocol/zkp-circuits.git circuits   # the sibling directory must be named circuits
git -C circuits checkout "$(sed -n 's/^circuits: //p' fullnode/crates/randprotocol-zkvm/guests-compiled/PROVENANCE.md)"
cd fullnode

# Rust 1.98.1 is pinned by rust-toolchain.toml; first build pulls RocksDB and Plonky3, 10 to 20 minutes
cargo build --release        # target/release/rand-node, target/release/rand, target/release/rand-prover

# All crates; release because STARK proving is slow in debug. One to two hours, mostly proving
cargo test --release

# One machine, two validators
scripts/local-testnet.sh
target/release/rand --rpc http://127.0.0.1:8545 status

zkVM پژوهشی، در zkp-circuits/research:

# Toolchain is pinned by rust-toolchain.toml; the first build pulls Plonky3
cargo build --release

# Narrated demo: thirteen proofs, one at production FRI parameters (~6-7 min)
cargo run --release

# Emulator, per-table constraints, cheating provers, ZK, end-to-end, viewing keys, compiled guests (395 tests, ~17 min)
cargo test

مجموعه تست fullnode با اندازه‌گیری در v0.6.1 روی ماشینی با ۱۶ vCPU: core ‏۵۲۱ تست، node ‏۳۷۳، client ‏۱۱۷، مجموعهٔ prover متقلب ۱۱۶، تقلب‌های hidden-bundle ‏۲۱ (۷۵ دقیقه)، جریان کیف پول ۶ (۵۳ دقیقه)، خوشه ۲۶ (۴۴ دقیقه) و گیت end-to-end برای zUSD ‏۲ (۵۱ دقیقه). اثبات‌های تولیدی ماشین بازگشتی (recursion VM) خارج از آن هستند و به حافظه‌ای نیاز دارند که در بالا فهرست شده است.

راه‌اندازی یک گره نحوهٔ پیوستن به testnet عمومی را با همین ساخت توضیح می‌دهد؛ genesis مربوط به testnet، همتاهای bootstrap و اسکریپت‌های اجرا در دایرکتوری deploy/ مخزن fullnode عرضه می‌شوند و صفحهٔ دانلود خلاصهٔ آن را دارد.

مشارکت

fullnode تحت مجوز GNU General Public License v3.0 ‏(GPL-3.0-only) منتشر شده است؛ پیش از این Apache-2.0 بود. برای اشکال‌ها و پیشنهادهای طراحی، در مخزنی که تغییر به آن مربوط می‌شود issue باز کنید. pull requestها پذیرفته می‌شوند: پیش از ارسال، cargo fmt && cargo clippy را اجرا کنید و تغییرات را محدود و متمرکز نگه دارید. issueهای fullnode جای شروع است.

معماری، مدار حریم خصوصی، اثبات توکن کارمزد و مصالحهٔ پساکوانتومی، همگی در whitepaper در صفحهٔ مقالات مستند شده‌اند. دایرکتوری docs/ خود مخزن fullnode منبعی است که هر صفحه در این مستندات با آن راستی‌آزمایی شده است.

آخرین بار با کامیت c0878c3f از fullnode (زنجیرهٔ 21) در تاریخ 2026-10-12 بررسی شد. هرجا کد و این صفحه با هم اختلاف دارند، حق با کد است؛ به ما اطلاع دهید.