Rand Protocol
दस्तावेज़ीकरण
मार्गदर्शिकाएँ

मिंट और बर्न

RAND पूल में कैसे प्रवेश करता है - जेनेसिस जमा और testnet फ़ॉसेट - और उससे कैसे बाहर निकलता है - शुल्क और बंडल के बर्न शब्द - और प्रत्येक गतिविधि क्या प्रकाशित करती है।

इस पेज का उपयोग किसी परीक्षण चेन पर फ़ॉसेट चलाने, यह समझने के लिए करें कि वायर पर Mint लेनदेन क्या होता है, और यह ठीक-ठीक देखने के लिए कि कोई बॉन्ड या ब्रिज बर्न पूल से मूल्य कैसे बाहर ले जाता है। हर प्रवेश और हर निकास सार्वजनिक है; इनके बीच की हर चीज़ एक नोट है।

फ़ॉसेट मिंट

चेन 20 पर जेनेसिस के बाद RAND बनाने का एकमात्र तरीका Mint है, और यह केवल उन चेनों पर मौजूद है जिनका जेनेसिस "faucet": true कहता है। यह एक वैलिडेटर-हस्ताक्षरित, बंडल-रहित लेनदेन है:

Action::Mint { cm: Word8, pk: Word8, time: u32, r: Word8, envelope: Envelope, amount: u64,
               minter: PublicKey, signature: Signature }

किसी वैलिडेटर नोड पर rand_mint(address[, amount]) दिए गए rand1… पते के लिए amount का एक नोट बनाता है, उसके एनवेलप को एक अस्थायी प्रेषक कुंजी के अंतर्गत सील करता है, नोड की अपनी Dilithium2 कुंजी से मिंट पर हस्ताक्षर करता है, और उसे सामान्य मेमपूल के माध्यम से प्रस्तुत करता है — इसलिए मिंट सहमति से होकर गुज़रता है और हर नोड उसे लागू करता है। प्रति कॉल सीमा 100000000000 यूनिट, यानी 100 RAND, है, और डिफ़ॉल्ट मान यही सीमा है। चेन 14 से मिंट नोट की ओपनिंग — pk, time और r — साथ ले जाता है और हस्ताक्षर उसे भी कवर करता है: प्रवेश-जाँच (pk, no sender, amount, asset 0, time, r) का कमिटमेंट फिर से गणना करती है और जो cm मेल नहीं खाता उसे the mint's commitment does not open to its published note and amount के साथ अस्वीकार करती है, और time को बंडल विंडो के भीतर रखती है। rand_mint के पैरामीटर अपरिवर्तित हैं। चेन 14 से 19 पर हस्ताक्षरित संदेश blake3("rand-mint-2" ‖ bincode(chain_id, cm, pk, time, r, envelope, amount)) है; चेन 20 पर, जिसका जेनेसिस binding_domain: 1 निर्धारित करता है, यह जेनेसिस हैश पर rand-mint-3 है जिसके बाद वही फ़ील्ड आते हैं, इसलिए एक चेन के लिए हस्ताक्षरित मिंट किसी भी अन्य चेन पर अस्वीकार हो जाता है, भले ही वह वही चेन id और वही वैलिडेटर कुंजियाँ साझा करती हो। ऑब्ज़र्वर के पास कोई वैलिडेटर कुंजी नहीं होती और वह faucet mints are signed by validators; ask a validator node उत्तर देता है; जिस चेन पर यह फ़्लैग नहीं है वह faucet is disabled on this chain उत्तर देती है।

चेन 20 का फ़ॉसेट चालू है, पर उसके जेनेसिस के staking खंड से सीमित है, जिसके मान चेन 19 के समान हैं:

नियमचेन 20अस्वीकृति
प्राप्तकर्ता16 वॉलेटों की अनुमति-सूची (staking.faucet_recipients); मिंट का प्रकाशित pk उसमें होना चाहिएthe faucet may not mint to this recipient (not in staking.faucet_recipients), स्थायी
बजटप्रति 1,000-ब्लॉक एपॉक 10,000 RAND (staking.faucet_budget_per_epoch), सभी वैलिडेटरों को मिलाकरthe faucet budget of … for this epoch is exhausted (… minted); अगला एपॉक इसे स्वीकार करता है
मिंटर26 में से 18 वैलिडेटर (staking.faucet_minters, चेन 16 से सूचीबद्ध); मिंट पर इनमें से किसी एक का हस्ताक्षर होना चाहिएminter … is not a faucet minter on this chain

