इस पृष्ठ का उपयोग किसी लेनदेन पर शुल्क तय करने, किसी डिप्लॉय या कॉल की लागत का अनुमान लगाने और यह समझने के लिए करें कि वैलिडेटर को कितना भुगतान मिलता है। शुल्क RAND में न्यूनतम सीमाएँ हैं। कॉल को छोड़कर हर क्रिया एक नियत शुल्क चुकाती है। चेन 20 पर एक कॉल अपने प्रमाण द्वारा घोषित गैस सीमा और अपने बाइट्स का भुगतान करती है, ऐसी कीमतों पर जो ब्लॉकों के भरे होने के अनुसार बदलती हैं और एक अधिकतम सीमा पर रुक जाती हैं।
न्यूनतम शुल्क
शुल्क 10⁻⁹ RAND की इकाइयों में होते हैं। स्थिरांक randprotocol_core::gas में हैं:
| लेनदेन | न्यूनतम शुल्क | आज |
|---|---|---|
कोई भी बंडल: RAND या किसी भी RPL टोकन का ट्रांसफ़र, एक बॉन्ड, एक ब्रिज जमा (BridgeAttest, जिसका भुगतान उसका रिलेयर करता है), एक TokenMint, एक SetAuthority, एक TokenBurn, एक ListBacking | BUNDLE_BASE = 1,000,000 इकाइयाँ | 0.001 RAND |
| डिप्लॉय | BUNDLE_BASE + DEPLOY_PER_WORD (100,000) × (प्रोग्राम वर्ड + सार्वजनिक वर्ड) | 256-वर्ड का प्रोग्राम: 0.0266 RAND; 4,096-वर्ड का प्रोग्राम: 0.4106 RAND; 65,096-वर्ड की SPL Token इमेज, अपने 27,151-वर्ड के सार्वजनिक इनपुट के साथ: 9.2257 RAND (चेन 13 पर 2026-09-19 को डिप्लॉय की गई)। चेन 16 (hardening_v6, चेन 20 सहित) से ऐसा डिप्लॉय, जिसे कोई कॉल समा न सके, ProgramUncallable के रूप में अस्वीकार कर दिया जाता है: सार्वजनिक इनपुट रहित प्रोग्राम के लिए 8,180 से अधिक वर्ड, और सार्वजनिक इनपुट के साथ इससे कम। वह इमेज चेन 20 पर अस्वीकार कर दी जाती |
| कॉल | ऐसी चेन पर जिसके जेनेसिस में gas खंड है (चेन 20, जैसे चेन 18 और 19): BUNDLE_BASE + gas_price × कॉल प्रमाण द्वारा घोषित गैस सीमा + byte_price × कॉल प्रमाण और इनपुट एनवेलप का प्रत्येक KiB (आंशिक KiB पूरा गिना जाता है), बाइट 0 से। देखें चेन 18 पर गैस। इस खंड के बिना किसी चेन पर: BUNDLE_BASE + call_fee(tier), जहाँ call_fee = CALL_BASE (1,000,000) + 10 से ऊपर प्रत्येक दो टियर पर 100,000, साथ ही 2,097,152 + 18,432 बाइट की निःशुल्क छूट से ऊपर कॉल प्रमाण और इनपुट एनवेलप के प्रत्येक KiB (आंशिक KiB पूरा गिना जाता है) पर 1,000 इकाइयाँ | चेन 20, 100 और 800 इकाइयों की प्रारंभिक कीमतों पर: टियर की 20,479 गैस की अधिकतम सीमा घोषित करने वाली और 1,350,000 बाइट के प्रमाण और एनवेलप वाली टियर-14 कॉल का न्यूनतम शुल्क 0.0041 RAND है; वॉलेट का डिफ़ॉल्ट इससे अधिक चुकाता है (नीचे)। gas खंड के बिना, जैसे चेन 15 पर: टियर 10: 0.002; टियर 14: 0.0022 RAND, छूट के भीतर। v0.5.6 से टियर 14 से ऊपर की कॉल अस्वीकार कर दी जाती है, चाहे वह कितना भी चुकाए (MAX_CALL_TIER)। चेन 13 पर 2026-09-19 को की गई ERC-20 approve कॉल (टियर 16, 3,412,405-बाइट का प्रमाण) ने 0.00357 RAND चुकाए थे और v0.5.6 के बाद की किसी भी चेन पर वह अस्वीकार कर दी जाती |
| इनवोक (RPL-2, चेन 20) | एक कॉल का न्यूनतम शुल्क, साथ ही ट्रांज़िशन द्वारा बनाए गए प्रत्येक सेल के लिए जेनेसिस का program_state.cell_fee (ऐसा सेल जिसे शून्येतर लिखा गया हो जहाँ पहले कुछ संग्रहीत नहीं था); किसी सेल को दोबारा लिखने या हटाने से कुछ नहीं जुड़ता | चेन 20 का cell_fee 0.01 RAND है: ऊपर की टियर-14 कॉल, यदि दो सेल बनाए, तो उसका न्यूनतम शुल्क 0.0241 RAND है |
| BridgeBurn | BRIDGE_BURN_FEE = 10 × BUNDLE_BASE: आधार शुल्क और ब्रिज का अपना शुल्क, दोनों उसी एक बंडल से चुकाए जाते हैं जिसे एक बर्न साथ ले जाता है | 0.01 RAND; चेन 20 पर ब्रिज बर्न किए गए zUSD का 10 bps भी रखता है (नीचे) |
| RegisterToken, RegisterBridgedToken | BUNDLE_BASE + टोकन रजिस्ट्री का registration_fee (एक जेनेसिस पैरामीटर) | चेन 20: 0.001 + 1 RAND = 1.001 RAND, जिसमें से 1 RAND बर्न कर दिया जाता है |
| मिंट (फ़ॉसेट), अनबॉन्ड | 0; कोई बंडल नहीं, वैलिडेटर द्वारा हस्ताक्षरित | — |
| PauseMints, UnpauseMints | 0; कोई बंडल नहीं, पॉज़ कुंजी या PQ गार्डियन कोरम द्वारा अधिकृत, इसलिए पॉज़ ऐसे वॉलेट से भी काम करता है जिसमें कोई RAND नहीं है | — |
| निकासी | वायर पर 0; 0.001 RAND का आधार शुल्क निकाली गई राशि में से काटा जाता है | 1,000 RAND की निकासी 999.999 मूल्य का एक नोट बनाती है |
शुल्क बंडल का एक सार्वजनिक वर्ड है और हमेशा RAND में होता है। हिडन-एसेट बंडल गेस्ट इसे RAND समूह के बैलेंस संबंध in₂ + in₃ = out₂ + out₃ + fee + burn_r (स्लॉट 2–3) में बाँधता है, इसलिए इसका भुगतान छिपे हुए नोटों से होता है, यह बताए बिना कि किन नोटों से; एक टोकन उसी बंडल के स्लॉट 0–1 से अपने स्वयं के संबंध in₀ + in₁ = out₀ + out₁ + burn_a के अंतर्गत चलता है। इसलिए एक ही प्रमाण टोकन को स्थानांतरित करता है और उसका RAND शुल्क चुकाता है, और ऐसा वॉलेट जिसमें टोकन है पर खर्च करने योग्य RAND नहीं, प्रमाण बनाने से पहले ही अस्वीकार कर दिया जाता है।
ब्रिज का शुल्क बर्न पर पड़ता है, क्योंकि यही वह एक ब्रिज लेनदेन है जिसके प्रेषक के पास RAND होना निश्चित है; जमा केवल आधार शुल्क चुकाता है, क्योंकि जमाकर्ता के पास अभी कोई RAND नहीं होता। पंजीकरण शुल्क fee_floor का हिस्सा न होकर एक लेजर तथ्य है, इसलिए इसकी जाँच क्रिया के अपने नियमों (RegistrationFeeTooLow) से होती है, उसी तरह जैसे कॉल का गैस या टियर वाला भाग उसका प्रमाण डिकोड होने के बाद लिया जाता है। कॉल के न्यूनतम शुल्क की जाँच दो बार होती है, क्योंकि वह जो घोषित करती है उस पर तभी भरोसा किया जाता है जब उसका प्रमाण सत्यापित हो जाए। चेन 20 पर पहली जाँच, किसी भी सत्यापन से पहले, कॉल के बाइट्स और 1 की घोषित सीमा का मूल्य लगाती है (वहाँ एक Invoke पर उसका सेल शुल्क भी देय होता है); दूसरी जाँच सत्यापित प्रमाण द्वारा घोषित सीमा का मूल्य लगाती है। gas खंड रहित चेन पर ये दोनों BUNDLE_BASE + CALL_BASE और टियर-सटीक न्यूनतम शुल्क हैं।
अनुमान लगाने के बजाय नोड से पूछें:
rand fee bundle # 0.001 RAND
rand fee deploy 256 # 0.0266 RAND
rand fee call 14 --gas 20479 --bytes 1350000 # 0.0041 RAND at chain 20's starting prices
→ {"method":"rand_estimateFee","params":[{"kind":"call","tier":14,"gas":20479,"bytes":1350000}]}
← "4103100"
यह उत्तर प्रारंभिक कीमतों पर 1,000,000 + 100 × 20,479 + 800 × 1,319 है; पूछे जाने के समय चेन-शीर्ष पर जो भी कीमतें हों, नोड उन्हीं पर मूल्य लगाता है। चेन 20 पर JSON-RPC के ज़रिए कॉल स्पेक का gas फ़ील्ड अनिवार्य है (इसके बिना -32602)। --gas के बिना rand fee call <tier> टियर की अधिकतम सीमा भेजता है, और --bytes के बिना किसी बाइट का मूल्य नहीं लगाता। इनवोक का मूल्य भी इसी तरह लगाया जाता है, "kind":"invoke" के साथ, और "created_cells": c से c सेल शुल्क जुड़ते हैं (ऊपर के उदाहरण के लिए, दो सेल के साथ, 24103100, जो 2026-10-01 को चेन 20 से पूछा गया)। चेन 15 पर, जिसमें कोई gas खंड नहीं था, rand fee call 14 ने 0.0022 RAND उत्तर दिया।
वॉलेट के डिफ़ॉल्ट ठीक न्यूनतम शुल्क ही हैं, सिवाय चेन 20 पर कॉल के, जिसका डिफ़ॉल्ट अतिरिक्त गुंजाइश जोड़ता है (नीचे); rand send --fee <RAND> और bond, call, bridge-mint, bridge-burn (डिफ़ॉल्ट 0.01) तथा token सबकमांड पर --fee फ़्लैग इन्हें बढ़ाते हैं। न्यूनतम शुल्क से ऊपर की कोई भी राशि टिप है।
चेन 18 पर गैस
चेन 18, जो 2026-09-29 से 2026-10-01 तक सक्रिय रही, पहली गैस-मीटर्ड चेन थी, और चेन 19, जो उसी बिल्ड पर उसका पुनः-जेनेसिस थी, में भी वही gas खंड था। चेन 20 (v0.6.8) इस खंड का हर नियम बनाए रखती है और दो मूल्य-सीमाएँ तथा केवल भुगतान करने वाले बाइट्स पर गिना जाने वाला बाइट लोड जोड़ती है (नीचे)। gas खंड रहित चेन ऊपर की तालिका का टियर शेड्यूल बनाए रखती है।
क्या गिना जाता है। एक गैस zkVM की cpu तालिका की एक पंक्ति है, इसलिए एक साधारण निर्देश की लागत 1 है। अन्य लागतें केवल सिस्कॉल की हैं:
| ऑपरेशन | गैस |
|---|---|
कोई भी निर्देश, HALT, WRITE_OUTPUT, READ_INPUT, READ_PUBLIC | 1 |
n वर्ड पर POSEIDON2 | 3 + 3 × ⌈n/4⌉ (प्रत्येक अवशोषण पंक्ति की लागत 3) |
SHA256, एक कम्प्रेशन | 64 |
KECCAK, एक परम्यूटेशन | 192 |
घोषित सीमा। एक कॉल प्रमाण में अब पहले से एक अधिक सार्वजनिक मान, GAS_LIMIT, होता है, और सर्किट (कंस्ट्रेंट सेट 8) सिद्ध करता है कि रन की गैस उसके बराबर या उससे कम है। सटीक गैस निजी रहती है। प्रमाण के अपने हेडर की अधिकतम सीमा से ऊपर की सीमा किसी भी सत्यापक कुंजी के बनने से पहले ही अस्वीकार कर दी जाती है:
gas_max = (2ᵗ − 1) + 2^(t−2) + 191 × (keccak rows / 32) + 63 × (sha256 rows / 64)
ऐसी कॉल के लिए जो किसी भी हैश तालिका का उपयोग नहीं करती, यह टियर 10 पर 1,279, टियर 12 पर 5,119 और टियर 14 पर 20,479 है।
न्यूनतम शुल्क। लेजर घोषित सीमा और बाइट्स का शुल्क, ब्लॉक शुरू होने के समय लागू कीमतों पर, लेता है:
fee ≥ BUNDLE_BASE + gas_price × gas_limit + byte_price × ⌈bytes / 1024⌉
bytes कॉल प्रमाण और इनपुट एनवेलप है। ऐसी चेन पर टियर शेड्यूल और उसकी निःशुल्क छूट लागू नहीं होतीं। पूल ठीक वही माँगता है जो एक ब्लॉक माँगता है, और सस्ती कॉल को FeeTooLow के रूप में अस्वीकार करता है।
बंडल और प्राधिकरण प्रमाण नियत सीमाएँ घोषित करते हैं। प्रत्येक बंडल प्रमाण को ठीक जेनेसिस का bundle_gas_limit, 20,479 (टियर-14 की अधिकतम सीमा), घोषित करना होगा, अन्यथा लेनदेन BundleGasLimit के रूप में अस्वीकार कर दिया जाता है। चेन 20, चेन 17 के बाद की हर चेन की तरह, विभाजित प्राधिकरण चलाती है, इसलिए हर बंडल में एक टियर-10 प्राधिकरण प्रमाण होता है, जिसे 1,279 घोषित करना होगा (AuthGasLimit)। इनमें से कोई भी शुल्क नहीं है: एक ट्रांसफ़र, बॉन्ड या डिप्लॉय अब भी ऊपर की तालिका का अपना नियत न्यूनतम शुल्क ही चुकाता है। वॉलेट ये दोनों मान स्वयं घोषित करता है।
कीमतें बदलती हैं। चेन 20 के gas खंड में एक dynamic नियंत्रक है, इसलिए gas_price और byte_price लेजर स्थिति का हिस्सा हैं, जो स्टेट रूट में प्रतिबद्ध हैं। प्रति ब्लॉक एक बार, उसके लेनदेनों के बाद, प्रत्येक कीमत इस अनुसार बदलती है कि ब्लॉक एक लक्ष्य की तुलना में कितना भरा था:
price' = min(max_price, max(min_price, price + ⌊price × adjust_bps × (used − target) / (10,000 × target)⌋))
used लक्ष्य के दोगुने पर सीमित है, इसलिए adjust_bps वह सबसे बड़ा बदलाव है जो एक ब्लॉक किसी भी दिशा में कर सकता है। max_price जेनेसिस की अधिकतम सीमा है; चेन 18 और 19 में यह नहीं थी। byte_price ब्लॉक के भुगतान करने वाले बाइट्स (नीचे) का अनुसरण करती है; gas_price उसकी कॉलों और इनवोक की घोषित सीमाओं के योग और प्रत्येक बंडल के लिए 20,479 का अनुसरण करती है।
चेन 20 का gas अनुभाग | मान |
|---|---|
जेनेसिस पर gas_price, byte_price | प्रति gas 100 इकाइयाँ; प्रति KiB 800 इकाइयाँ |
min_gas_price, min_byte_price | 100; 800, अतः प्रारंभिक मूल्य ही न्यूनतम सीमाएँ भी हैं |
max_gas_price, max_byte_price | 10,000; 80,000: अधिकतम सीमाएँ, न्यूनतम सीमाओं का 100 गुना (चेन 20 में नया) |
byte_load | paying (चेन 20 में नया) |
target_block_bytes | 10,485,760, 20 MiB की ब्लॉक सीमा का आधा |
target_block_gas | 262,144 |
adjust_bps | 1,250: प्रति ब्लॉक अधिकतम 12.5% |
bundle_gas_limit | 20,479 |
metering | circuit |
जो ब्लॉक अपने लक्ष्यों से कम भरा होता है, वह मूल्यों को नीचे ले जाता है, इसलिए शांत चेन पर वे न्यूनतम सीमाओं पर टिके रहते हैं। rand_getLimits टिप के वर्तमान gas_price और byte_price को gas_metering: "circuit", bundle_gas_limit, adjust_bps के साथ लौटाता है, और v0.6.8 से max_gas_price, max_byte_price तथा byte_load भी (जिस चेन पर ये नहीं हैं, वहाँ null); rand_status यही दोनों मूल्य gas_prices के रूप में बताता है।
अधिकतम सीमाएँ और भुगतान करने वाला बाइट लोड
दोनों gas.dynamic के जेनेसिस फ़ील्ड हैं, v0.6.8 में नए (audit v6, POOL-2), और चेन 20 इन्हें निर्धारित करने वाली पहली चेन है। ये चेन 18 और 19 के एक दोष को दूर करते हैं। वहाँ byte_price हर लेन-देन की एन्कोडेड लंबाई के साथ बदलता था, जबकि उसका भुगतान केवल कॉल करती है। सात ट्रांसफ़र (प्रत्येक लगभग 2.85 MB, स्थिर शुल्क) एक ब्लॉक को बाइट लक्ष्य के लगभग 1.9 गुना तक भर देते हैं और मूल्य को प्रति ब्लॉक लगभग 11% बढ़ा देते हैं, बिना किसी अधिकतम सीमा के: ऐसे लगभग 65 ब्लॉक उसे प्रारंभिक मूल्य के 1,000 गुना तक ले जाते हैं, और तब एक कॉल की लागत लगभग 0.004 के बजाय लगभग 1 RAND हो जाती है।
- अधिकतम सीमाएँ।
max_gas_priceऔरmax_byte_priceवे मूल्य हैं जिनसे ऊपर नियंत्रक कभी नहीं ले जाता। चरण वही रहता है और फिर सीमित कर दिया जाता है (gas::next_price_capped), अतः अपनी अधिकतम सीमा पर पहुँचा मूल्य भरे ब्लॉकों की किसी भी शृंखला में वहीं रहता है और लक्ष्य से कम भरे पहले ब्लॉक पर गिरता है। जेनेसिस को प्रत्येक सीमा अपने प्रारंभिक मूल्य के बराबर या उससे ऊपर रखनी होती है। चेन 20 की अधिकतम सीमाओं पर ऊपर वाली tier-14 कॉल (20,479 gas और 1,319 KiB) की न्यूनतम लागत 0.3113 RAND है, और उसकी न्यूनतम लागत इससे ऊपर नहीं जा सकती। - भुगतान करने वाला बाइट लोड।
byte_load: "paying"के अंतर्गत ब्लॉक काbytes_usedकेवल उन बाइट्स को गिनता है जिन पर बाइट मूल्य लगाया जाता है: प्रत्येकCallऔरInvokeका प्रूफ़ तथा इनपुट एन्वेलप (gas::call_bytes), और ट्रांसफ़र, बॉन्ड या बर्न का कुछ भी नहीं। ट्रांसफ़र से भरा ब्लॉक बाइट मूल्य को नहीं बदलता।Ledger::block_usageयह आँकड़ा प्रस्तावक और प्रतिकृति दोनों के लिए गणना करता है, इसलिए दोनों एकमत रहते हैं।
भुगतान करने वाले लोड के अंतर्गत ट्रांसफ़र से भरा ब्लॉक कॉल को कोई मूल्य संकेत नहीं देता, इसलिए एक ईमानदार प्रस्तावक कॉलों के लिए भी जगह आरक्षित रखता है। यह नोड की नीति है, वैधता का नियम नहीं: जब तक कोई कॉल या invoke पूल में है और अपनी वर्तमान न्यूनतम लागत चुकाता है, स्थिर-शुल्क वाले लेन-देन पहले चरण में ब्लॉक के अधिकतम तीन-चौथाई बाइट्स लेते हैं, और अंतिम चौथाई में से कॉलों के बाद जो बचता है, उसे रोके गए ट्रांसफ़रों से भरा जाता है (Mempool)।
कॉल के लिए वॉलेट क्या चुकाता है
rand call पहले प्रोग्राम को एमुलेटर में चलाता है और gas: <exact> (declaring <limit>, tier <t>) प्रिंट करता है। डिफ़ॉल्ट रूप से यह सटीक gas को 2^(tier − 2) के गुणज तक ऊपर पूर्णांकित करके घोषित करता है; --gas-limit N एक सटीक आँकड़ा घोषित करता है और --gas-limit max हेडर की अधिकतम सीमा।
दो कारण डिफ़ॉल्ट शुल्क को न्यूनतम लागत से ऊँचा बनाते हैं:
- प्रूफ़ का मूल्य सीमा पर लगाया जाता है। चेन 16 से (
hardening_v6, चेन 20 सहित) कॉल प्रूफ़ अपने ही लेन-देन से बँधा होता है, इसलिए शुल्क प्रूफ़ के अस्तित्व में आने से पहले तय हो जाता है। वॉलेट वास्तविक प्रूफ़ आकार के स्थान पर चेन की प्रूफ़ सीमा, 4 MiB, का मूल्य लगाता है (wallet::hardened_call_quote_bytes)। इससे केवल अधिक भुगतान ही हो सकता है। - दो मूल्य-चरणों का अतिरिक्त अंतर।
rand_getLimitsकमिट किए गए हेड के मूल्य लौटाता है और कॉल दो या तीन ब्लॉक बाद शामिल होती है, इसलिए डिफ़ॉल्ट न्यूनतम लागत को(1 + adjust_bps / 10,000)²से गुणा करता है, जो चेन 20 पर 1.125² है।
2026-09-30 को चेन 18 पर मापने पर इन डिफ़ॉल्ट के साथ चार कॉलों में से प्रत्येक की लागत 0.0057 और 0.0075 RAND के बीच रही (उदाहरण प्रोग्राम)। --fee डिफ़ॉल्ट को बदल देता है; वॉलेट सबमिट करने से पहले वास्तविक प्रूफ़ का मूल्य फिर से लगाता है और न्यूनतम लागत से कम शुल्क को अस्वीकार कर देता है।
शुल्क कहाँ जाता है
पूरा शुल्क — न्यूनतम लागत और टिप — वैलिडेटर रजिस्टर में ब्लॉक प्रस्तावक के rewards में जमा होता है, जो इस चेन पर एकमात्र स्थान है जहाँ कोई राशि खुले रूप में संग्रहीत होती है; इसका एक अपवाद है। tokens.burn_registration_fee वाले जेनेसिस पर (चेन 20, जैसे 15 के बाद की हर चेन), RegisterToken या RegisterBridgedToken का registration_fee बर्न कर दिया जाता है और प्रस्तावक fee − registration_fee रखता है; rand_getSupply इसे registration_fees_burned में गिनता है। चेन 14 पर, जिसमें यह फ़्लैग नहीं था, प्रस्तावक पूरा शुल्क रखता था। इसके अतिरिक्त कुछ भी बर्न नहीं होता और कोई बँटवारा नहीं है। वैलिडेटर संचित पुरस्कारों को rand-node withdraw से नोट में बदलता है (Staking)। किसी invoke का सेल शुल्क उसके बंडल शुल्क का हिस्सा है और बाकी के साथ प्रस्तावक को जाता है। चेन 20 पर कोई ब्लॉक पुरस्कार और कोई मुद्रास्फीति नहीं है: शुल्क ही वैलिडेटर की पूरी आय है।
चेन 20 पर एक शुल्क RAND में नहीं है और किसी वैलिडेटर को नहीं जाता। जेनेसिस के bridge.fees (v0.6.8 में नया) के अंतर्गत ब्रिज हर zUSD जमा और हर zUSD बर्न का 10 bps रखता है, जो बैकिंग की एक पूर्ण रिलीज़ इकाई तक नीचे पूर्णांकित होता है, और जेनेसिस द्वारा नामित ट्रेज़री पते पर zUSD नोट के रूप में जाता है। जमा पर जमाकर्ता को सकल राशि में से शुल्क घटाकर जमा किया जाता है; बर्न पर स्रोत चेन पर amount − fee रिलीज़ होता है। शुल्क नोट जारी और समर्थित बना रहता है। देखें Bridge और RPL टोकन।
mempool उम्मीदवारों को पहले इस आधार पर क्रमबद्ध करता है कि वे अपनी न्यूनतम लागत से ऊपर प्रति KiB कितना चुकाते हैं, फिर शुल्क के आधार पर (Mempool), इसलिए ऊँचा शुल्क केवल भीड़ होने पर मायने रखता है। एक ट्रांसफ़र लगभग 2.85 MB का होता है (चेन 18 पर मापा गया): 1.49 MB का बंडल प्रूफ़ और 1.36 MB का प्राधिकरण प्रूफ़, इसलिए चेन 20 के 20 MiB ब्लॉक में लगभग सात समाते हैं। fullnode का अपना नोट यह था कि mainnet से पहले न्यूनतम लागत को बाइट्स पर — ऑपकोड पर नहीं — आधारित शुल्क बाज़ार बनना चाहिए। चेन 20 का बाइट मूल्य कॉलों के लिए वही बाज़ार है, जो केवल उन बाइट्स से बदलता है जिनका भुगतान कॉल करती हैं; ट्रांसफ़र की न्यूनतम लागत अब भी स्थिर है।
यहाँ gas एक मूल्य क्यों है, सीमा नहीं
Ethereum हर ऑपकोड को मापता है क्योंकि हर नोड हर लेन-देन को निष्पादित करता है और निष्पादन की कोई निश्चित सीमा नहीं होती। Rand पर कोई नोड कुछ भी निष्पादित नहीं करता: प्रेषक प्रोग्राम को चेन से बाहर एक बार चलाता है और चेन को एक प्रूफ़ सौंपता है। प्रति लेन-देन नोड का कार्य एक निश्चित क्रम है — सार्वजनिक फ़ील्ड डिकोड करना, निःशुल्क जाँचें चलाना, एक STARK सत्यापित करना — और प्रोग्राम ने चाहे जो किया हो, वार्म वेरिफ़ायर कुंजी के साथ उस सत्यापन में लगभग 16 ms लगते हैं। इसलिए gas के तीनों कार्य अलग हो जाते हैं:
- समापन tier द्वारा सुनिश्चित किया जाता है: जो रन
2ᵗ − 1चक्रों के भीतर नहीं रुकता, उसका प्रूफ़ बनाया ही नहीं जा सकता, और विफलता का भार प्रूवर उठाता है। - कार्य का मूल्य निर्धारण चेन 18 से gas की न्यूनतम लागत करती है। नेटवर्क की प्रति निर्देश लागत लगभग शून्य है, पर प्रेषक का प्रूविंग कार्य वास्तविक है, और स्थिर न्यूनतम लागत दस लाख चक्रों वाली कॉल का मूल्य एक हज़ार चक्रों वाली कॉल जितना ही लगाती थी। चेन 18 तक न्यूनतम लागत प्रति tier स्थिर थी।
- ब्लॉक का आकार एक बाइट बजट (
MAX_BLOCK_BYTES= डिफ़ॉल्ट रूप से 4 MiB, अन्यथा जेनेसिस काmax_block_bytes) और लेन-देन की संख्या (2,000) से तय होता है।
fullnode दो सीमाएँ स्पष्ट रूप से बताता है: बाइट्स बदलते हैं (एक प्रूफ़ एक मेगाबाइट से बड़ा होता है, इसलिए दुर्लभ संसाधन ब्लॉक स्पेस है, गणना नहीं), और स्टेट वृद्धि — ट्री, nullifier सेट, डिप्लॉय किए गए प्रोग्राम बाइट्स — का मूल्य केवल प्रति-शब्द डिप्लॉय शुल्क और स्थिर आधार शुल्क से लगता है, जो testnet के लिए पर्याप्त है और स्टेट का आकार मायने रखने पर इस पर पुनर्विचार करना उचित होगा।
इसके बजाय प्रेषक क्या चुकाता है: प्रूविंग
एकमात्र परिवर्तनशील लागत STARK प्रूफ़ बनाना है, और इसका भार केवल प्रेषक की मशीन उठाती है। प्रभाव के क्रम में:
- tier
t ∈ {10, 12, 14, 16, 18, 20}(v0.5.6 से चेन 14 से ऊपर की कॉल अस्वीकार करती है; बंडल 14 पर निश्चित है, और चेन 17 से उसके साथ एक tier-10 प्राधिकरण प्रूफ़ भी होता है, जिसमें लगभग 7 s अधिक लगते हैं): cpu तालिका2ᵗपंक्तियों तक पैड की जाती है और हर चरण पैड किए गए ट्रेस को लगभग चार गुना कर देता है। डेवलपमेंट लैपटॉप पर मापा गया: tier 10 परprivate_paymentलगभग 7 s में; tier 14 पर hidden-asset बंडल guest लगभग 100 s में, चाहे वह कोई भी एसेट स्थानांतरित करे। - निष्पादित चक्र, क्योंकि वही tier तय करते हैं: चलाए गए निर्देश, लिखे गए निर्देश नहीं।
- प्रोग्राम का आकार, मामूली रूप से: ट्रेस के आरंभ में प्रति चार शब्द एक डाइजेस्ट पंक्ति।
- निजी इनपुट का आकार, इसी प्रकार।
- कौन-सी तालिकाएँ मौजूद हैं: keccak या sha256 तालिका अपने कॉलमों का हिस्सा तभी जोड़ती है जब guest ने उसका उपयोग किया हो।
- FRI प्रोफ़ाइल: 27 के बजाय 80 क्वेरी प्रूफ़ का आकार तीन गुना कर देती हैं, पर प्रूविंग समय में मुश्किल से कोई बदलाव होता है।
प्रूविंग न राशियों पर निर्भर करती है, न इस पर कि प्रेषक के पास कितने नोट हैं, न चेन के आकार पर: सदस्यता का प्रूफ़ एक निश्चित गहराई वाले ट्री के विरुद्ध बनता है, इसलिए एक ट्रांसफ़र की लागत ब्लॉक दस पर और ब्लॉक एक करोड़ पर समान होती है।
संदर्भ
| स्थिरांक | मान |
|---|---|
BUNDLE_BASE | 1,000,000 इकाइयाँ |
BRIDGE_BURN_FEE | 10,000,000 इकाइयाँ (10 × BUNDLE_BASE) |
registration_fee (जेनेसिस का tokens खंड) | चेन 20 पर 1,000,000,000 इकाइयाँ, जो बर्न की जाती हैं (burn_registration_fee) |
DEPLOY_PER_WORD | 100,000 इकाइयाँ |
CALL_BASE, CALL_PER_TIER_STEP | 1,000,000; 100,000 इकाइयाँ; gas खंड से रहित चेन की टियर अनुसूची |
GAS_PRICE_DEFAULT, BYTE_PRICE_DEFAULT | प्रति गैस 100 इकाइयाँ; प्रति KiB 800 इकाइयाँ। चेन 20 की प्रारंभिक कीमतें और उसकी न्यूनतम कीमत-सीमाएँ |
KECCAK_GAS, SHA256_GAS, POSEIDON2_ABSORB_GAS | 192; 64; प्रति पंक्ति 3 गैस |
max_gas_price, max_byte_price (जेनेसिस का gas.dynamic) | चेन 20 पर प्रति गैस 10,000 इकाइयाँ; प्रति KiB 80,000 इकाइयाँ; अनुपस्थित होने पर कोई ऊपरी सीमा नहीं (चेन 18 और 19) |
byte_load (जेनेसिस का gas.dynamic) | चेन 20 पर paying: केवल call और invoke प्रूफ़ तथा एनवेलप के बाइट byte_price को बदलते हैं; अनुपस्थित होने पर, प्रत्येक लेनदेन के बाइट |
cell_fee (जेनेसिस का program_state) | चेन 20 पर प्रत्येक निर्मित सेल के लिए 10,000,000 इकाइयाँ (0.01 RAND); अधिकतम 1,000 RAND |
bundle_gas_limit (जेनेसिस का gas खंड) | चेन 20 पर 20,479, gas_max(14, 0, 0); एक प्राधिकरण प्रूफ़ 1,279 घोषित करता है, gas_max(10, 0, 0) |
adjust_bps (जेनेसिस का gas.dynamic) | चेन 20 पर 1,250; कोई जेनेसिस इसे 1 से 5,000 तक निर्धारित कर सकता है |
MAX_PROGRAM_WORDS | 4,096, जब तक जेनेसिस max_program_words निर्धारित न करे (अधिकतम 65,535; चेन 20 इसे 65,535 निर्धारित करती है, और hardening_v6 8,180 शब्दों से बड़े ऐसे प्रोग्राम को अस्वीकार करता है जिसे कोई भी कॉल समाहित नहीं कर सकती) |
MAX_PROOF_BYTES | 2 MiB, जब तक जेनेसिस max_proof_bytes निर्धारित न करे (चेन 20 पर 4 MiB; चेन 13 से 15 पर 8 MiB) |
MAX_BLOCK_BYTES, MAX_BLOCK_TXS | 4 MiB (जब तक जेनेसिस max_block_bytes निर्धारित न करे; चेन 20 पर 20 MiB), 2,000 |
| टियर | 10, 12, 14, 16, 18, 20; साइकिल ≤ 2ᵗ − 1 |
MAX_CALL_TIER | 14: इससे ऊपर का call प्रूफ़ प्रवेश के समय और ब्लॉक में अस्वीकार कर दिया जाता है (v0.5.6 से) |