शब्दावली
सर्टिफिकेट (certificate), fold, skip, deposit, sequencer, forced path। इनमें से कई का अर्थ यहाँ और जगहों से सँकरा है, और दो-एक ऐसी घटनाओं के नाम हैं जिनके लिए ज़्यादातर चेन के पास कोई शब्द ही नहीं।
यह प्रोटोकॉल जिस शब्दावली का प्रयोग करता है, उसी अर्थ में जिसमें वह करता है। इनमें से कई शब्दों का अर्थ यहाँ और जगहों से सँकरा है, और उनमें से दो — skip और drop — ऐसी घटनाओं के नाम हैं जिनके लिए ज़्यादातर चेन के पास कोई शब्द नहीं, क्योंकि उनके पास उनका कोई समतुल्य ही नहीं।
सर्टिफिकेट (certificate)#
Zycord में इकलौता ट्रांज़ैक्शन प्रकार। एक सर्टिफिकेट वह स्टेट ढोता है जो उसने पढ़ी और वह स्टेट भी जो उसने लिखी, साथ ही वह प्रोग्राम जो दोनों को जोड़ता है, उसे अधिकृत करने वाले हस्ताक्षर, एक deposit, एक TTL, और दोनों शुल्क बाज़ारों में एक-एक बोली। चूँकि वह अपने इनपुट और आउटपुट ख़ुद ढोता है, इसलिए यह जाँचने के लिए कि वह valid है या नहीं, कोई स्टेट चाहिए ही नहीं।
Fold#
वह नियतात्मक लूप जो बहीखाते को आगे बढ़ाता है। वह किसी ब्लॉक के सर्टिफिकेट को एक कैनोनिकल क्रम में चलता है — पहले fills, फिर हर साधारण सर्टिफिकेट, फिर forced सर्टिफिकेट — और हर एक के लिए जाँचता है कि उसके घोषित reads अब भी टिके हैं या नहीं: अगर टिके हैं तो वह writes कमिट कर देता है, और अगर नहीं तो skip कर देता है। fold एक व्यस्त key-value कार्य-समुच्चय पर तुलना, जोड़ और लेखन करता है — न कोई कोड निष्पादन, न हस्ताक्षर सत्यापन, न पुनर्निष्पादन, और न कोई दीर्घवृत्तीय-वक्र गणित। यह व्यवस्था का इकलौता चरण है जो समानांतर नहीं होता।
Skip#
उस सर्टिफिकेट का क्या होता है जिसके घोषित reads अब टिके नहीं रहते, जिसके deltas 256-बिट सीमा से बाहर चले जाते, या जो किसी spent पते के तहत लिखता। कुछ भी नहीं लिखा जाता, 1,000,000 drops (0.01 ZCD) का नियत skip शुल्क उसके deposit से जलाया जाता है और किसी को भुगतान नहीं करता, deposit का शेष लौटा दिया जाता है, और ब्लॉक valid बना रहता है। जिसने deposit का नाम दिया वही भुगतान करता है: किसी साधारण सर्टिफिकेट का लेखक, जिसने reads चुने, या किसी fill का sequencer। उपयोगकर्ता कभी किसी fill के skip का भुगतान नहीं करता। Skip अर्थ है, विफलता नहीं: समावेशन और अनुप्रयोग भिन्न घटनाएँ हैं, इसलिए एक block producer किसी बासी सर्टिफिकेट को शामिल करके कभी invalid ब्लॉक नहीं बना सकता।
Drop#
बिना शुल्क की एक अ-घटना। जिस सर्टिफिकेट का deposit आरक्षित नहीं किया जा सकता — deposit cell पहले ही spent है, या उसमें उस राशि से कम है जो सर्टिफिकेट आरक्षित करता है — वह drop होता है: ब्लॉक में ढोया जाता है, उससे शुल्क नहीं लिया जाता, seen चिह्नित नहीं किया जाता, और किसी नए deposit के साथ दोबारा जमा करने के लिए स्वतंत्र रहता है। इसलिए ईमानदार उपयोगकर्ता अपने ही deposit cell पर होड़ से कुछ नहीं गँवाते।
Deposit#
वह cell जो किसी सर्टिफिकेट के लिए उत्तरदायी है: किसी उपयोगकर्ता पते का एक नेटिव-शेष cell, उससे आरक्षित राशि, और वह change slot जिसमें शेष लौटता है। इसके बिना कोई सर्टिफिकेट मौजूद नहीं होता, और deposit cell पर हमेशा एक हस्ताक्षर होता है। skip मुफ़्त नहीं होना चाहिए, वरना mempool डूब जाता है; deposit ही हर टकराव को एक स्वामी देता है। एक fill अपने sequencer के persistent शेष से deposit करता है, इसीलिए fill के skip होने पर उपयोगकर्ता नहीं बल्कि sequencer भुगतान करता है, और एक forced सर्टिफिकेट का भुगतान इसके बजाय उसके open intent के भुगतान से होता है। श्वेतपत्र v1.0 के underwriters और बीमाकृत सर्टिफिकेट जा चुके हैं; उनकी जगह यही आया है।
Cell#
किसी slot पर मौजूद मान — 32 बाइट में big-endian संग्रहीत एक अचिह्नित 256-बिट पूर्णांक। शून्य ही अनुपस्थिति है: जो slot कभी लिखा ही न गया और जो slot शून्य लिखा गया, दोनों एक ही slot हैं। यह सुविधा नहीं, एक consensus अपेक्षा है: इससे state root उस स्टेट का फलन बना रहता है, न कि उस इतिहास का जिसने उसे बनाया।
One-shot पता (0x01)#
वह पता जिसका हस्ताक्षर अधिकार उसके पहले ही डेबिट से हमेशा के लिए जल जाता है। नए-नए निकाले गए one-shot पते पर भुगतान करना बिना किसी होड़ वाला तेज़ रास्ता है, और हर भुगतान के लिए नया पता निकालना ही एक भुगतान को अगले से अजुड़ा बनाता है। इसकी क़ीमत यह है कि “इसमें से कुछ खर्च करो” ऐसा काम है ही नहीं जो one-shot पता कर सके — वॉलेट नियम 1 देखें।
Persistent पता (0x02)#
एक दोबारा इस्तेमाल होने वाला पता। वह spent registry में कभी जा ही नहीं सकता, इसलिए उस पर burn-grief की कोई सतह ही नहीं। व्यापारी, दान पते, sequencer के deposits और माइनिंग भुगतान इसी का इस्तेमाल करते हैं; zycordd --payout किसी और को मना कर देता है।
Spent-address registry#
उन one-shot पतों का स्थायी consensus समुच्चय जिनका अधिकार जला दिया गया है। spent पते के तहत cell के मान undo horizon के बाद छाँटे जा सकते हैं, पर registry की प्रविष्टि कभी नहीं — वही उस पते को पुनर्जीवित होने से रोकती है। प्रति पता लगभग 33 बाइट, हमेशा के लिए: प्रोटोकॉल की ईमानदार खुली समस्या, जो हर nullifier-set डिज़ाइन के साथ संरचनात्मक रूप से साझा है।
Valid बनाम applicable#
दो प्रिडिकेट जिन्हें पारंपरिक चेन एक कर देती है। Valid स्टेटलेस, समानांतर, और केवल सर्टिफिकेट के बाइट्स से किसी के भी द्वारा जाँचने योग्य है। Applicable स्टेटफ़ुल, अनुक्रमिक, और केवल बहीखाते में स्थिति से तय होता है। दो valid सर्टिफिकेट एक ही slot के लिए एक ही इनपुट मान घोषित कर सकते हैं; उनमें से अधिकतम एक ही applicable हो सकता है।
Guarded delta#
वह पहुँच-अनुशासन जिसमें कोई सर्टिफिकेट किसी slot पर एक प्रिडिकेट का दावा करता है — balance ≥ 10 — बिना उस मान को गणना में पढ़े, और एक चिह्नित delta लिखता है। एक ही slot पर कितने भी guarded डेबिट और क्रेडिट आपस में क्रम-निरपेक्ष होते हैं, इसलिए skip केवल असली ओवरड्राफ़्ट पर होता है, महज़ इसलिए नहीं कि शेष बदल गया। यह अकेला अनुशासन हस्तांतरण, आपूर्ति-सीमित mint, भत्ते और vault हिस्से, सब को समेट लेता है, और इस पर कभी कोई sequencer रोक नहीं लगाता: एक sequenced token अब भी किसी से भी हर हस्तांतरण स्वीकार करता है।
Pure delta#
बिना किसी guard वाला एक चिह्नित delta। वह न कभी टकरा सकता है, न कभी skip हो सकता है। टिप, गणक, संचायक, इनाम की गिनती।
Exact read#
SLOAD शैली का अनुशासन: पठन slot का मान गणना में लौटाता है और सर्टिफिकेट को उससे बाँध देता है। मनमाना तर्क, व्यस्त slot पर टकराव, और sequencers का क्षेत्र।
Sequencer#
एक off-chain सेवा जिसे कोई कॉन्ट्रैक्ट अपने exact-read ट्रैफ़िक को क्रमबद्ध करने के लिए चुनता है। हर कॉन्ट्रैक्ट के रिकॉर्ड में एक sequencer कुंजी होती है: जब तक वह शून्य नहीं है, उस कॉन्ट्रैक्ट के cells पर exact read, समानता guard या set के लिए उस कुंजी का हस्ताक्षर चाहिए; जब तक वह शून्य है, कॉन्ट्रैक्ट open है, और केवल अपने कोड से सुरक्षित है। sequencer उपयोगकर्ताओं के intents निष्पादित करता है और परिणामों को fills के रूप में प्रकाशित करता है। उस पर जीवंतता के लिए भरोसा किया जाता है, सुरक्षा के लिए कभी नहीं: वह यह नहीं बदल सकता कि intent क्या करता है, केवल यह कि कब, और झूठ पर बना fill sequencer के ख़र्च पर skip होता है। अगर वह सेवा बंद कर दे, तो forced path बचा रहता है।
Intent#
किसी sequenced कॉन्ट्रैक्ट को कॉल करने के लिए उपयोगकर्ता सर्टिफिकेट के बजाय जिस पर हस्ताक्षर करता है: लक्ष्य और calldata, एक समानांतर बजट, एक nonce, अधिकतम 8 ब्लॉक की विंडो, sequencer का persistent पता, परिणाम पर सीमाएँ, हर sequencer को देय भुगतान, वे one-shot भुगतानकर्ता पते जो उसे धन देते हैं, और change outputs। सीमा उस cell पर एक प्रिडिकेट है जिसे कॉल लिखती है — final-at-least, final-at-most, delta-at-least या delta-at-most — और कम से कम एक को ऐसे cell का नाम देना चाहिए जिसे कॉल ने लिखा। intent उपयोगकर्ता का पूरा प्राधिकरण है, और उसके भुगतान तभी निपटते हैं जब fill लागू हो।
Fill#
वह सर्टिफिकेट जिसे कोई sequencer किसी intent के लिए प्रकाशित करता है। उसका प्रोग्राम intent है, उसका deposit sequencer के अपने persistent शेष से आता है, और उसकी id intent का हैश है, इसलिए एक intent के दो fills एक ही id साझा करते हैं और शुल्क केवल एक से लिया जा सकता है। fold के क्रम में fills सबसे पहले आते हैं, हर एक तभी जब हर वह pipeline जिसमें वह है तैयार हो।
Receipt#
किसी intent पर sequencer का हस्ताक्षरित उत्तर, मिलीसेकंडों में लौटाया गया, किसी ब्लॉक के अस्तित्व में आने से बहुत पहले: intent id, pipeline seq और परिणाम। यह एक पूर्व-पुष्टि है — sequencer का वादा, चेन का नहीं, और अंतिम तभी जब fill लागू हो। चूँकि receipts हस्ताक्षरित होती हैं, एक ही कुंजी की दो receipts जो एक seq अलग-अलग intents को दें, या एक intent को अलग-अलग परिणाम, एक ऐसा प्रमाण हैं जिसे कोई भी बाइट्स से जाँच सकता है। consensus इसका दंड नहीं देता; उपयोगकर्ता छोड़कर चले जाते हैं।
Pipeline#
चेन sequencer कुंजी और कॉन्ट्रैक्ट की हर जोड़ी के लिए अंतिम लागू seq रखती है। fill तभी प्रवेश करता है जब वह काउंटर उसके seq से एक नीचे हो, और काउंटर तभी आगे बढ़ता है जब fill लागू हो, इसलिए किसी sequencer के fills उसी क्रम में कमिट होते हैं जिसमें उसने उन पर हस्ताक्षर किए, चाहे producer को वे किसी भी क्रम में मिले हों। skip हुआ fill अपने पीछे बने fills को तब तक रोके रखता है जब तक sequencer उसी संख्या से दोबारा न बनाए।
Fence counter#
हर कॉन्ट्रैक्ट के रिकॉर्ड में एक काउंटर। fill उन कॉन्ट्रैक्टों का fence counter घोषित करता है जिन पर वह बना था, और अगर उनमें से कोई खिसक गया हो तो प्रवेश नहीं कर सकता। यह तब आगे बढ़ता है जब दर्ज होने वाला कोई forced सर्टिफिकेट कॉन्ट्रैक्ट के किसी cell को set करता है, और जब कॉन्ट्रैक्ट का sequencer cell लिखा जाता है — इसलिए forced path और sequencer का बदलाव उनके द्वारा बदली गई स्टेट पर बने हर fill को अमान्य कर देते हैं, किसी से शुल्क लिए बिना। read या delta इसे नहीं हिलाता, और न ही विफल हुआ forced सर्टिफिकेट। sequencer दोबारा बनाता है और केवल latency गँवाता है।
Co-sequencing#
जो कॉल अलग-अलग sequencers से बँधे कॉन्ट्रैक्टों को पार करती है वह एक fill के रूप में दर्ज होती है जिस पर हर उस sequencer का हस्ताक्षर होता है जिसके exact path को वह छूती है, अधिकतम 16, हर एक का अपनी pipeline में एक seq और हर एक को उतना भुगतान जितना intent उसके लिए नामित करता है। वे आपस में कैसे समन्वय करते हैं यह off-chain है और डिज़ाइन से स्वतंत्र; चेन एक सर्टिफिकेट देखती है, रचना से ही atomic।
Sequencer directory#
जहाँ कोई sequencer अपनी सेवा की घोषणा करता है: उसके persistent पते से एक directory सर्टिफिकेट उसकी कुंजी को मुद्रण-योग्य ASCII के 1 से 256 बाइट्स की एक स्ट्रिंग से बाँधता है, आमतौर पर एक URL। नवीनीकरण न होने पर प्रविष्टि घोषणा करने वाले सर्टिफिकेट के TTL के 259,200 ब्लॉक (लगभग 90 दिन) बाद समाप्त हो जाती है, और वापसी उसे तुरंत हटा देती है। consensus स्ट्रिंग को संग्रहीत करता है और कभी उसकी व्याख्या नहीं करता — यह खोज है, प्राधिकरण नहीं। नोड इसका उत्तर /directory पर देता है।
Forced path#
वह धीमा रास्ता जिसे किसी sequencer की ज़रूरत नहीं। उपयोगकर्ता एक open intent पर हस्ताक्षर करता है और उसे नेटवर्क पर रिले करता है; एक block producer अपनी चुनी हुई open intents को ब्लॉक-के-अंत की स्टेट पर निष्पादित करता है और परिणामों को forced सर्टिफिकेट के रूप में, ब्लॉक के अंतिम सर्टिफिकेट के तौर पर, जोड़ देता है। शामिल होना ही लागू होना है: न कोई कतार, न lease, न कोटा, न समय-सीमा। एक ब्लॉक में अधिकतम 16 forced सर्टिफिकेट होते हैं, हर एक के पास अधिकतम 4,000 derivation इकाइयों का समानांतर बजट (200,000 मशीन gas), इसीलिए कॉन्ट्रैक्ट जो भी निकास देता है वह उस बजट में समाना चाहिए। जिस forced सर्टिफिकेट की कॉल revert हो जाए वह भी FORCED_FAILED के रूप में दर्ज होता है: उसके भुगतानकर्ता भुगतान करते हैं, बची रक़म उपयोगकर्ता को लौटती है, और और कुछ नहीं लिखा जाता।
Open intent#
ऐसा intent जिसमें न किसी sequencer का नाम है और न co-sequencers का, जिसे उपयोगकर्ता के अपने one-shot भुगतानकर्ता पते धन देते हैं। यह mempool में सर्टिफिकेट के रूप में नहीं, बल्कि intent के रूप में यात्रा करता है, और इसका भुगतान forced सर्टिफिकेट के शुल्क को ढकता है: आधार-शुल्क वाला हिस्सा जलाया जाता है और शेष producer को जाता है। zcd wallet open-intent इस पर हस्ताक्षर करता है, और zcd wallet intent --fallback तब इस पर हस्ताक्षर करता है जब sequencer मूल intent की सेवा न करे।
cEVM#
एकमात्र वर्चुअल मशीन: Ethereum वर्चुअल मशीन की एक बोली, जिसे सर्टिफिकेटों के अनुरूप ढाला गया है। storage खोजा नहीं जाता बल्कि घोषित किया जाता है, guards, deltas और किसी कॉन्ट्रैक्ट का sequencer set करने के लिए opcodes जोड़े गए हैं, जिन opcodes का यहाँ कोई संदर्भ नहीं उन्हें हटा दिया गया है, और NUMBER तथा TIMESTAMP epoch beacon से उत्तर देते हैं। Era 1 से सक्रिय, ज्ञात पतों पर पहले से तैनात delta-first मानक लाइब्रेरी के साथ। Solidity और उसके उपकरण साथ चले आते हैं।
Epoch beacon#
आरक्षित cells जिन्हें प्रोटोकॉल प्रति epoch एक बार लिखता है: epoch संख्या, उसे खोलने वाले हेडर की ऊँचाई, एक entropy शब्द, और Era 1 से उस हेडर का समय। प्रोग्रामों को टाइमस्टैम्प या ऊँचाई जैसे परिवेशी मान सीधे नहीं पढ़ने चाहिए — इससे निष्पादन घोषित reads के अलावा किसी और चीज़ का फलन बन जाता — इसलिए वे beacon को किसी भी और slot की तरह पढ़ते हैं, आदर्श रूप से एक रेंज guard के साथ। इसके मान पूरे epoch भर स्थिर रहते हैं। entropy शब्द proof-of-work का उत्पाद है और ऊँचे मूल्य की लॉटरी के लिए अनुपयुक्त है।
Epoch#
2,880 ब्लॉक — 30-सेकंड ब्लॉकों पर लगभग एक दिन, और proof of stake पर switch से 5 सेकंड के 17,280 slots, फिर भी एक दिन। वह इकाई जिस पर सब्सिडी घटती है, अनुक्रमिक क्षमता लक्ष्य खिसकता है, और beacon ताज़ा होता है।
TTL#
वह ऊँचाई जिस तक किसी सर्टिफिकेट को valid होने के लिए कमिट हो जाना चाहिए। Consensus द्वारा 240 ब्लॉक (लगभग दो घंटे) पर सीमित, proof of stake पर switch से 1,440 ब्लॉक, और यही seen set को छाँटने योग्य रखता है। किसी देखे जा चुके या समाप्त सर्टिफिकेट को शामिल करना ब्लॉक को invalid बनाता है — इसलिए किसी हस्ताक्षर पर अधिकतम एक बार शुल्क लिया जा सकता है, और केवल उस स्थिति पर जिसे उसके हस्ताक्षरकर्ता ने हस्ताक्षर करके स्वीकार किया।
Sequential और parallel gas#
शुल्क दो बाज़ारों में बँटते हैं: एक अनुक्रमिक स्टेट परिवर्तन के लिए, जो दुर्लभ है, और एक समानांतर सत्यापन के लिए, जो नहीं है। इसलिए हस्ताक्षर की जाँच किसी स्टोरेज राइट के साथ एक ही नीलामी में मुक़ाबला नहीं करती, और यही भारी क्रिप्टोग्राफ़ी को डिज़ाइन से सस्ता बनाता है। दोनों में, आधार शुल्क जलाया जाता है और प्राथमिकता शुल्क producer को भुगतान करता है, उन सर्टिफिकेटों पर जो लागू होते हैं, और केवल उन्हीं पर; skip हुए सर्टिफिकेट का शुल्क पूरा का पूरा जलाया जाता है।
Era#
प्रोटोकॉल का एक चरण, जिसका द्वार सार्वजनिक रिलीज़ों में compile की गई एक ऊँचाई से और, Era 2 में, ऊँचाई-सीमाओं के भीतर चेन पर मापे गए stake से तय होता है — कभी कैलेंडर की तारीख़ या मतदान से नहीं। Era 0, ब्लॉक 0 से सक्रिय: माइनिंग, नेटिव एसेट, दोनों शुल्क बाज़ार, सब्सिडी बँटवारा और treasury, जमा होती हुई और मुहरबंद। Era 1 mainnet पर ऊँचाई 80,640 पर, लगभग 4 नवंबर 2026, और सार्वजनिक testnet पर ऊँचाई 2,880 से: cEVM, sequencers, intents और fills, directory और forced path। Era 2, proof of stake: bonding epoch 182 पर, लगभग 7 अप्रैल 2027 को, खुलती है; ramp तब शुरू होता है जब सक्रिय stake 30 epochs तक आपूर्ति का 10% रखता है, अधिकतम epoch 273 पर; केवल stake पर switch ramp पूरा होने पर होता है। Era S गोपनीय भुगतान जोड़ेगा, केवल स्वतंत्र ऑडिट के बाद, और वर्तमान विनिर्देश का हिस्सा नहीं है। Era 2 और S हर एक अपनी अलग रिलीज़ के रूप में, hard fork द्वारा, आते हैं। Bonding Era 1 का हिस्सा नहीं है।
Proof of stake#
Era 2 का consensus, जिसमें अगला ब्लॉक बनाने का अधिकार hashes के बदले बेचे जाने के बजाय stake के आधार पर ड्रॉ किया जाता है, और ब्लॉक अंतराल 30 से घटकर 5 सेकंड हो जाता है। बाक़ी सब बना रहता है: हर नोड हर सर्टिफिकेट को उसके बाइट्स से जाँचता है, fold और दोनों शुल्क बाज़ार अपरिवर्तित हैं, और ब्लॉक के भीतर एक invalid सर्टिफिकेट अब भी ब्लॉक को invalid बनाता है। जो गणना एक माइनर hashes पर ख़र्च करता था, उसे एक producer सत्यापन पर ख़र्च करता है। यह एक ramp और एक switch से प्रवेश करता है, और switch तक ब्लॉक माइन किए जाते हैं। श्वेतपत्र §11 में विनिर्दिष्ट।
Stake#
ब्लॉक उत्पादन से bond किया गया नेटिव कॉइन। BOND balance को एक persistent पते से उस पते से बँधे एक stake cell में ले जाता है, जिसकी कुंजी वही कुंजी है जो ब्लॉकों पर हस्ताक्षर करती है, और UNBOND उसे undo horizon से लंबे एक निकास विलम्ब के बाद लौटाता है। एक stake bond किए जाने के एक epoch बाद सक्रिय होता है, इसलिए stakes को एक के बाद एक बनाया और त्यागा नहीं जा सकता। न्यूनतम bond 1,000 ZCD है; एक कुंजी, एक stake। Bonding Era 2 के साथ, epoch 182 पर, खुलती है।
Pool और delegation#
Pool एक ऐसा stake है जो delegation स्वीकार करता है। DELEGATE एक bond को किसी pool की कुंजी की ओर इंगित करता है, एक उत्पादक bond से छोटे न्यूनतम से, और balance कभी delegator को नहीं छोड़ता, जो उसी निकास विलम्ब के अंतर्गत उसे पुनर्निर्देशित या unbond कर सकता है। ड्रॉ में किसी pool का भार उसका अपना bond और उसे delegate की गई राशि है, और fold हर epoch में एक बार उसके इनाम को pool, उसके घोषित margin पर, और उसके delegators के बीच, stake के अनुपात में, बाँटता है। किसी delegator पर कभी slashing नहीं होती: यदि कोई pool equivocate करता है, तो केवल उसका अपना bond जलाया जाता है। यह माइनिंग पूल नहीं है, जो off-chain और consensus से बाहर है।
Slot#
Proof of stake के अंतर्गत, एक 5-सेकंड अंतराल जिसमें एक ब्लॉक बनाया जा सकता है, उस producer द्वारा जो उसके लिए पिछले epoch में तय एक seed से, stake के अनुपात वाली संभावना के साथ, ड्रॉ किया गया हो। एक epoch 17,280 slots का होता है। बिना ब्लॉक वाला slot ख़ाली रहता है और कुछ नहीं देता, और valid चेनों में से वह जीतती है जो सबसे अधिक slots घेरती है। अन्यत्र slot एक storage स्थान है, (address, word), जिसका मान एक cell है।
Ramp#
Era 2 का प्रवेश: 90 epochs जिनमें हर ब्लॉक अब भी माइन होता है और उस पर उसकी ऊँचाई के लिए ड्रॉ किए गए stake का हस्ताक्षर भी होता है। Staker producer के हिस्से का k/180 लेता है, जहाँ k 1 से शुरू होता है और gate पार करने वाले हर epoch के साथ एक बढ़ता है: epoch के कम से कम 90% ब्लॉक हस्ताक्षरित, और सक्रिय stake आपूर्ति का कम से कम 10%। हस्ताक्षर के बिना माइन किया गया ब्लॉक valid है और किसी को भुगतान नहीं करता: उसका producer हिस्सा और उसकी priority fees जला दी जाती हैं। Ramp तब शुरू होता है जब सक्रिय stake 30 epochs तक आपूर्ति का 10% रखता है, और अधिकतम epoch 273 पर। यह 30-दिन का जारीकरण ramp नहीं है; देखें जारीकरण।
Switch (संक्रमण)#
वह ब्लॉक जिस पर proof of work समाप्त होता है: ramp के gate को पार करने वाले 90वें epoch के बाद वाले epoch का पहला ब्लॉक, सबसे देर epoch 363 पर, लगभग 5 अक्टूबर 2027, यदि gate कभी न रुके। उससे, ब्लॉक 5-सेकंड slots में आते हैं, एक epoch 17,280 slots का होता है, और हर ब्लॉक epoch की दर का छठा भाग देता है; प्रति-ब्लॉक सीमाएँ छह से विभाजित होती हैं और समय मापने वाली हर ब्लॉक गणना छह से गुणा होती है, इसलिए प्रति दिन क्षमता और अवधियाँ वही रहती हैं। तब एक ब्लॉक 120 ब्लॉक, 10 मिनट, की गहराई पर अंतिम होता है, जहाँ proof of work 20 माँगता था।
Equivocation (दोहरा हस्ताक्षर)#
एक कुंजी द्वारा एक slot के लिए हस्ताक्षरित दो headers: proof of stake के अंतर्गत consensus में दंडित होने वाली एकमात्र ग़लती। एक invalid सर्टिफिकेट की तरह, यह एक-संदेश का प्रमाण है जिसे कोई भी बाइट्स से जाँच सकता है। एक report सर्टिफिकेट दोनों headers ढोता है, और fold हस्ताक्षरकर्ता का अपना bond जलाता है, उसकी कुंजी को सक्रिय सेट से हटाता है और reporter को एक अंश देता है। एक producer जो कुछ भी करे वह किसी और के कॉइन तक नहीं पहुँचता: किसी pool की delegations उनके delegators को लौट जाती हैं।
जारीकरण (Issuance)#
ZCD केवल ब्लॉक सब्सिडी के रूप में अस्तित्व में आता है, और ब्लॉक 0 कुछ नहीं देता। दर प्रति ब्लॉक 21 ZCD से शुरू होती है और हर epoch सीमा पर सटीक पूर्णांक अंकगणित से घटती है — E(n) = max(tail, E(n−1) − floor(E(n−1) / 1054)) — लगभग हर दो वर्ष में आधी होती हुई, जब तक वह epoch 4,376, लगभग वर्ष 12, पर प्रति ब्लॉक 0.33 ZCD की चिरस्थायी tail तक नहीं पहुँच जाती। पहले 86,400 ब्लॉक (30 दिन) एक ramp हैं: ब्लॉक h उस दर का h/86,400 देता है जो ब्लॉक 86,400 देता है, और ramp जो रोकता है, लगभग 907,917 ZCD, वह कभी वापस नहीं दिया जाता। proof of stake पर switch से हर ब्लॉक epoch की दर का छठा भाग देता है, इसलिए एक दिन उतना ही देता है। zcd emission --height N किसी भी ऊँचाई पर सब्सिडी छापता है।
सब्सिडी बँटवारा#
हर ब्लॉक सब्सिडी, और कभी fees नहीं, ब्लॉक 0 से consensus द्वारा 94 / 3 / 3 में बँटती है: 94% ब्लॉक के producer को दो घंटे (240 ब्लॉक, proof of stake के अंतर्गत 1,440) की परिपक्वता के बाद, 3% संस्थापक के persistent पते को epoch 1,095 (तीन वर्ष) तक, और 3% treasury को, जो तब से संस्थापक का 3% भी लेती है। Proof-of-stake ramp के दौरान producer का 94% स्वयं माइनर और ड्रॉ किए गए staker के बीच बँटता है। यह हर माइन किए गए ब्लॉक पर लागू एक नियम है, genesis पर कोई आवंटन नहीं: कोई premine नहीं है।
Treasury#
प्रोटोकॉल पते का नेटिव balance। कोई कुंजी उस तक हैश नहीं होती, कोई सर्टिफिकेट उससे डेबिट नहीं कर सकता, और genesis कोई quorum नामित नहीं करता। इसे ब्लॉक 1 से हर ब्लॉक सब्सिडी का 3% और epoch 1,095 से 6% credit किया जाता है। प्रोटोकॉल में कोई ख़र्च पथ मौजूद नहीं है: कोई पथ केवल किसी बाद के अपग्रेड द्वारा जोड़ा जा सकता है, जिसके हस्ताक्षरकर्ता समुदाय द्वारा चुने जाएँ न कि संस्थापक द्वारा, और लॉन्च प्रतिबद्धता यह है कि वह ऊँचाई 259,200, लगभग 5 जनवरी 2027, से पहले नहीं आता।
संरक्षकता प्रस्ताव#
समुदाय की समीक्षा के लिए एक प्रस्ताव, consensus नियम नहीं। यह सुझाता है कि पहले तीन वर्षों में treasury को कैसे ख़र्च किया जा सकता है: सार्वजनिक चार्टर वाली पाँच सीटें — मुख्य डेवलपर, समीक्षक डेवलपर, माइनर, समुदाय, सार्वजनिक प्रतिनिधि — ख़र्च के लिए 5 में से 3, और किसी धारक को बदलने, कुंजियाँ घुमाने, रिज़र्व ख़र्च करने या किसी चार्टर में संशोधन के लिए 5 में से 4, जो प्रभावी होने से पहले 20,160 ब्लॉक तक सार्वजनिक रहे। बजट treasury के अंतर्वाह के हिस्से हैं, कभी नियत राशियाँ नहीं। इसमें कुछ भी तब तक बाध्यकारी नहीं जब तक treasury अपग्रेड एक कुंजी समुच्चय को स्थिर न करे। पाठ सहायक दस्तावेज़ में है।
RandomX#
proof-of-work फ़ंक्शन, जो सामान्य-प्रयोजन CPU के लिए अनुकूलित है ताकि साधारण हार्डवेयर प्रतिस्पर्धी बना रहे; mainnet और सार्वजनिक testnet randomx-v2 चलाते हैं। यह एक consensus पैरामीटर है, कोई सेटिंग नहीं: जो बाइनरी किसी नेटवर्क का pow_engine गणना न कर सके वह पीछे लौटने के बजाय शुरू होने से मना कर देती है।
State root#
किसी ऊँचाई पर पूरी स्टेट के प्रति प्रतिबद्धता। नोड शुरू होने पर उसे दोबारा गणना करता है और संग्रहीत मान से असहमति होने पर चलने से मना कर देता है, और वह नोडों के बीच उत्पादन-समय के विभेदक पहरेदार का भी काम करता है: जो दो कार्यान्वयन एक ही ब्लॉक अनुक्रम से अलग root तक पहुँचें उन्होंने उनमें से किसी एक में बग खोज लिया है।
हर शब्द मानक रूप से कहाँ परिभाषित है#
यह पृष्ठ पढ़ने में सहायक है। जो परिभाषाएँ बाध्य करती हैं वे विशिष्टि और golden vectors में हैं; तर्क श्वेतपत्र, v2.0, और उसके सहायक दस्तावेज़ Launch, Eras and Parameters में है, जो जारीकरण, Eras और हर पैरामीटर मान को नियंत्रित करता है। कार्यान्वयन का अपना शब्दावली अनुभाग docs/ARCHITECTURE.md में है।