इसलिए चेन 20 पर rand faucet केवल सूची में शामिल वॉलेट के लिए काम करता है, और तभी जब अनुरोध ऐसे वैलिडेटर नोड से किया जाए जिसकी कुंजी सूचीबद्ध मिंटर है; किसी भी अन्य पते को भुगतान ऐसे व्यक्ति से मिलना होगा जिसके पास RAND है।

rand faucet                          # 100 RAND to this wallet's address, waits for the commit
rand faucet rand1… --amount 25       # to another address, less than the cap
→ {"method":"rand_mint","params":["rand1…", "100000000000"]}
← "9ab1c0…4f"

क्या सार्वजनिक है: नए नोट का कमिटमेंट, उसका एनवेलप, खुली राशि, और मिंट करने वाले वैलिडेटर की सार्वजनिक कुंजी (उसके पते के रूप में दिखाई गई) और हस्ताक्षर। ओपनिंग नोट की स्वामी कुंजी pk भी प्रकाशित करती है, इसलिए फ़ॉसेट नोट का स्वामी सार्वजनिक होता है, जैसे किसी withdraw का भुगतान-प्राप्तकर्ता होता है; जो छिपा रहता है वह यह है कि वह नोट बाद में कब और कहाँ खर्च होता है। “100 RAND मिंट हुए” से “100 RAND मूल्य का एक नोट मौजूद है” तक की एक-चरणीय कड़ी वही दृश्यता है जो पारदर्शी-से-शील्डेड जमा की कहीं भी होती है। प्रवेश-जाँच यह परखती है कि फ़ॉसेट सक्षम है, राशि सीमा के भीतर है, एपॉक के बजट में जगह है, जहाँ जेनेसिस में अनुमति-सूची है वहाँ प्राप्तकर्ता उसमें है, कमिटमेंट प्रकाशित नोट पर खुलता है, मिंटर एक वैलिडेटर है और जहाँ जेनेसिस में मिंटर सूची है वहाँ उसमें है, और हस्ताक्षर सत्यापित होता है; मिंट कोई शुल्क नहीं देता।

rand_getTransaction इसे { "kind": "mint", "cm": "…", "amount": "100000000000", "minter": "<validator base58>" } के रूप में "bundle": null के साथ प्रस्तुत करता है — राशि एक दशमलव स्ट्रिंग है, जैसे चेन 14 से RPC द्वारा दी जाने वाली हर u64 राशि; एक्सप्लोरर इन्हें kind=mint के अंतर्गत सूचीबद्ध करता है, जो सार्वजनिक amount वाले गिने-चुने प्रकारों में से एक है।

जेनेसिस जमा

मूल्य के प्रवेश का दूसरा तरीका जेनेसिस फ़ाइल है: rand-node genesis को दिया गया हर --alloc rand1<address>=<RAND> नई कमिटमेंट यादृच्छिकता के साथ एक जमा नोट { cm, envelope, amount, opening } बन जाता है, जो ट्री की पहली लीफ़ होती हैं। चेन 20 में नौ जेनेसिस नोट हैं: सात RAND नोट, कुल 5,184.243719258 RAND (genesis_deposited), जो चेन 19 के एक स्नैपशॉट से आगे लाए गए ऑपरेटर बैलेंस हैं, और 10 तथा 89 zUSD के दो zUSD नोट, यानी चेन 19 से आगे लाई गई ब्रिज कस्टडी के 99 zUSD (ब्रिज), जो RAND नहीं हैं और genesis_deposited में नहीं गिने जाते। चेन 19 पर उन वॉलेटों में रखे RAND जो ऑपरेटर के नहीं हैं, लगभग 520 RAND, और न निकाले गए वैलिडेटर शुल्क आगे नहीं लाए गए। इतिहास: चेन 19 में आठ थे, 5,294.644359629 RAND के सात RAND नोट और 10 zUSD का एक; चेन 18 में छह RAND नोट थे, 1,000 RAND के पाँच और 300 RAND का एक; चेन 14 और 15 में 1,000 RAND के पाँच थे। राशि सार्वजनिक है ताकि हर कोई प्रारंभिक आपूर्ति का योग कर सके, और चेन 14 से नोट अपनी ओपनिंग भी साथ ले जाता है, इसलिए जेनेसिस नोट का स्वामी अभिकल्पना के अनुसार सार्वजनिक है। उन्हीं आवंटनों को दोबारा काटने से अलग नोट और अलग जेनेसिस हैश बनते हैं, और ऐसा जानबूझकर है।

