Rand ओपन सोर्स है। फ़ुल नोड, एक्सप्लोरर, ब्रिज, प्रूविंग से जुड़ा शोध और वॉलेट क्लाइंट, सभी GitHub पर अपनी-अपनी रिपॉज़िटरी में हैं। कोड पढ़ें, टेस्ट चलाएँ, पैच भेजें। यह पृष्ठ एक नक्शा है। इसमें बताया गया है कि हर घटक कहाँ है और किस भाषा में बना है। यह भी बताया गया है कि प्रूफ़ सिस्टम कितना आगे बढ़ चुका है और आज उसकी सीमा क्या है।
रिपॉज़िटरी
| रिपॉज़िटरी | इसमें क्या है | भाषा |
|---|---|---|
randprotocol/fullnode | संदर्भ फ़ुल नोड और वॉलेट: चेन्ड HotStuff BFT, libp2p नेटवर्किंग, शील्डेड RAND नोट पूल, zkVM प्रूफ़ सत्यापनकर्ता, JSON-RPC, rand वॉलेट CLI और rand-prover प्रत्यायोजित प्रूवर। | Rust |
randprotocol/randscan.org | randscan.org के पीछे का ब्लॉक एक्सप्लोरर: PostgreSQL पर REST और WebSocket API वाला एक axum इंडेक्सर, और एक Next.js फ़्रंटएंड। | Rust · TypeScript |
randprotocol/bridge | Ethereum, Binance Smart Chain, Tron और Solana से USDT और USDC के लिए गार्डियन ब्रिज: कस्टडी कॉन्ट्रैक्ट, साझा सत्यापन-प्रमाण (attestation) फ़ॉर्मैट और उसके टेस्ट वेक्टर। | Solidity · Rust |
randprotocol/zkp-circuits | प्रूफ़-सिस्टम वॉकथ्रू (Groth16 बनाम STARK, शील्डेड पूल, रिंग सिग्नेचर, मिक्सर), research/ में Rand संदर्भ zkVM, recursion/ में रिकर्शन VM, गेस्ट टूलचेन और दोनों ट्रांसलेटर, तथा CUDA कर्नेल। फ़ुल नोड बिल्ड करने के लिए इस रिपॉज़िटरी का उसके बगल में circuits/ के रूप में चेक-आउट होना ज़रूरी है। | Rust |
randprotocol/clients | वॉलेट क्लाइंट: डेस्कटॉप, वेब, iOS और Android। | Rust · Swift · Java · JavaScript |
स्टैक
शुरू से अंत तक Rust। Rand अपनी स्वतंत्र चेन है। fullnode रिपॉज़िटरी में ये सब हैं: libp2p गॉसिप लेयर वाला HotStuff BFT नोड, लेजर के रूप में पूरी तरह शील्डेड नोट पूल, पोस्ट-क्वांटम सिग्नेचर और नोट एन्क्रिप्शन, और गोपनीय गणना के लिए Rand zkVM। प्रूफ़ सिस्टम पर अभी सक्रिय शोध चल रहा है। उसका ब्योरा नीचे है।
| लेयर | क्या चलता है |
|---|---|
| सहमति (Consensus) | चेन्ड HotStuff BFT, स्टेक-भारित कोरम, थ्री-चेन कमिट |
| नेटवर्किंग | libp2p: TCP, Noise, Yamux, gossipsub, Kademlia, LAN पर mDNS |
| लेजर | शील्डेड नोट पूल: गहराई-32 Poseidon2 ट्री, न्यूलिफ़ायर सेट, प्रति लेनदेन एक 4-इन-4-आउट हिडन-एसेट बंडल (चेन 13 तक 2-इन-2-आउट); चेन 17 से बंडल प्रूफ़ के साथ एक दूसरा, टियर-10 ऑथ प्रूफ़ (विभाजित प्राधिकरण); चेन 18 से एन्क्रिप्टेड मेमो सहित 1,860-बाइट के नोट लिफ़ाफ़े |
| टोकन | RPL: टोकन कोई कॉन्ट्रैक्ट नहीं है। यह लेजर रजिस्ट्री की एक प्रविष्टि है, जिसकी आईडी rpl1… होती है। यह उसी पूल में नोट के रूप में स्थानांतरित होता है |
| स्टेकिंग | सार्वजनिक वैलिडेटर रजिस्टर: बंडल से बॉन्ड, दो-एपॉक की अनबॉन्डिंग, 1,000-ब्लॉक के एपॉक; चेन 20 से नए वैलिडेटर को मौजूदा सेट के मतदान से शामिल किया जाता है |
| गोपनीय गणना | Rand zkVM: Plonky3 बैच STARK के अंतर्गत RV32IM, ZK-हाइडिंग FRI, कंस्ट्रेंट सेट 8; चेन 18 से हर कॉल एक गैस सीमा घोषित करती है जिसे सर्किट लागू करता है, और भुगतान प्रति गैस तथा प्रति KiB होता है; चेन 20 से प्रोग्राम अपनी स्थिति सेल में रखता है और मूल्य वॉल्ट में रखता है (RPL-2) |
| क्रिप्टो | Dilithium2 · ML-KEM-768 · Poseidon2 · BLAKE3 · ChaCha20-Poly1305 |
| स्टोरेज | प्रति नोड एक RocksDB, fsync किए गए कमिट, स्टार्टअप पर अखंडता जाँच; वैकल्पिक इतिहास-छँटाई (--prune-history 24h), जबकि आर्काइव नोड सब कुछ रखते हैं |
| ब्रिज | चार चेन पर गार्डियन-सत्यापित लॉक, हर मिंट पर Dilithium2 सह-हस्ताक्षर कोरम; ब्रिज की गई एसेट उसी पूल में एक नोट होती है |
| भाषा | हर जगह Rust; ब्रिज के लिए Solidity, एक्सप्लोरर के लिए TypeScript |
हर प्रोग्राम के लिए एक ही संबंध
व्हाइटपेपर का सार्वभौमिक निष्पादन संबंध R_exec कोड के रूप में मौजूद है: rand_zkvm। यह एक RV32IM मशीन है जिसे Goldilocks फ़ील्ड पर Plonky3 के एक ही बैच STARK के अंतर्गत प्रमाणित किया जाता है। यह प्रमाणित करता है कि किसी ट्रेस ने प्रोग्राम hc को चलाकर ये सार्वजनिक आउटपुट दिए, उन इनपुट पर जिनकी प्रतिबद्धता सॉल्टेड H_IN से की गई है। प्रोग्राम से जुड़ी कोई भी चीज़ कभी सत्यापनकर्ता का पैरामीटर नहीं होती। किसी गोपनीय प्रोग्राम को प्रकाशित करने का अर्थ है एक हैश पंजीकृत करना, कभी कोई विशेष सर्किट बनाना नहीं।
प्रूफ़ सिस्टम पारदर्शी है। इसमें न कोई विश्वसनीय सेटअप है और न कोई पेयरिंग कर्व। इसकी एकमात्र मान्यता एक कोलिज़न-रोधी हैश है। प्रूफ़ से जुड़े हर दूसरे घटक से अपेक्षा है कि वह अपना अलग क्रेट बनाने के बजाय इसी क्रेट को अपनाए। यह क्रेट zkp-circuits/research में है और कंस्ट्रेंट सेट 8 पर फ़ुल नोड में वेंडर किया गया है (circuits aeacf31, fullnode v0.6.7 और v0.6.8)। नीचे की तालिकाएँ और माप कंस्ट्रेंट सेट 5 (माइलस्टोन M4.2) के हैं, सिवाय उन पंक्तियों के जिनमें किसी बाद के सेट का नाम दिया गया है। ये 2026-09-13 की स्थिति के अनुसार फ़ुल नोड के docs/zkvm.md, docs/zkvm-milestones.md और docs/confidential.md से लिए गए हैं। माप Apple Silicon लैपटॉप पर वास्तव में मापे गए मान हैं, लक्ष्य नहीं।
नामित बसों पर आठ तालिकाएँ, और ज़रूरत पड़ने पर नौवीं
एक प्रतिबद्धता, एक FRI ओपनिंग। तालिकाएँ कभी एक-दूसरे को कॉल नहीं करतीं। वे नामित LogUp बसों पर तथ्यों का आदान-प्रदान करती हैं: PROGRAM, PROGRAM_WORD, MEMORY, ALU, POSEIDON2, INPUT_DIGEST, INPUT_READ, KECCAK, तथा रेंज और निबल लुकअप। सत्यापनकर्ता जाँचता है कि हर बस वैश्विक रूप से संतुलित है। हर तालिका की अधिकतम कंस्ट्रेंट डिग्री एक टेस्ट से तय है, और वह FRI ब्लोअप द्वारा अनुमत 8 की सीमा से नीचे रहती है।
| तालिका | प्रकार | भूमिका |
|---|---|---|
program | विटनेस | कच्चे इंस्ट्रक्शन वर्ड, जिन्हें M3.4 से सर्किट के भीतर डिकोड किया जाता है; cpu इन्हें डाइजेस्ट करके hc बनाता है |
cpu | विटनेस | प्रति साइकिल एक पंक्ति, साथ में डाइजेस्ट पंक्तियाँ जो प्रोग्राम को hc में और सॉल्टेड इनपुट को H_IN में समाहित करती हैं |
memory | विटनेस | रजिस्टर और RAM एक ही तालिका में, (space, addr, ts) के क्रम में; M2.5 से सब-वर्ड एक्सेस |
alu | विटनेस | बाइट-लिंब अंकगणित, शिफ़्ट, तुलना; M2.6 से RV32M गुणा और भाग |
range | प्रीप्रोसेस्ड · 256 पंक्तियाँ | रेंज जाँच और दो की घातों का लुकअप |
nibble | प्रीप्रोसेस्ड · 256 पंक्तियाँ | 4-बिट AND, OR, XOR; हर मिलान अपने-आप में दोनों ऑपरेंड की रेंज जाँच है |
poseidon2 | विटनेस | 32-पंक्ति ब्लॉकों में प्रति परम्यूटेशन राउंड एक पंक्ति; POSEIDON2 बस और दोनों डाइजेस्ट को सेवा देती है |
input | विटनेस · M4.1 से | प्रति निजी इनपुट वर्ड एक पंक्ति; INPUT_DIGEST और INPUT_READ को सेवा देती है, इसलिए कोई रीड प्रतिबद्धता के दायरे से बाहर नहीं जा सकता |
keccak | विटनेस · वैकल्पिक | 32-पंक्ति ब्लॉकों में Keccak-f[1600]; केवल उसी प्रूफ़ में मौजूद जिसके गेस्ट ने KECCAK कॉल किया हो (M4.2) |
इसके बाद तीन कंस्ट्रेंट सेट आ चुके हैं। सेट 6 ने किसी प्रोग्राम के डिप्लॉय-समय के सार्वजनिक इनपुट के लिए एक अनिवार्य public तालिका जोड़ी, जो अनसॉल्टेड डाइजेस्ट H_PUB से बँधी है। इसी सेट ने keccak के साथ एक वैकल्पिक sha256 तालिका भी जोड़ी। सेट 7 (चेन 16) एक नई BLIND बस पर हर LogUp टर्मिनल को ब्लाइंड करता है, हर घोषित तालिका की न्यूनतम सीमा 2⁷ पंक्तियाँ तय करता है, और लंबाई-बद्ध POSEIDON2_LEN सिस्कॉल जोड़ता है। सेट 8 (चेन 18) cpu तालिका में एक GAS कॉलम और एक सार्वजनिक मान, घोषित GAS_LIMIT, जोड़ता है।
प्रूफ़ क्या प्रकट करता है
सार्वजनिक: कोड हैश hc (सर्किट के भीतर के आठ डाइजेस्ट वर्ड), सॉल्टेड इनपुट प्रतिबद्धता H_IN (आठ वर्ड), गैस टियर, और आठ आउटपुट वर्ड। कंस्ट्रेंट सेट 6 से सार्वजनिक इनपुट का डाइजेस्ट H_PUB भी, और कंस्ट्रेंट सेट 8 से घोषित गैस सीमा भी। प्रूफ़ का हेडर Keccak और SHA-256 तालिकाओं की ऊँचाइयाँ घोषित करता है। इससे पता चलता है कि किसी कॉल ने हैशिंग की या नहीं, और 2⁷ की न्यूनतम सीमा से ऊपर लगभग कितनी की।
छिपा हुआ: निजी इनपुट (H_IN सॉल्टेड है, इसलिए यह बाइंडिंग के साथ-साथ हाइडिंग भी है); हर इंस्ट्रक्शन वर्ड, क्योंकि सत्यापनकर्ता hc की जाँच करता है, प्रोग्राम की कभी नहीं; हर रजिस्टर और मेमोरी मान; लिया गया हर ब्रांच; साइकिलों की सटीक संख्या और खर्च हुई सटीक गैस; और कौन-से सिस्कॉल चले, सिवाय उसके जो दोनों हैश-तालिकाओं की ऊँचाइयाँ दिखाती हैं।
टियर हर प्रूफ़ के लिए सार्वजनिक है, क्योंकि STARK का आकार पहले से ही उसके ट्रेस की ऊँचाई प्रकट कर देता है। इंडेक्स छिपाने से कुछ हासिल नहीं होता। hc बाइंडिंग है, हाइडिंग नहीं: देखें आज इसकी सीमा कहाँ है।
कंस्ट्रेंट सेट 5 पर मापे गए मान
| FRI | 80 क्वेरी · 20 PoW बिट · ब्लोअप 8 · एरिटी 8 · ZK चालू; 260-बिट अनुमानित, लगभग 86 प्रमाणित। M2 का 27-क्वेरी वाला पुनर्समायोजन 2026-09-12 के ऑडिट के बाद वापस ले लिया गया |
| कॉल | टियर 10 पर private_payment: प्रमाणित करने में लगभग 7 s, 80 क्वेरी पर लगभग 1.2 MB का प्रूफ़ (27 पर 435 KB); M1 पर यह 21.6 s और 892 KB था |
| ट्रांसफ़र | चेन 13 तक की चेनों का 2-इन-2-आउट बंडल गेस्ट: 3,811 वर्ड, लगभग 9,160 साइकिल, टियर 14; प्रमाणित करने में लगभग 100 s, लगभग 1.3 MB का प्रूफ़। चेन 14 का 4-इन-4-आउट हिडन-एसेट गेस्ट भी इसी टियर पर तय है: लगभग 100 s, लगभग 1.42 MB |
| सत्यापन | वॉर्म की के साथ लगभग 16 ms; किसी नई (tier, heights) की पर पहला सत्यापन लगभग 230 ms |
| ब्लॉक | 4 MiB का बजट और 2 MiB की प्रूफ़ सीमा: 80 क्वेरी पर प्रति ब्लॉक लगभग तीन शील्डेड ट्रांसफ़र |
Apple Silicon लैपटॉप, रिलीज़ बिल्ड। प्रूविंग समय में बदलाव M2.3 में बाइट-तालिका के विभाजन से आया। 80-क्वेरी प्रोफ़ाइल की वजह से प्रूफ़ का आकार फिर बढ़ गया। सत्यापनकर्ता की की प्रोग्राम की सामग्री पर निर्भर नहीं है। यह टियर तथा प्रूफ़ में घोषित प्रोग्राम, इनपुट और keccak ऊँचाइयों के आधार पर तय होती है। इसलिए नोड एक बार की को वॉर्म करके उसे बार-बार उपयोग करता है।
बाद के सेटों ने आकार बदल दिए। कंस्ट्रेंट सेट 7 के अंतर्गत production प्रोफ़ाइल पर एक टियर-10 प्रूफ 1,367,688 बाइट का है और Keccak-युक्त टियर-10 प्रूफ 3,283,898 बाइट का (2026-09-28 को मापा गया)। चेन 17 से एक ट्रांसफ़र दो प्रूफ ले जाता है: टियर-14 बंडल प्रूफ, लगभग 1.49 MB, और टियर-10 ऑथ प्रूफ, लगभग 1.37 MB, जिसे प्रूव करने में लगभग 7 s लगते हैं। चेन 20 का जेनेसिस 20 MiB का ब्लॉक और 4 MiB की प्रूफ सीमा निर्धारित करता है, और कोई कॉल टियर 14 से अधिक नहीं हो सकती।
तीन लक्ष्य, एक सर्किट
केवल RISC-V नेटिव रूप से निष्पादित होता है। Solidity और Solana प्रोग्राम या तो उसी रिलेशन के भीतर एक इंटरप्रेटर गेस्ट पर चलते हैं, जिसमें उनका बाइटकोड इनपुट होता है, या चेन से बाहर ऐसे RISC-V प्रोग्रामों में अनुवादित किए जाते हैं जिनके आउटपुट इंटरप्रेटर के आउटपुट से शब्दशः मेल खाते हैं। महँगे ऑपकोड को बिट-दर-बिट सिमुलेशन के बजाय समर्पित कोप्रोसेसर टेबलों की आवश्यकता होती है।
| लक्ष्य | मार्ग | कोप्रोसेसर |
|---|---|---|
| RISC-V | नेटिव। RV32IM, जो या तो asm.rs के माध्यम से हाथ से असेंबल किया गया हो या riscv32im-unknown-none-elf के लिए कंपाइल किया गया no_std Rust हो, M4.1 से फ़्लैट बाइनरी के रूप में लोड होता है, या rand-guest द्वारा Rust या C से इमेज कंटेनर में बनाया जाता है (Rust प्रोग्राम डिप्लॉय करें) | Poseidon2 (और सेट 7 से POSEIDON2_LEN); M4.2 से Keccak-f[1600]; सेट 6 से SHA-256 |
| Solidity | solc --bin-runtime से EVM बाइटकोड, फिर या तो evm.bin इंटरप्रेटर गेस्ट (बाइटकोड इनपुट के रूप में) या evm2rv, जो बाइटकोड को C में अनुवादित करता है, जिसे rand-guest समान आउटपुट वाली RV32IM इमेज में बनाता है (Ethereum ट्रांसपाइलर) | Keccak-256 (टेबल उपलब्ध), 256-बिट मॉड्यूलर अंकगणित, ECRECOVER, स्टोरेज के लिए Merkle-विटनेस syscall |
| Solana / SVM | एक sBPF ELF, जिसे sbpf.bin इंटरप्रेटर गेस्ट चलाता है या sbpf2rv समान आउटपुट वाली RV32IM इमेज में अनुवादित करता है (Solana ट्रांसपाइलर) | SHA-256, Ed25519 सत्यापन, 64-बिट गुणन |
माइलस्टोन
माइलस्टोन 1 ने सामान्य-उद्देश्य मशीन को प्रमाणित किया। माइलस्टोन 3 ने इसे एक शील्डेड पूल में बदल दिया: सर्किट के भीतर सदस्यता वाला ट्रांसफ़र R_exec के अंतर्गत प्रूव होता है, और सत्यापनकर्ता किसी भी प्रोग्राम शब्द को देखे बिना hc की जाँच करता है। माइलस्टोन 4 संगतता है: इसका लोडर, इनपुट कमिटमेंट और Keccak टेबल कंस्ट्रेंट सेट 4 और 5 के रूप में जारी हुए, और SHA-256 टेबल सेट 6 के साथ। EVM और sBPF इंटरप्रेटर गेस्ट, rand-guest टूलचेन और दोनों ट्रांसलेटर बन चुके हैं। ERC-20 ट्रांसफ़र 128 GB की मशीन पर प्रूव किया जा चुका है; टियर 20 पर SPL Token प्रूफ अभी नहीं बना है। माइलस्टोन 5 ब्लॉक एग्रीगेशन के पीछे की रिकर्शन VM है, जो बन चुकी है और हर चेन पर बंद है। कंस्ट्रेंट सेट 7 और 8 सितंबर की समीक्षाओं और गैस मॉडल के बाद आए।
| id | दायरा | समापन मानदंड | स्थिति |
|---|---|---|---|
| M1 | पाँच टेबल, RV32I बेस ISA, HALT/WRITE_OUTPUT/READ_INPUT, ZK चालू, टियर पैडिंग, असेंबलर, एमुलेटर | fib, memcpy, bubble_sort, alu_mix और balance_check प्रूव और सत्यापित होते हैं; हर धोखाधड़ी परीक्षण अस्वीकार होता है | पूर्ण। 44 परीक्षण; बाद की एक समीक्षा ने एक ही चरण में पाँच साउंडनेस कमियाँ दूर कीं |
| M1.5 | व्यूइंग की: एक-इनपुट-एक-आउटपुट शील्डेड ट्रांसफ़र गेस्ट, ML-KEM-768 और ChaCha20-Poly1305 के अंतर्गत नोट एनवेलप, पक्ष- और लेनदेन-स्तरीय प्रकटीकरण, एक सिम्युलेटेड लेजर | एक ट्रांसफ़र टियर 12 पर प्रूव होता है और लेजर उसे स्वीकार करता है; प्रत्येक प्रकटीकरण दायरा ठीक अपनी ही पंक्तियाँ खोलता है; व्यूइंग की से खर्च नहीं किया जा सकता | पूर्ण। नोड में शामिल नहीं किया गया |
| M2 | सत्यापनकर्ता-की कैश, FRI को 100-बिट अनुमानित लक्ष्य पर पुनः समायोजित किया गया, बाइट टेबल को रेंज और निबल में विभाजित किया गया, सब-वर्ड लोड और स्टोर, RV32M एक्सटेंशन | निर्धारित दायरे से संकीर्ण रूप में पूरा हुआ: फ़्लैट-बाइनरी लोडर और अधिक दृढ़ READ_INPUT बाइंडिंग M4.1 में आगे ले जाए गए | पूर्ण। टियर 10 पर fib: प्रूफ 892 KB से 268 KB, प्रूविंग 21.6 s से 3.1 s, पहला सत्यापन 2.17 s से 16 ms। कंस्ट्रेंट सेट 3, एक हार्ड फ़ोर्क |
| M3 | Poseidon2 चिप और syscall; उस पर गेस्ट रूटीन के रूप में NOTE_COMMIT, NULLIFY और MERKLE_VERIFY; खर्च किया गया कमिटमेंट सार्वजनिक आउटपुट से हटाया गया; प्रोग्राम टेबल विटनेस के रूप में, जिसमें hc का डाइजेस्ट सर्किट के भीतर होता है | ट्रांसफ़र रिलेशन सर्किट के भीतर सदस्यता के साथ R_exec के अंतर्गत प्रूव होता है, और verify(hc, proof) कभी कोई प्रोग्राम शब्द नहीं देखता | पूर्ण। ट्रांसफ़र गेस्ट: 4,554 निर्देश, 4,903 चक्र, टियर 14। Merkle वॉक अब एक गणनायुक्त लूप है, इसलिए प्रोग्राम का आकार अब ट्री की गहराई के साथ नहीं बढ़ता |
| CUDA | GPU प्रूवर बैकएंड: Plonky3 के Dft और Mmcs ट्रेट के पीछे CUDA कर्नेल के रूप में NTT और Poseidon2 Merkle कमिटमेंट; rand send, call और deploy --cuda लेते हैं | हर गेस्ट शुद्ध-Rust संदर्भ ट्विन और मॉक ड्राइवर के माध्यम से प्रूव और सत्यापित होता है; CPU सत्यापनकर्ता बैकएंड में भेद नहीं कर सकता | पूर्ण; हार्डवेयर पर पहला रन 2026-09-28। NVIDIA H100 पर कर्नेल sm_80 और sm_90 के लिए PTX में बनते हैं और CPU तथा Plonky3 संदर्भ से मेल खाते हैं। फ़्लीट GPU नोड पर production पुनर्मापन अभी बाकी है। CUDA कॉल इनपुट एनवेलप को सील नहीं कर सकती, क्योंकि सॉल्ट कभी प्रूवर से बाहर नहीं जाता |
| M4.1 | फ़्लैट-बाइनरी लोडर और riscv32im-unknown-none-elf के लिए पहले कंपाइल किए गए no_std Rust गेस्ट; अपनी इनपुट टेबल के साथ सॉल्टेड इनपुट कमिटमेंट H_IN, जिससे READ_INPUT एक कमिटेड वेक्टर के विरुद्ध लुकअप बन जाता है | मानक टूलचेन से बना गेस्ट लोड, प्रूव और सत्यापित होता है; एक ही इनपुट इंडेक्स के दो रीड मेल खाते हैं और इनपुट H_IN से बंधे होते हैं | पूर्ण। 2026-09-11 को कंस्ट्रेंट सेट 4 के रूप में शामिल: 26 सार्वजनिक मान, आठ टेबल, एक हार्ड फ़ोर्क |
| M4.2 | हाथ से लिखी Keccak-f[1600] कोप्रोसेसर टेबल और KECCAK syscall, जो प्रूफ में केवल तभी मौजूद होती है जब गेस्ट ने उसका उपयोग किया हो; प्रूफ-घोषित मेमोरी ऊँचाई; चार घटकों पर आधारित सत्यापनकर्ता की; 2026-09-12 के ऑडिट के बाद FRI फिर से 80 क्वेरी पर | keccak256 एक कंपाइल किए गए गेस्ट के रूप में प्रूव होता है, और बिना टेबल वाला प्रूफ आकार में M4.1 के प्रूफ के बाइट-दर-बाइट समान होता है | पूर्ण। 2026-09-12 को कंस्ट्रेंट सेट 5 के रूप में शामिल, एक हार्ड फ़ोर्क। Keccak-युक्त प्रूफ लगभग 1.9 MB बड़ा होता है, जो डिफ़ॉल्ट 2 MiB सीमा से अधिक है। जिस चेन का जेनेसिस सीमा बढ़ाता है वह इसे स्वीकार करती है: चेन 13 (8 MiB) ने 2026-09-19 को 3.41 MB की Keccak-युक्त कॉल ली, और चेन 20 की सीमा 4 MiB है |
| M4.3 · M4.4 | RV32IM में कंपाइल किए गए EVM और sBPF गेस्ट इंटरप्रेटर, जिनमें विदेशी बाइटकोड इनपुट होता है; Keccak के साथ एक SHA-256 कोप्रोसेसर टेबल; फिर 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 वेक्टर चलाते हैं, और अनुवादित इमेज उनसे शब्दशः मेल खाती हैं। ERC-20 transfer 2026-09-19 को 128 GB के droplet पर टियर 18 पर प्रूव हुआ (85.0 GB शिखर, 53.8 min); टियर 20 पर SPL Token प्रूफ का अनुमान लगभग 330 GB है और वह नहीं बनाया गया है (प्रूविंग मेमोरी)। दोनों में से कोई भी चेन पर कॉल करने योग्य नहीं है: कॉल की सीमा टियर 14 है |
| M5 | रिकर्शन VM (rVM): एक 24-निर्देश वाली Goldilocks-नेटिव मशीन जिसके प्रोग्राम Rand zkVM प्रूफ सत्यापित करते हैं, प्रत्येक आंतरिक प्रूफ आकार के लिए एक N-जेनेरिक एग्रीगेट प्रोग्राम, CPU और CUDA बैकएंड का विभाजन, और एक सेल्फ़-वेरिफ़ायर (M5.1 से M5.4, 2026-09-13 से 2026-09-16) | 50 वास्तविक production बंडल प्रूफ स्वीकार और 50 छेड़छाड़ किए गए प्रूफ नामित चरण पर अस्वीकार; एक वास्तविक बंडल प्रूफ पर सत्यापनकर्ता प्रोग्राम का rVM प्रूफ नेटिव रूप से सत्यापित होता है (टेस्ट प्रोफ़ाइल) | निर्मित; production प्रूफ के लिए बड़ी मशीन आवश्यक। crates/randprotocol-rvm के रूप में शामिल। चेन-स्तरीय एग्रीगेशन मर्ज हो चुका है और हर चेन पर बंद है (नीचे) |
| set 7 | हर LogUp टर्मिनल ब्लाइंड किया गया; हर घोषित टेबल न्यूनतम 2⁷ पंक्तियों पर; इनपुट, सार्वजनिक और सॉल्ट शब्दों पर 32-बिट रेंज जाँच; POSEIDON2_LEN syscall; एक JALR सुधार; key_derivation_v2 से सॉल्ट की गई सत्यापनकर्ता की | 2026-09-27 और 28 की zkVM समीक्षाओं के वे सुधार जो सत्यापनकर्ता की को बदलते हैं, एक ही कट में लिए गए | पूर्ण। Fullnode v0.6.1, चेन 16 (2026-09-28), एक हार्ड फ़ोर्क |
| set 8 | गैस मीटर: cpu टेबल में एक GAS कॉलम और एक सार्वजनिक GAS_LIMIT, जिसमें GAS ≤ GAS_LIMIT सर्किट के भीतर प्रूव होता है; रन की सटीक गैस निजी रहती है | एक कॉल अपनी घोषित सीमा का भुगतान करती है, और हर बंडल प्रूफ वही निर्धारित सीमा घोषित करता है | पूर्ण। Fullnode v0.6.7-rc1, चेन 18 (2026-09-29), एक हार्ड फ़ोर्क। bundle_gas_limit 20,479 है |
शील्डेड पूल के चरण
फ़ुलनोड का लेजर तीन चरणों में आया, प्रत्येक एक हार्ड फ़ोर्क (docs/shielded.md §7)। S1 ने अकाउंट लेजर को नोट पूल से बदला; S3 ब्रिज को नोट के रूप में वापस लाया और सबसे पहले शामिल हुआ; S2 ने उसके ऊपर स्टेकिंग जोड़ी। तीनों main पर और वर्तमान चेन पर हैं।
S2 से नीचे की पंक्तियाँ v0.5 का काम हैं। हर पंक्ति एक हार्ड फ़ोर्क है। इन्हें एक साथ एक नई चेन, चेन 14, के रूप में लागू किया गया। चेन 14 की शुरुआत 2026-09-20 को बिल्ड b3c594c से हुई। उसी दिन तैनात स्रोत एंडपॉइंट्स के माध्यम से एक लाइव zUSD राउंड ट्रिप के बाद इसे v0.5 के रूप में टैग किया गया। चेन 15, जो 2026-09-26 से v0.5.8 और बाद के संस्करणों पर लाइव रही, यह सब लेकर चली। उसमें ऑडिट v4 और v5 के जेनेसिस-नियंत्रित सुधार सक्रिय थे: प्रति-एपॉक बजट वाला अनुमति-सूचीबद्ध फ़ॉसेट, विलंबित बॉन्ड सक्रियण, स्टेक भार की सीमा, जेनेसिस से बंधे पंजीकरण, consensus_domain 1, ब्रिज नियम v2, तथा टोकन रजिस्ट्री की सीमा, बर्न किया जाने वाला पंजीकरण शुल्क और 2⁶³ की नोट सीमा। चेन 20 चेन 19 का हार्ड फ़ोर्क है और 2026-10-01 06:17 UTC से v0.6.8 (c9c9bd3c) पर लाइव है। यह यह सब बनाए रखती है और v0.6 रिलीज़ का काम जोड़ती है, जो नीचे सूचीबद्ध है।
| आईडी | दायरा | पूर्णता मानदंड | स्थिति |
|---|---|---|---|
| S1 | स्वयं पूल: नोट, 2-in-2-out प्रमाणित बंडल, depth-32 Poseidon2 कमिटमेंट ट्री और नलिफ़ायर सेट, लोकल प्रूवर वाला rand वॉलेट, रिडैक्टेड RPC | वॉलेटों के बीच एक शील्डेड ट्रांसफ़र, दो वैलिडेटरों के बीच डबल-स्पेंड की होड़ और बंडलों से भुगतान किया गया डिप्लॉय-और-कॉल, तीनों क्लस्टर सूट में पास होते हैं | पूर्ण। चेन 6 (2026-09-12) से सार्वजनिक फ़्लीट पर लाइव |
| S3 | नोटों के रूप में ब्रिज: ब्रिज की गई होल्डिंग रजिस्ट्री का एसेट इंडेक्स रखती है, एक अटेस्टेशन एक ऐसा नोट जमा करता है जिसकी गणना चेन स्वयं करती है, BridgeBurn एकमात्र दो-बंडल ट्रांज़ैक्शन है; कॉल इनपुट के लिए सील्ड लिफ़ाफ़े, जिन्हें कॉलर खोल सकता है, या प्रति-कॉल कुंजी या कोई नामित ऑडिटर | एक ब्रिज किया गया एसेट नोट के रूप में मिंट, खर्च और बर्न होता है; कॉलर यह प्रकट कर सकता है कि किसी प्रोग्राम ने किस इनपुट पर काम किया, उसे प्रकाशित किए बिना, और rand open-call उस ओपनिंग को H_IN के विरुद्ध जाँचता है | पूर्ण। सबसे पहले लागू हुआ। चेन 9 से 13 के जेनेसिस में ब्रिज अनुभाग नहीं था; चेन 14 के बाद की हर चेन में यह है। चेन 14 से बर्न एक बंडल है, दो नहीं |
| S2 | शील्डेड चेन पर स्टेकिंग: सार्वजनिक वैलिडेटर रजिस्टर, बंडल के बर्न से Bond, दो एपॉक में Unbond, पेआउट पते पर एक नोट में Withdraw, 1,000 ब्लॉक के एपॉक जो सेट को पुनः निर्धारित करते हैं, और रजिस्टर तथा पूल पर आपूर्ति ऑडिट | एक पाँचवाँ वैलिडेटर पंजीकरण करता है, बॉन्ड करता है और अगले एपॉक से ब्लॉक प्रस्तावित करता है; एक वैलिडेटर अनबॉन्ड होकर सेट से बाहर जाता है और एक ऐसे नोट में निकासी करता है जिसे उसका पेआउट वॉलेट खर्च करता है; दोनों क्लस्टर सूट में पास होते हैं | पूर्ण। वॉलेट का लोकल कमिटमेंट ट्री 2026-09-21 को आया: वॉलेट अपने विटनेस की गणना स्वयं करता है और अब अपने नोड को यह नहीं बताता कि वह कौन-सा लीफ़ खर्च कर रहा है |
| RPL | टोकन मानक (docs/tokens.md): टोकन लेजर में एक रजिस्ट्री प्रविष्टि है जिसकी 62-अक्षरों की rpl1… bech32m आईडी होती है; RAND में पंजीकरण शुल्क देकर कोई भी बिना अनुमति के टोकन बना सकता है; मिंट प्राधिकार पंजीकरण के समय तय होता है: कोई नहीं, एक कुंजी, या ब्रिज; प्रतीक अद्वितीय नहीं होते; rand token create, mint, set-authority, burn, info, list, तथा rand_getTokens, rand_getToken, rand_getTokenSupply | एक टोकन पंजीकृत होता है, मिंट होता है, rand send --asset से भेजा जाता है और बर्न होता है, सब उसी पूल में नोटों के रूप में | चेन 14 (v0.5) से चालू। चेन 20 पर पंजीकरण शुल्क 1 RAND है, जो बर्न होता है; रजिस्ट्री में अधिकतम 4,096 टोकन होते हैं, और जेनेसिस zUSD को इंडेक्स 1 पर सूचीबद्ध करता है |
| RPL-2 | प्रोग्राम स्टेट (docs/program-state.md): प्रति-प्रोग्राम सेल (8-वर्ड कुंजी से 8-वर्ड मान, स्टेट रूट में), प्रति एसेट एक सार्वजनिक वॉल्ट, ऐसा टोकन जिसे केवल उसका प्रोग्राम मिंट करता है, और Invoke एक्शन (Action 33), एक ऐसा कॉल जो उन सेलों की घोषणा करता है जिन्हें वह पढ़ता और लिखता है तथा उन नोटों की जिनका वह भुगतान करता है; rand program invoke, state, vault, तथा rand_getProgramCell, rand_getProgramCells, rand_getProgramVault | लेजर किसी ट्रांज़िशन को तभी लागू करता है जब हर घोषित रीड अब भी सही हो और वॉल्ट हर पेआउट को कवर करे; पुराना पड़ चुका रीड अस्वीकार कर दिया जाता है और फिर से प्रमाणित किया जाता है | चेन 20 (v0.6.8) से चालू। cell_fee प्रति निर्मित सेल 0.01 RAND; प्रति इनवोक अधिकतम 8 रीड, 8 राइट और 4 पेआउट। देखें प्रोग्राम |
| छिपे एसेट वाला बंडल | हर ट्रांज़ैक्शन में 2-in-2-out बंडल की जगह ठीक एक 4-in-4-out बंडल होता है: स्लॉट 0–1 में निजी एसेट होता है (केवल-RAND ट्रांसफ़र में डमी), स्लॉट 2–3 हमेशा RAND होते हैं और शुल्क चुकाते हैं। दो-बंडल वाला टोकन ट्रांसफ़र और दो-बंडल वाला ब्रिज बर्न समाप्त हो गए हैं | RAND का ट्रांसफ़र और किसी भी RPL टोकन का ट्रांसफ़र एक जैसा आकार प्रकाशित करते हैं, इसलिए कौन-सा एसेट स्थानांतरित हुआ, यह छिपा रहता है | चेन 14 (v0.5) से चालू। टियर 14, प्रमाणित करने में लगभग 100 s, चेन 14 और 15 पर लगभग 1.42 MB का प्रूफ़; वहाँ hc_bundle 83d3a370…। चेन 18 से 20 बंडल गेस्ट v3 को पिन करती हैं, hc_bundle 60af094a…, लगभग 1.49 MB |
| ट्रांज़ैक्शन बाइंडिंग | हर बंडल प्रूफ़ H("rand-tx-bind-1", chain_id ‖ tx with proofs blanked) पर बनाया जाता है और उसी के विरुद्ध सत्यापित किया जाता है। यह मान पब्लिक-इनपुट खंड में रखा जाता है | कॉपी किया गया, अपरिवर्तित प्रूफ़ बदले हुए गंतव्य, वैलिडेटर या मेमो के साथ दोबारा जमा करने पर अस्वीकार कर दिया जाता है | चेन 14 (v0.5) से चालू। चेन 20 (binding_domain 1) से प्रीइमेज H("rand-tx-bind-2", genesis hash ‖ chain_id ‖ …) है, और हर हस्ताक्षरित एक्शन संदेश में भी जेनेसिस हैश होता है, इसलिए एक चेन के लिए प्रमाणित या हस्ताक्षरित कुछ भी किसी दूसरी चेन पर सत्यापित नहीं होता |
| B1–B4 | ब्रिज सुदृढ़ीकरण (docs/bridge.md §§14–20)। B1: प्रति-बैकिंग दैनिक मिंट सीमा, और एक पॉज़ कुंजी जो केवल रोक सकती है (फिर से चालू करने के लिए PQ कोरम चाहिए)। B2: जिस ब्लॉक का टाइमस्टैम्प उसके पैरेंट से 60 s से अधिक आगे हो, वह अमान्य है, और वैलिडेटर ऐसे ब्लॉक के लिए वोट नहीं देता जो उसकी घड़ी से 15 s से अधिक आगे हो, इसलिए वैलिडेटरों को NTP चाहिए। B3: हर मिंट पर Dilithium2 सह-हस्ताक्षर कोरम। B4: जेनेसिस के बाद PQ गार्डियन कोरम के अंतर्गत किसी ब्रिज किए गए टोकन या बैकिंग को सूचीबद्ध करना, बिना नई चेन शुरू किए | zUSD, सात बैकिंग वाला एक टोकन (Ethereum, Binance Smart Chain, Tron और Solana पर USDT और USDC), ट्रांज़ैक्शन द्वारा पंजीकृत होता है, और total_supply == Σ backings.locked संरचना से ही सत्य रहता है। स्थानीय नौ-चरण गेट (zusd_e2e.rs: चार वैलिडेटर, वास्तविक प्रूफ़; क्रम: फ़ॉसेट, पंजीकरण, डिपॉज़िट, ट्रांसफ़र, बर्न, ऑडिट) 9 में से 9 चरणों में पास हुआ | चेन 14 (v0.5) से चालू। चेन 20 पर: प्रति बैकिंग प्रतिदिन 100,000 zUSD की मिंट सीमा, साथ ही हर रोलिंग 24 घंटे में 4,000 zUSD की वैश्विक सीमा (ब्रिज नियम v2), आठ PQ गार्डियन वाला गार्डियन सेट 1, हर मिंट और हर बर्न पर zUSD में 10 bps शुल्क (bridge.fees), और गार्डियन रोटेशन, जिनके लिए कुंजी पर नियंत्रण का प्रमाण चाहिए और जो 86,400 s प्रतीक्षा करते हैं (bridge.rotation)। zUSD चेन 20 के जेनेसिस में अपनी सात बैकिंग और चेन शुरू होने के समय लॉक 99 zUSD के साथ सूचीबद्ध है |
| ऑडिट v3 | तीसरे आंतरिक ऑडिट चरण के सुधार, जिसका नेतृत्व एक सह-संस्थापक ने किया (2026-09-19; कोई स्वतंत्र ऑडिट नहीं हुआ है)। POOL-1: फ़ॉसेट Mint अपने नोट की ओपनिंग (pk, time, r) साथ रखता है, प्रवेश के समय कमिटमेंट की पुनर्गणना होती है, और मिंटर rand-mint-2 पर हस्ताक्षर करता है; जेनेसिस आवंटन के नोटों में भी ओपनिंग होती है। RPC-1: rand_getWitness(es) एक साथ अधिकतम दो ट्री पुनर्निर्माण चलाता है और 10 s के बाद -32000 busy उत्तर देता है। OPS-1: सभी अठारह वैलिडेटर कुंजियाँ बदली गईं और रिपॉज़िटरी से बाहर जनरेट की गईं; रिपॉज़िटरी में कोई कुंजी ट्रैक नहीं होती | जिस मिंट का कमिटमेंट उसकी राशि से अधिक मूल्य पर खुलता है, वह अस्वीकार कर दिया जाता है; चेन 14 की कोई भी कुंजी कभी रिपॉज़िटरी में नहीं रही | चेन 14 (v0.5) से चालू। PRIV-1, यानी वह विटनेस अनुरोध जो लीफ़ बता देता था, 2026-09-21 को वॉलेट के अपने ट्री से बंद हुआ |
v0.5 के बाद की रिलीज़
हर रिलीज़ एक git टैग है, और fullnode की CHANGELOG.md में उसकी एक प्रविष्टि होती है। जो रिलीज़ कंसेंसस, वायर फ़ॉर्मैट या किसी वेरिफ़ायर कुंजी को बदलती है, वह एक नई चेन के साथ आती है; बाकी रिलीज़ लाइव चेन पर एक-एक नोड करके लागू होती हैं।
| रिलीज़ | क्या लाया | चेन |
|---|---|---|
| v0.5 से v0.5.8 | RPL टोकन, zUSD और सुदृढ़ किया गया ब्रिज (ऊपर); ऑडिट सुधार; इतिहास प्रूनिंग; सहमति और सिंक का सुदृढ़ीकरण | 14, 15 |
| v0.5.9 | रीस्कैन सुधार: फ़ॉसेट केवल जेनेसिस वैलिडेटरों से मिंट करता है, सिंक बैक-ऑफ़, गॉसिप पूर्व-जाँचें | 15 |
| v0.5.10 | पता साझा करना: फ़िंगरप्रिंट, randpay: लिंक और QR कोड; एन्क्रिप्टेड मेमो, जिसे पहली बार चेन 18 ने चालू किया | 15 |
| v0.5.11 | टीम, निवेशक और साझेदार आवंटनों के लिए टाइमलॉक्ड जेनेसिस वेस्टिंग। जेनेसिस-नियंत्रित और किसी भी चेन पर सक्रिय नहीं | कोई नहीं |
| v0.6 | सितंबर की समीक्षाओं से निकले zkVM, rVM और एग्रीगेशन सुधार | 15 |
| v0.6.1 | कंस्ट्रेंट सेट 7: LogUp ब्लाइंडिंग, 2⁷ की न्यूनतम तालिका सीमा, 32-बिट रेंज जाँचें, POSEIDON2_LEN, JALR सुधार। चेन 16 hardening_v6 और बंडल गेस्ट v2 के साथ शुरू की गई | 16 |
| v0.6.2 | प्रत्यायोजित प्रूविंग, चरण 1: rand-prover बाइनरी और वॉलेट का --prover। चरण-1 प्रूवर को स्पेंड कुंजी मिलती है | 16 |
| v0.6.3, v0.6.4 | प्रत्यायोजित प्रूविंग, चरण 2: विभाजित प्राधिकरण। बंडल प्रूफ़ अब स्पेंड कुंजी नहीं लेता, टियर-10 का ऑथ प्रूफ़ लेता है, और ट्रांज़ैक्शन id डोमेन rand-txid-3 हो जाता है | 17 |
| v0.6.6, v0.6.7-rc1 | गैस: कंस्ट्रेंट सेट 8, प्रति प्रूफ़ घोषित गैस सीमा, गतिशील गैस और बाइट मूल्य; मेमो चालू किया गया। v0.6.6 कभी टैग के रूप में जारी नहीं हुआ | 18 |
| v0.6.7 | चेन 18 पर ऐसे सुधार जो कोई सहमति नियम नहीं बदलते: सील किए गए प्रूफ़ की प्रूनिंग (निष्क्रिय), एनवेलप-फ़ॉर्मैट पिन, व्यूइंग कुंजी की स्वच्छता, rVM एलोकेटर, GPU-कर्नेल एलियासिंग, ALU परीक्षण कवरेज। इसका पूरा वर्कस्पेस परीक्षण समाप्त होने से पहले टैग किया गया | 18, 19 |
| v0.6.8 | RPL-2: प्रोग्राम सेल, प्रोग्राम वॉल्ट और Invoke क्रिया। दोनों दिशाओं में zUSD ब्रिज शुल्क। audit-v6 के अंतिम सुधार: लॉक का कोई स्वचालित विमोचन नहीं (CON-4) और टाइमआउट-प्रमाणपत्र पेसमेकर (CH-1); एक --public-rpc लिसनर, पठन सीमाएँ, आरक्षित वैलिडेटर पीयर, सिंक और गॉसिप बजट, पूल की बाइट सीमा, प्रूफ़ हेडर की घोषित डिग्री पर सीमा (ZKV-4); और जेनेसिस-नियंत्रित नियम जिन्हें चेन 20 चालू करती है: जेनेसिस-हैश बंधन, testnet, 1,024 ब्लॉक की प्रूफ़ विंडो, गैस मूल्य की ऊपरी सीमाएँ और भुगतान किया जाने वाला बाइट भार, वोट द्वारा प्रवेश, एक भिन्न के रूप में स्टेक-प्रविष्टि सीमा, ब्रिज रोटेशन के लिए स्वामित्व-प्रमाण और विलंब। चेन 20 पर भेजने के लिए वॉलेट को इसी बिल्ड की आवश्यकता है | 20 |
आज यह कहाँ रुकता है
व्हाइटपेपर से विचलन, जिन्हें ढका नहीं गया बल्कि स्पष्ट रूप से बताया गया है। हर एक को क्रेट के अपने दस्तावेज़ीकरण में उस माइलस्टोन के साथ ट्रैक किया जाता है जो उसे बंद करता है।
hcबाइंडिंग है पर हाइडिंग नहीं: इसमें कोई सॉल्ट नहीं है, इसलिए अनुमानित प्रोग्राम की पुष्टि की जा सकती है और एक ही प्रोग्राम के दो डिप्लॉयमेंट आपस में जोड़े जा सकते हैं। M3.4 ने जो हटाया वह यह है कि वेरिफ़ायर पूरा प्रोग्राम खुले रूप में रखता था।- 2026-09-21 से पहले बना वॉलेट अपने नोड से विटनेस माँगता है, और विटनेस अनुरोध उस लीफ़ का नाम बताता है जिसे वह खर्च करने वाला है। वर्तमान
randट्री की अपनी प्रति रखता है और कभी नहीं माँगता; पुराने वॉलेट के लिए नोड अब भीrand_getWitnessउपलब्ध कराता है। - सीमा पर जमा सार्वजनिक होते हैं: फ़ॉसेट मिंट, जेनेसिस नोट और ब्रिज जमा, तीनों अपनी राशि खुले रूप में रखते हैं (चेन 14 से मिंट और जेनेसिस नोट अपना ओपनिंग भी रखते हैं, इसलिए स्वामी कुंजी भी सार्वजनिक होती है); यह वही एक-हॉप दृश्यता है जो किसी भी जगह पारदर्शी से शील्डेड जमा में होती है।
- ज़ीरो नॉलेज सांख्यिकीय है, पूर्ण नहीं। Plonky3 0.7 का हाइडिंग FRI वास्तव में यही गुण देता है, और क्रेट यही बताता है।
- ट्रांसक्रिप्ट हैश डेवलपमेंट राउंड कॉन्स्टेंट वाला Poseidon2 है, पेपरों का SHA3-384 / BLAKE3-384 नहीं। यह कॉन्फ़िग का बदलाव है, पुनर्लेखन नहीं।
- 80 FRI क्वेरी पर बंडल प्रूफ़ चेन 14 और 15 पर लगभग 1.42 MB था (चेन 13 तक लगभग 1.3 MB)। चेन 17 से एक ट्रांसफ़र में लगभग 2.85 MB प्रूफ़ होता है: बंडल प्रूफ़, लगभग 1.49 MB, और ऑथ प्रूफ़, लगभग 1.37 MB। डिफ़ॉल्ट चेन पर, 4 MiB ब्लॉक और 2 MiB प्रूफ़ सीमा के साथ, Keccak वाला प्रूफ़ सीधे प्रूफ़ सीमा से बड़ा हो जाता है; चेन 20 का जेनेसिस 20 MiB ब्लॉक और 4 MiB प्रूफ़ सीमा तय करता है (चेन 13 से 16 ने 8 MiB तय की थी)।
- कॉल प्रूफ़ का हेडर छिपा नहीं होता। यह टियर तथा Keccak और SHA-256 तालिकाओं की ऊँचाइयाँ घोषित करता है, इसलिए यह दिखाता है कि कॉल ने हैशिंग की या नहीं। v0.6 प्रूवर सीमा से पहले चेन 15 पर कमिट की गई कॉलें इससे अधिक उजागर करती थीं: 2⁷ से कम पंक्तियों वाली निजी तालिका प्रूफ़ से पढ़ी जा सकती थी। v0.6 प्रूवर सीमा ने नई कॉलों के लिए इसे बंद किया, और
hardening_v6के साथ कंस्ट्रेंट सेट 7 ने इसे चेन 16 से आगे चेन का नियम बना दिया। - एक कॉल टियर 14 तक सीमित है, अधिकतम 2¹² Keccak पंक्तियों (128 परम्यूटेशन) और 2¹³ SHA-256 पंक्तियों (128 कम्प्रेशन) के साथ, और
hardening_v6के अंतर्गत 8,180 से अधिक वर्ड वाला प्रोग्राम डिप्लॉय नहीं किया जा सकता। EVM और sBPF इंटरप्रेटर गेस्ट तथा अनूदित ERC-20 और SPL Token इमेज, सभी इससे ऊपर हैं। - जिसके पास विटनेस है, वह सब कुछ देखता है। ZK वेरिफ़ायर के दृष्टिकोण की रक्षा करता है, प्रूवर के नहीं। चेन 17 से वॉलेट स्पेंड कुंजी सौंपे बिना बंडल प्रूफ़ एक युग्मित
rand-proverको सौंप सकता है, पर वह प्रूवर अब भी व्यूइंग कुंजी रखता है और नोट देखता है। CUDA बैकएंड पहली बार 2026-09-28 को हार्डवेयर पर चला और इसका अभी तक कोई प्रोडक्शन माप नहीं है।
रिपॉज़िटरी संरचना
फ़ुलनोड का Cargo वर्कस्पेस, जैसा उसके README और उसकी crates/ डायरेक्टरी में व्यवस्थित है।
| पथ | इसमें क्या है |
|---|---|
crates/randprotocol-core/ | शुद्ध लॉजिक, कोई I/O नहीं: क्रिप्टोग्राफ़ी, नोट और कमिटमेंट ट्री, लेजर नियम, गैस, जेनेसिस, HotStuff स्टेट मशीन |
crates/randprotocol-zkvm/ | Rand zkVM, कंस्ट्रेंट सेट 8 पर zkp-circuits/research से वेंडर किया गया (सर्किट aeacf31; deploy/sync-zkvm.sh से पुनः सिंक), साथ में चेन-पक्ष का प्रूफ़ वेरिफ़ायर और उसका वेरिफ़ायर-कुंजी कैश |
crates/randprotocol-rvm/ | रिकर्शन VM, zkp-circuits/recursion से वेंडर किया गया: एक फ़ील्ड-नेटिव मशीन जिसके प्रोग्राम Rand zkVM प्रूफ़ सत्यापित करते हैं |
crates/bridge-codec/ | गार्डियन ब्रिज का वायर फ़ॉर्मैट और कोरम नियम, Solidity कॉन्ट्रैक्ट और Solana प्रोग्राम के साथ बाइट-दर-बाइट साझा |
crates/randprotocol-node/ | RocksDB स्टोरेज, libp2p नेटवर्किंग, मेमपूल, ब्लॉक सिंक, JSON-RPC सर्वर और rand-node बाइनरी |
crates/randprotocol-client/ | rand वॉलेट बाइनरी और RpcClient लाइब्रेरी, बिना किसी RocksDB या libp2p निर्भरता के |
crates/randprotocol-prover/ | rand-prover बाइनरी: एक प्रत्यायोजित प्रूवर जो युग्मित वॉलेट के लिए बंडल प्रूव करता है |
deploy/ | Testnet जेनेसिस फ़ाइलें, nodes.env, रन स्क्रिप्ट, क्लाउड प्रोविज़निंग, कट-ओवर और रीबिल्ड स्क्रिप्ट। चेन-14 की तैयारी के बाद से यहाँ कोई कुंजी ट्रैक नहीं की जाती |
docs/ | संदर्भ दस्तावेज़ीकरण और डिज़ाइन विनिर्देश |
scripts/ | स्थानीय दो-वैलिडेटर testnet |
विनिर्दिष्ट, पर अभी जारी नहीं
ये घटक पेपरों या फ़ुलनोड के दस्तावेज़ों में वर्णित हैं पर चल नहीं रहे: या तो रिपॉज़िटरी में अनुपस्थित हैं, या बने हुए हैं पर किसी भी चेन पर चालू नहीं। इन्हें इसलिए सूचीबद्ध किया गया है ताकि विनिर्देश और कोड के बीच का अंतर अनुमान पर नहीं, स्पष्ट रूप से पढ़ा जा सके।
| घटक | स्थिति |
|---|---|
| bridge · guardian | गार्डियन और रिलेयर डेमन जो अटेस्टेशन फ़ॉर्मैट को आरंभ से अंत तक चलाते हैं; कॉन्ट्रैक्ट, कोडेक और फ़ुलनोड का प्राप्ति-पक्ष जारी हैं, डेमन नहीं |
| fullnode · aggregation | रिकर्शन VM के साथ ब्लॉक एग्रीगेशन: सीलिंग, प्रूनिंग और सील्ड-रूप सिंक। बना हुआ है और हर चेन पर बंद है; rand-node aggregation खंड वाले जेनेसिस को अस्वीकार करता है। इसे अभी भी आरंभ से अंत तक के जाली-एग्रीगेट अभ्यास की आवश्यकता है, और यह केवल बंडल प्रूफ़ हटाता है, ऑथ प्रूफ़ नहीं। प्रोडक्शन rVM प्रूफ़ को बड़ी मशीन चाहिए: कंस्ट्रेंट सेट 7 के अंतर्गत दो के एग्रीगेट ने 133 GB, तीन के ने 221 GB, और एग्ज़िट प्रूफ़ ने 256 GB से अधिक लिया (2026-09-28 और 29 को मापा गया; कंस्ट्रेंट सेट 8 के अंतर्गत पुनः नहीं मापा गया) |
| fullnode · vesting | टीम, निवेशकों और साझेदारों के लिए टाइमलॉक्ड जेनेसिस आवंटन (v0.5.11, docs/vesting.md)। जेनेसिस-नियंत्रित: vesting खंड के बिना चारों वेस्टिंग क्रियाएँ अस्वीकार की जाती हैं, और किसी भी चेन में यह खंड नहीं है। चेन 20 का आपूर्ति ऑडिट हर वेस्टिंग काउंटर को शून्य बताता है। v0.6.8 से एक प्रतिसंहरणीय प्रविष्टि उसके प्रतिसंहरणकर्ताओं की एक थ्रेशोल्ड द्वारा प्रतिसंहृत की जाती है, और केवल उसी ट्रेज़री को जिसका नाम उसकी जेनेसिस प्रविष्टि में है |
| fullnode · slashing | लीडर इक्विवोकेशन के लिए स्लैशिंग और जेलिंग v0.6.8 में staking.slashing के पीछे बनी हैं और चेन 20 पर बंद हैं (इसके जेनेसिस में यह नहीं है, जबकि सभी 26 वैलिडेटर कुंजियाँ एक ही ऑपरेटर की हैं)। ब्लॉक पुरस्कार, हैश-सॉर्टिशन लीडर बीकन, नलिफ़ायर एक्युमुलेटर और क्रॉस-प्रोग्राम कॉल नहीं बने हैं। प्रति-प्रोग्राम स्थायी स्टेट RPL-2 के रूप में जारी हुई (ऊपर) |
prover/ | GPU प्रूविंग डेमन: कतार से बैच लेता है, सबमिशन पर होड़ करता है। CUDA कर्नेल zkp-circuits में हैं और पहली बार 2026-09-28 को NVIDIA H100 पर चले; मार्केट डेमन मौजूद नहीं है। rand-prover, जो जारी है, अपने साथ युग्मित वॉलेट के लिए प्रूव करता है और कोई मार्केट नहीं है |
| zkp-circuits · M4.4 exit proof | SPL Token ट्रांसफ़र (टियर 20) का प्रूफ़, जिसका बहिर्वेशित अनुमान लगभग 330 GB है। ERC-20 ट्रांसफ़र (टियर 18) 2026-09-19 को 128 GB के ड्रॉपलेट पर प्रूव किया गया। चेन 20 पर इनमें से कोई भी कॉल नहीं किया जा सकता, क्योंकि वह एक कॉल को टियर 14 तक सीमित करती है |
बिल्ड और परीक्षण
हर रिपॉज़िटरी में मानक Rust वर्कफ़्लो लागू होता है। fullnode एक Cargo वर्कस्पेस है, जिसका टूलचेन पिन किया हुआ है और जिसमें एक क्लस्टर टेस्ट सूट है जो TCP पर वास्तविक नोड चलाता है। इसके बिल्ड के लिए circuits रिपॉज़िटरी का इसके बगल में circuits नाम की डायरेक्टरी में चेक-आउट होना आवश्यक है, और वह भी उसी कमिट पर जिससे vendored crates सिंक किए गए थे (v0.6.7 और v0.6.8 के लिए aeacf31)। zkVM, zkp-circuits में एक स्वतंत्र crate है। इसका टूलचेन पिन अलग है और इसमें एक डेमो है जो बताता है कि एक गोपनीय कॉल क्या प्रकट करती है और क्या नहीं।
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
16-vCPU मशीन पर v0.6.1 पर मापा गया fullnode सूट: core के 521 टेस्ट, node के 373, client के 117, धोखेबाज़ prover सूट के 116, hidden-bundle धोखाधड़ी के 21 (75 मिनट), वॉलेट फ़्लो के 6 (53 मिनट), क्लस्टर के 26 (44 मिनट) और zUSD एंड-टू-एंड गेट के 2 (51 मिनट)। रिकर्शन VM के प्रोडक्शन प्रूफ़ इस सूट से बाहर हैं और उनके लिए ऊपर बताई गई मेमोरी चाहिए।
नोड चलाना में बताया गया है कि इस बिल्ड के साथ सार्वजनिक testnet से कैसे जुड़ें। testnet का genesis, बूटस्ट्रैप पीयर और रन स्क्रिप्ट fullnode की deploy/ डायरेक्टरी में आते हैं, और डाउनलोड पेज पर इसका संक्षिप्त संस्करण है।
योगदान करें
fullnode, GNU General Public License v3.0 (GPL-3.0-only) के अंतर्गत लाइसेंस प्राप्त है। पहले यह Apache-2.0 के अंतर्गत था। बग और डिज़ाइन प्रस्तावों के लिए issue उसी रिपॉज़िटरी पर खोलें जिसे आपका बदलाव प्रभावित करता है। पुल रिक्वेस्ट का स्वागत है: सबमिट करने से पहले cargo fmt && cargo clippy चलाएँ और बदलावों का दायरा सीमित रखें। शुरुआत के लिए fullnode issues सही जगह है।
आर्किटेक्चर, प्राइवेसी सर्किट, फ़ी-टोकन प्रूफ़ और पोस्ट-क्वांटम ट्रेडऑफ़, सभी पेपर्स पेज पर उपलब्ध व्हाइटपेपर में प्रलेखित हैं। इस दस्तावेज़ीकरण के हर पेज की जाँच fullnode रिपॉज़िटरी की अपनी docs/ डायरेक्टरी से की जाती है।