सोर्स कोड
एक ही रिपॉज़िटरी, MIT लाइसेंस के तहत: नोड, वॉलेट, कमांड लाइन, पैरामीटर सेट, और प्रोटोकॉल को परिभाषित करने वाले golden vectors। नेटवर्क जिस पर चलता है, वह सब इसी में है।
इस साइट पर किसी चीज़ का मोल उससे ज़्यादा नहीं जो आप बिना किसी से पूछे जाँच सकें, और जाँच यहीं से शुरू होती है। एक गुमनाम लेखक आपको प्रतिष्ठा नहीं दे सकता; उसके बदले जो दिया जा रहा है वह एक ऐसा ट्री है जिसे आप पढ़ सकते हैं, बिल्ड कर सकते हैं, और आपको सौंपी गई बाइनरियों से मिला सकते हैं।
क्लोन करें#
git clone https://gitlab.com/zycord-group/zycord-node.git
cd zycord-node
या पहले ब्राउज़र में पढ़ें: gitlab.com/zycord-group/zycord-node।
इस परियोजना के प्रामाणिक ठिकाने — यह भी शामिल — घोषणा थ्रेड में मौजूद हस्ताक्षरित प्रमाणन में, परियोजना कुंजी E724 39CE DD85 11F9 D607 550B 87FD 60D5 EB4A 0B29 के तहत, दर्ज हैं। कहीं और होस्ट किया गया ट्री एक प्रतिलिपि है: वह ईमानदार हो सकती है, पुरानी हो सकती है, शत्रुतापूर्ण हो सकती है, और यह पृष्ठ आपको नहीं बता सकता कि कौन-सी। किसी मिरर पर भरोसा करने से पहले हस्ताक्षरित सूची जाँचें, और उसी टैग से बिल्ड करें जिसका hash आपने ख़ुद सत्यापित किया हो।
इसमें क्या है#
| डायरेक्टरी | इसमें क्या है |
|---|---|
spec/ | प्रोटोकॉल। पैरामीटर सेट, golden vectors और पहले से तैनात लाइब्रेरी इमेज। जो कार्यान्वयन वेक्टर पास कर ले वह एक सहकर्मी है, fork नहीं। |
core/ | सहमति-निर्णायक कोड, केवल स्टैंडर्ड लाइब्रेरी: cell मॉडल, स्टेट-रहित वैधता, fold, सर्टिफिकेट (certificate) के अनुरूप ढाली गई EVM, और बिल्ड टैग के पीछे RandomX। |
node/ | उस कोर के चारों ओर का नोड — स्टोरेज, mempool, माइनर, पीयर परत, सिंक, केवल-पठन RPC, Stratum। |
wallet/ | कुंजी प्रबंधन और सर्टिफिकेट (certificate) बिल्डर। यह एक संदर्भ है, सहमति नहीं। |
cmd/ | zycordd, नोड; zcd, कमांड लाइन और वॉलेट। |
sim/ | सिम्युलेटर और fuzz हार्नेस, जानबूझकर सरल लिखा गया एक दूसरा fold जिसे असली वाले के विरुद्ध fuzz किया जाता है, और वह chaos soak जो असली नोड असली सॉकेट पर चलाता है। |
contracts/ | संदर्भ कॉन्ट्रैक्ट, Solidity में। |
packaging/ | इंस्टॉल स्क्रिप्ट और प्लेटफ़ॉर्म पैकेज, चलाने से पहले पढ़े जा सकते हैं। |
docs/ | आर्किटेक्चर, प्रोटोकॉल संदर्भ, संचालन गाइड और श्वेतपत्र। |
प्रोटोकॉल ही वेक्टर हैं#
इस ट्री का Go कोड एक संदर्भ कार्यान्वयन है, और जानबूझकर वह
परिभाषा नहीं है। नेटवर्क को परिभाषित करते हैं
पैरामीटर सेट और golden
vectors: हर fold, ब्लॉक और वैधता नियम एक
(पूर्व-स्थिति, ब्लॉक) → (उत्तर-स्थिति, शुल्क) केस के रूप में, सकारात्मक और नकारात्मक दोनों। अपनी
पसंद की किसी भी भाषा में अपना नोड लिखें — अगर वह इस संग्रह को पास कर ले तो वह एक सहकर्मी है, और यह कार्यान्वयन उस पर कोई वरीयता नहीं रखता।
सक्रियण ऊँचाइयाँ भी उसी जगह रहती हैं। h1_bond और h1_vm
किसी रिलीज़ के बजाय genesis पर जमा दिए गए पैरामीटर हैं: मशीन हर बाइनरी में संकलित है और
अपनी ऊँचाई से नीचे अस्वीकार की जाती है, इसलिए कोई Era इसलिए आता है कि चेन किसी संख्या तक पहुँच गई, इसलिए कभी नहीं
कि संचालकों से अपग्रेड करने को कहा गया।
बिल्ड करें#
make build # no cgo, reproducible, development engine only
make build-randomx # the network binary: mainnet and the public testnet
नेटवर्क से केवल RandomX बिल्ड ही जुड़ सकती है। डिफ़ॉल्ट बिल्ड बाइट-दर-बाइट
पुनरुत्पाद्य है और एक स्थानीय devnet चलाती है; दोनों जानबूझकर अलग-अलग फ़ाइलें लिखती हैं, ताकि जो बाइनरी
mainnet से बात नहीं कर सकती उसे कभी उस बाइनरी के लिए न समझ लिया जाए जो कर सकती है। Go टूलचेन
go1.26.2 पर पिन है और बिल्ड किसी और के तहत चलने से इनकार कर देती है, क्योंकि एक ही स्रोत
दो Go रिलीज़ से संकलित होकर दो अलग बाइनरियाँ बनता है।
किसी प्रकाशित टैग को दोबारा बनाकर hash मिलाना ही वह जाँच है जो प्रकाशक पर भरोसा करने की जगह लेती है — पूरी प्रक्रिया डाउनलोड सत्यापित करना में है, और इंस्टॉलेशन सामान्य उपयोग के लिए इसे बिल्ड करना बताता है।
Issues और सुरक्षा#
बग, सवाल और पैच issue ट्रैकर पर जाते हैं, और CONTRIBUTING.md बताती है कि किसी बदलाव को मर्ज होने से पहले क्या चाहिए।
कोई भेद्यता ट्रैकर के बजाय SECURITY.md में दी गई प्रकटीकरण प्रक्रिया से जाती है। परियोजना संदेह का लाभ पाने के बजाय रिपोर्ट पाना पसंद करेगी, और mainnet से पहले मिली खामी किसी को कुछ भी महँगी नहीं पड़ती।
लाइसेंस#
पूरे ट्री के लिए MIT। इसे fork करें, वितरित करें, बेचें, नाम बदलें — लाइसेंस केवल एक
कॉपीराइट सूचना माँगता है, और कुछ नहीं। जो एक चीज़ वह आपको नहीं सौंप सकता वह है नेटवर्क: वह उन
नोडों द्वारा तय होता है जो आपके ब्लॉक स्वीकार करते हैं, और वे उन्हें spec/ के नियमों से स्वीकार करते हैं।