बर्न

हर लेनदेन एक चार-स्लॉट वाला छिपी-परिसंपत्ति बंडल ले जाता है, और उसमें दो बर्न शब्द होते हैं: burn_r वह RAND है जो पूल छोड़कर किसी सार्वजनिक स्थान पर जाता है, और burn_a उस टोकन की राशि है जिसका नाम burn_asset देता है। बंडल गेस्ट दोनों समूहों को एक ही प्रूफ़ में संतुलित करता है, और प्रवेश-जाँच इन तीनों को शून्य होना अनिवार्य करती है, सिवाय इन क्रियाओं के:

बर्ननियममूल्य कहाँ जाता है
किसी Bond का बंडलburn_r == amountरजिस्टर में वैलिडेटर का सार्वजनिक stake
किसी BridgeBurn का बंडलburn_asset == asset, burn_a == amount, burn_r == 0, asset != 0Rand पर नष्ट; स्रोत-चेन का कॉन्ट्रैक्ट गार्जियन-हस्ताक्षरित बर्न संदेश के आधार पर नामित कॉइन का amount जारी करता है। चेन 20 पर चेन 10 bps शुल्क ट्रेज़री के लिए एक zUSD नोट के रूप में रखती है और जारी राशि amount − fee होती है
किसी TokenBurn का बंडलब्रिज बर्न जैसी ही संरचनानष्ट; RPL टोकन की सार्वजनिक total_supply ठीक उतनी घट जाती है
किसी Invoke का बंडल (RPL-2, चेन 20)burn_r, और burn_asset का burn_a, जैसा प्रोग्राम का ट्रांज़िशन घोषित करता हैप्रोग्राम के सार्वजनिक वॉल्ट में जमा RAND और टोकन, या प्रोग्राम का अपना टोकन नष्ट; वॉल्ट फिर से भुगतान केवल चेन-गणित नोटों के रूप में करता है (प्रोग्राम)

(किसी register_aggregator का बंडल भी अपना जेनेसिस बॉन्ड burn_r के माध्यम से बर्न करता है; चेन 20 पर एग्रीगेशन बंद है।)

बर्न शुल्क नहीं हैं। बॉन्ड का बर्न पूल से रजिस्टर की ओर जाता RAND है और आपूर्ति ऑडिट के burned में गिना जाता है (और register_total में फिर दिखता है)। चेन 14 से ब्रिज बर्न एक बंडल है (पहले यह दो था): स्लॉट 0–1 ब्रिज की गई परिसंपत्ति को बर्न करते हैं और स्लॉट 2–3 शुल्क चुकाते हैं, इसलिए यह RAND आपूर्ति को केवल उस शुल्क, BRIDGE_BURN_FEE, 0.01 RAND, के माध्यम से छूता है। इसे ऐसे कॉइन का नाम देना होगा जो परिसंपत्ति का आधार है, उस कॉइन की पूर्ण संख्या में यूनिट जारी करनी होंगी, और उस आधार में लॉक राशि के भीतर रहना होगा (ब्रिज)। चेन 20 पर उसका जेनेसिस bridge.fees zUSD में हर ब्रिज किए गए मिंट और बर्न पर 10 bps भी लेता है: जमा सकल राशि में से शुल्क घटाकर क्रेडिट करता है और बर्न amount − fee जारी करता है, और हर शुल्क ट्रेज़री के लिए एक शील्डेड zUSD नोट होता है। शुल्क नोट जारी और समर्थित रहता है, इसलिए zUSD का total_supply == Σ locked बना रहता है; यह RAND की गतिविधि नहीं है और RAND आपूर्ति ऑडिट में प्रवेश नहीं करता। TokenBurn 0.001 RAND का बंडल आधार शुल्क देता है; ब्रिज किया गया टोकन वहाँ अस्वीकार होता है और bridge-burn के माध्यम से बाहर जाता है।

चेन 20 पर, चेन 15 से हर चेन की तरह, एक शुल्क बर्न भी है: उसका जेनेसिस tokens.burn_registration_fee निर्धारित करता है, इसलिए RegisterToken या RegisterBridgedToken का 1 RAND registration_fee प्रस्तावक को चुकाए जाने के बजाय नष्ट हो जाता है, और प्रस्तावक केवल बंडल आधार शुल्क रखता है। इसे burned में और, अलग से, registration_fees_burned में गिना जाता है (RPL टोकन)।

rand bond <validator> 1000 [--registration <hex>]     # burns 1000 RAND out of this wallet's notes
rand bridge-burn <ASSET> <AMOUNT> <TO_CHAIN> <TOKEN> <TO>   # burns AMOUNT of a bridged asset, released as TOKEN on TO_CHAIN
rand token burn <ASSET> <AMOUNT>                      # destroys AMOUNT of an RPL token this wallet holds

शुल्क दूसरा निकास हैं

हर बंडल का fee पूल छोड़कर ब्लॉक प्रस्तावक के rewards में जाता है, जो एक सार्वजनिक रजिस्टर फ़ील्ड है, और पूल में तभी लौटता है जब वैलिडेटर उसे एक नोट के रूप में निकालता है (स्टेकिंग)। Withdraw 0.001 RAND का आधार शुल्क निकाली गई राशि में से उस ब्लॉक के प्रस्तावक को चुकाता है जो उसे लागू करता है; वह आधार शुल्क रजिस्टर से कभी बाहर नहीं जाता, इसलिए यह कोई सीमा-पार गमन नहीं है।

आपूर्ति कैसे चलती है

in:   genesis_deposited, faucet_minted, withdraw_deposited, program_rand_out
out:  fees_paid, burned
pool_value     = in − out
total_supply   = pool_value + Σ register (stake + pending + rewards) + program_rand_held
               ==  genesis_deposited + genesis_staked + faucet_minted − slashed − registration_fees_burned

program_rand_held और program_rand_out चेन 20 (RPL-2) पर नए हैं: Invoke द्वारा burn_r के माध्यम से किसी प्रोग्राम वॉल्ट में बर्न किया गया RAND पूल की ओर burned में गिना जाता है और वॉल्ट में रखा रहता है, और वॉल्ट जो नोटों के रूप में चुकाता है वह पूल में लौट आता है। rand_getSupply दोनों को invariant_holds के साथ प्रस्तुत करता है।

केवल faucet mint ही chain द्वारा जारी की गई राशि में वृद्धि करता है, और chain 20 पर केवल बर्न किया गया पंजीकरण शुल्क ही उसमें से घटाता है: slashed किसी स्लैश किए गए aggregator बॉन्ड की गणना करता या, genesis के staking.slashing खंड के अंतर्गत, किसी स्लैश किए गए validator स्टेक की, और chain 20 पर इनमें से कोई भी नहीं है (एग्रीगेशन बंद है और slashing null है)। बॉन्ड, शुल्क, निकासी और वॉल्ट जमा मूल्य को पूल, रजिस्टर और वॉल्ट के बीच स्थानांतरित करते हैं, और कुछ भी सृजित नहीं करते। आपूर्ति में काउंटर और एक हल किया गया उदाहरण दिया गया है। ब्लॉक-एग्रीगेशन सब्सिडी — हॉल्विंग अनुसूची पर प्रत्येक सील किए गए ब्लॉक के लिए नया RAND, जो किसी aggregator को जमा नोट के रूप में दिया जाता है — पहला अनुसूचित निर्गमन होगी, और यह chain 20 पर सक्रिय नहीं है।

2026-10-12 को fullnode कमिट c0878c3f (चेन 21) के विरुद्ध अंतिम बार सत्यापित। जहाँ कोड और यह पृष्ठ असहमत हों, वहाँ कोड सही है; हमें बताएँ।