शांति में नेटवर्किंग (ETH2.0)

शांति में नेटवर्किंग का अवलोकन

एडिट्स और बहुमूल्य प्रतिक्रिया के लिए हसियो-वेई वांग, केविन माई-हसन चिया और जॉन एडलर का विशेष धन्यवाद।

शार्क्ड ब्लॉकचैन में नेटवर्किंग एक कठिन समस्या है। हम शार्प किए गए ब्लॉकचेन के लिए स्केलेबल सिक्योर पीयर-टू-पीयर नेटवर्क के डिजाइन और निर्माण के बारे में कैसे जाते हैं? इस लेखन के रूप में, उत्पादन में कोई तैनात शार्प ब्लॉकचैन सिस्टम नहीं हैं, इसलिए, हमारे पास इस तरह के पीयर-टू-पीयर नेटवर्क को डिज़ाइन करने के बारे में कोई मिसाल नहीं है। यह एक डिज़ाइन समस्या है जो वर्तमान में Ethereum 2.0 का सामना कर रही है। इस पोस्ट का लक्ष्य है कि आप ETH2.0 की P2p लेयर पर होने वाले शोध में तेजी लाएं और शायद, Ethereum 2.0 के इस भाग में योगदान देना शुरू करें। इस पोस्ट के दौरान, मैं मान लूंगा कि आप मौजूदा ETH2.0 विनिर्देशों से परिचित हैं।

ETH2.0 में नेटवर्किंग आवश्यकताएँ

वर्तमान विचारों और प्रोटोकॉल पर गहराई से विचार करने से पहले, हमें सबसे पहले यह समझने की जरूरत है कि Serenity के P2p नेटवर्क के लिए क्या आवश्यकताएं हैं।

सबसे पहले, नेटवर्क में नोड्स को एक साथ कई शार्क को आसानी से सदस्यता लेने में सक्षम होना चाहिए। इसमें वेकेंटर शामिल होते हैं जिन्हें बीकन श्रृंखला द्वारा शार्क को बेतरतीब ढंग से असाइन किया जाता है, और गैर-मान्य नोड्स, अर्थात्, नोड्स जो सर्वसम्मति प्रोटोकॉल में भाग नहीं लेते हैं, जो उनकी विशेष जरूरतों के लिए विभिन्न शार्क से जुड़ते हैं।

दूसरा, नेटवर्क में नोड्स को कम विलंबता वाले शार्क के बीच कूदने में सक्षम होना चाहिए। चूंकि सत्यापनकर्ता बेतरतीब ढंग से शार्क को सौंपा जाता है, इसलिए यह महत्वपूर्ण है कि वे जितनी जल्दी हो सके कुशलतापूर्वक आवश्यकतानुसार शार्क के बीच स्विच करने में सक्षम हों। यह इस प्रकार है कि नोड्स को जितनी जल्दी हो सके अन्य नोड्स को खोजने और कनेक्ट करने में सक्षम होने की आवश्यकता है।

तीसरा, हमें इस बात पर ध्यान देने की आवश्यकता है कि बहुत सारा डेटा शार्द नेटवर्क और बीकन नेटवर्क के आसपास से गुजर रहा है। इन नेटवर्कों को प्रोटोकॉल में प्रभावी रूप से भाग लेने के लिए सुनिश्चित करने के लिए कम विलंबता की आवश्यकता होती है ताकि इन नेटवर्कों के नोड्स को ब्लॉक, अटैचमेंट आदि प्राप्त हों। इन नेटवर्कों को इन आंकड़ों के लिए पर्याप्त रूप से उच्च बैंडविड्थ की भी आवश्यकता होती है, भले ही ब्लॉक, अटैचमेंट आदि का आकार अपेक्षाकृत स्थिर हो। बैंडविड्थ और लेटेंसी के लिए समय से पहले अनुमान लगाना कठिन है, लेकिन ब्रेनबॉट के जननिक ने अनुमान लगाया है कि ये संख्या क्या दिख सकती है। ध्यान दें कि ये अनुमान पुराने हैं क्योंकि चरण 0 विनिर्देशन काफी बदल गया है।

मौजूदा डिज़ाइन

पी 2 पी नेटवर्क के लिए डिजाइन आवश्यकताओं को ध्यान में रखते हुए, ये वर्तमान विचार हैं जो नेटवर्क के लिए विचार किए जा रहे हैं। ये विचार प्रोटोकॉल लैब में Ethereum Foundation और Libp2p टीम के बीच सहयोग पर आधारित हैं। Libp2p स्केलेबल पीयर-टू-पीयर नेटवर्क के निर्माण के लिए एक मॉड्यूलर ढांचा है। हालांकि यह वर्तमान में बहुत प्रयोगात्मक है, पीयर-टू-पीयर नेटवर्क के डेवलपर्स के लिए इसका उपयोग करना आसान बनाने की दिशा में बहुत प्रगति हुई है।

एक कुशल PubSub सिस्टम: GossipSub

नेटवर्क में नोड्स पब्लिश-सब्सक्राइब (PubSub) नामक पैटर्न का उपयोग करके संवाद करते हैं। इस ढांचे में, संदेश भेजने वाले नोड्स विशिष्ट नोड्स को संदेश नहीं भेजते हैं। इसके बजाय, वे इन संदेशों को विषयों में वर्गीकृत करते हैं और इन विषयों को सदस्यता के लिए संदेश भेजते हैं। इन संदेशों को भेजने वाले नोड्स को प्रकाशक और नोड्स के रूप में जाना जाता है जो विषयों की सदस्यता लेते हैं और ग्राहक के रूप में जाने जाते हैं। इस प्रकार, प्रकाशकों को यह जानने की आवश्यकता नहीं है कि वे किसके लिए प्रकाशित हो रहे हैं और ग्राहकों को यह जानने की आवश्यकता नहीं है कि विषयों के प्रकाशक कौन हैं। संदेश भेजने और प्राप्त करने की यह रूपरेखा अधिक नेटवर्क स्केलेबिलिटी और अधिक गतिशील नेटवर्क टोपोलॉजी को सक्षम बनाती है।

Libp2p में निर्दिष्ट प्रकाशन-सदस्यता ढांचे के विभिन्न प्रकार हैं। Serenity के लिए वर्तमान विचार के तहत एक को GossipSub कहा जाता है, जो ग्राहकों के लिए कुशल मार्ग संदेशों के लिए gossip का उपयोग करता है। ओवरस्पीड नेटवर्क में संदेशों को कुशलता से रूट करने के लिए गॉसिपसब, रैंडमबस और मेशसब के विचारों का उपयोग करता है। गॉसिपसब और अन्य पबसब वेरिएंट के बीच मुख्य अंतर यह है कि यह प्रकाशन संदेशों के बारे में कैसे जाता है। मैसेजस का उपयोग करके संदेश प्रकाशित किए जाते हैं, लेकिन मेटाडेटा को गपशप करने वाले फैशन में रैंडमसब का उपयोग करके गैर-मेष साथियों को भेजा जाता है। दूसरे शब्दों में, सहकर्मी जो मेशसूब द्वारा बनाए गए जाल में नहीं हैं, विषय जाल में संदेशों के बारे में मेटाडेटा प्राप्त करने में सक्षम होंगे, एक मेष जिसके साथियों ने उसी विषय की सदस्यता ली है, सीधे उस विषय की सदस्यता लिए बिना। यदि आवश्यक हो, तो ये साथी वास्तविक संदेशों के लिए क्वेरी कर सकते हैं। ध्यान दें कि यह उन संदेशों की मात्रा को कम करता है जिन्हें प्रत्येक सहकर्मी को भेजने की आवश्यकता होती है और इस प्रकार गॉसिपसब द्वारा बनाए गए ओवरले मेष नेटवर्क में प्रत्येक सहकर्मी की डिग्री को कम कर देता है।

ETH2.0 में, अस्थायी रूप से, दो प्रकार के विषय होंगे: वैश्विक विषय और स्थानीय विषय। वैश्विक विषय उन संदेशों के लिए होंगे, जिनके बारे में नेटवर्क के सभी नोड्स को जानकारी होनी चाहिए, जैसे कि बीकन श्रृंखला संदेश और शार्प आईडी। स्थानीय विषय उन संदेशों के लिए होंगे जो एक विशेष प्रकार के शर्ड से संबंधित हैं, जैसे कि शार्द हेडर और शार्द लेन-देन।

Kademlia DHT का उपयोग कर सहकर्मी रूटिंग

सहकर्मी रूटिंग एल्गोरिदम हैं कि कैसे नेटवर्क में सहकर्मी तय करते हैं कि कौन से साथियों को संदेशों को रूट करना है। दूसरे शब्दों में, सहकर्मी के आईपी पते और पोर्ट नंबर के लिए सहकर्मी आईडी कैसे मैप किए जाते हैं। ETH2.0 में, Kademlia DHT अपनी मजबूती और उपयोग में आसानी के कारण वर्तमान में विचाराधीन है क्योंकि यह Libp2p में लागू किया गया है और वर्तमान में ETH1.0 में उपयोग होता है। Libp2p के Kademlia के कार्यान्वयन के विनिर्देशों के लिए, आप libp2p के Kademlia विनिर्देश को पढ़ सकते हैं।

सहकर्मी डिस्कवरी बूटस्ट्रैपिंग और कैंडलिया डीएचटी का उपयोग करना

सहकर्मी से सहकर्मी नेटवर्क में प्रभावी ढंग से संवाद करने के लिए, साथियों को एक दूसरे को खोजने में सक्षम होना चाहिए। ETH2.0 में, बूटस्ट्रैपिंग और Kademlia DHT के संयोजन का उपयोग साथियों को एक दूसरे को खोजने में मदद करने के लिए किया जाएगा।

बूटस्ट्रैपिंग एक सहकर्मी खोज तंत्र है जिसका उपयोग वर्तमान ETH1.0 नेटवर्क में किया जाता है जिसमें नेटवर्क से जुड़ने की इच्छा रखने वाला एक नया सहकर्मी नेटवर्क में पूर्व-निर्धारित साथियों के सेट से जुड़ता है। ये सहकर्मी आम तौर पर क्लाइंट में हार्ड-कोडित होते हैं और क्लाइंट के डेवलपर्स द्वारा चुने जाते हैं। यह प्रक्रिया नेटवर्क में नए नोड्स की ऑनबोर्डिंग की सुविधा देती है। Kademlia अपने विनिर्देशन के हिस्से के रूप में यह बूटस्ट्रैपिंग तंत्र प्रदान करता है।

एक बार सहकर्मी Kademlia के बूटस्ट्रैपिंग तंत्र का उपयोग करके नेटवर्क में शामिल हो गया है, यह अपने स्वयं के k- बाल्टी में नोड्स को क्वेरी करके नए साथियों की खोज कर सकता है जो एक वांछित कुंजी के सबसे करीब हैं। फिर, ये queried नोड्स एक ही प्रक्रिया शुरू करते हैं और अपनी परिणामी सूची नोड्स को देते हैं जो वांछित कुंजी के सबसे करीब हैं। यह प्रक्रिया तब तक दोहराई जाती है जब तक कि कोई झंझट भरा नोड वांछित कुंजी के निकटतम नोड्स की सूची नहीं देता है।

Libp2p बनाम Devp2p

आपने देखा होगा कि वर्तमान P2p नेटवर्किंग स्टैक पर पिछले अनुभाग में Devp2p का उल्लेख नहीं किया गया था। इसका मुख्य कारण यह है कि 2014 में अपने प्रस्ताव के बाद से सीमित प्रलेखन और परिवर्तनों की कमी के कारण, यह तय किया गया था कि इथेरियम Devp2p से Libp2p में स्विच हो जाएगा। इसके अलावा, Libp2p का मॉड्यूलर डिज़ाइन हमें शार्पिंग के लिए आवश्यक कस्टम नेटवर्किंग कार्यक्षमता को आसानी से बनाने में सक्षम बनाता है। हम आसानी से Devp2p के साथ ऐसा नहीं कर सकते। Libp2p का उपयोग करने के फायदों के एक संक्षिप्त अवलोकन के लिए, आप Parity Technologies के लेख को पढ़ सकते हैं कि वे अपने प्रोजेक्ट में Libp2p का उपयोग क्यों कर रहे हैं।

समस्याएँ खोलें

आपको संभवतः ETH2.0 में नेटवर्किंग की तरह दिखने वाला एक अच्छा अवलोकन करना चाहिए और शायद, आप योगदान करना शुरू करना चाहते हैं। यह खुली समस्याओं की एक सूची है जिसमें से आप यह सोचना शुरू कर सकते हैं कि योगदान कैसे करना है। यह सूची संपूर्ण नहीं है लेकिन यह एक शुरुआत है।

मान्यवर गोपनीयता

Validators Ethereum नेटवर्क का एक महत्वपूर्ण हिस्सा है। वे प्रोटोकॉल को चालू रखते हैं और सुनिश्चित करते हैं कि नेटवर्क सुरक्षित है। हमलावर किसी तरह से Ethereum नेटवर्क पर हमला करने के लिए सत्यापनकर्ताओं की पहचान करना चाहते हैं। हमलावर जो DDoS को एक विशेष सत्यापनकर्ता बनाना चाहते हैं वे स्पष्ट रूप से रोकने के लिए कठिन हैं, लेकिन लक्ष्य के साथ शुरू करने के लिए सत्यापनकर्ताओं की पहचान करना कठिन है। आदर्श रूप में, हमारे पास तंत्र हैं ताकि एक हमलावर केवल सभी उपलब्ध नोड्स के यादृच्छिक सबसेट पर हमला कर सके। जेननिक के पास वैधता गोपनीयता के विभिन्न पहलुओं के बारे में विचार-मंथन का मुद्दा है।

सत्यापनकर्ता गोपनीयता को बेहतर बनाने के बारे में कई सुझाव दिए गए हैं। हालाँकि, ये सभी सुझाव मंथन के चरण में हैं और कुछ भी ठोस नहीं है। वर्तमान पी 2 पी स्तर एनोमिटी समाधान जैसे कि टॉर और / या आई 2 पी का उपयोग करने के लिए कुछ सुझाव दिए गए हैं। इन दृष्टिकोणों का विश्लेषण पेगासिस के एक इंजीनियर निकोलस लिओचोन द्वारा किया गया है। आप यहां उनका विश्लेषण पढ़ सकते हैं। यह है कि यह टो या I2P नेटवर्क में ETH2.0 नेटवर्क को एकीकृत करने के लिए उचित होगा। मैं यह नोट करना चाहूंगा कि इन तकनीकों को अन्य क्रिप्टोकरेंसी में एकीकृत करने का प्रयास करने के लिए मिसाल है, मोनेरो का सबसे प्रसिद्ध उदाहरण। आप सभी को I2P नेटवर्क के C ++ कार्यान्वयन, कोवरी के निर्माण के मोनेरो के प्रयास के बारे में पढ़ सकते हैं।

एक और दृष्टिकोण जिस पर चर्चा की गई थी वह डेंडेलियन ++ पर आधारित है। मूल विचार यह है कि अज्ञात नेटवर्क टोपोलॉजी के उप-भाग के रूप में गुमनामी ग्राफ बनाना है, गुमनामी ग्राफ पर छद्म-बेतरतीब ढंग से उत्पन्न पथ के साथ संदेश यात्रा है और फिर आसपास के साथियों को संदेश फैलाना है। Dandelion ++ वर्तमान में बिटकॉइन कोर और ग्रिन नेटवर्क द्वारा विचाराधीन है। यह प्रस्ताव डैंडेलियन ++ प्रोटोकॉल के पहले 2 चरणों का उपयोग करने के लिए है और फिर 3 जी चरण में, केवल पास के साथियों को संदेश फैलाने के बजाय, सहकर्मी संदेश को नियमित गॉसिपसब के रूप में प्रकाशित करते हैं। आप प्रस्ताव का विवरण यहाँ पढ़ सकते हैं।

हस्ताक्षर एकत्रीकरण

हस्ताक्षर एकत्रीकरण ETH2.0 का एक महत्वपूर्ण हिस्सा है। इसका मुख्य उपयोग यह है कि हस्ताक्षर करने वालों को हस्ताक्षर में एक एकल हस्ताक्षर में संग्रहित किया जाना चाहिए। इससे सभी हस्ताक्षरों को स्टोर करने की आवश्यकता को हटा दिया जाता है। हस्ताक्षर योजना जिसका उपयोग किया जा रहा है वह बीएलएस हस्ताक्षर योजना है। बीएलएस हस्ताक्षर योजना का उपयोग करने का मुख्य लाभ यह है कि जब तक हस्ताक्षर उत्पन्न हो जाते हैं, तब तक हमें हस्ताक्षरों को एकत्र करने के लिए हस्ताक्षरकर्ताओं की आवश्यकता नहीं होती है। आप यहां बीएलएस हस्ताक्षर योजना के विवरण के बारे में अधिक पढ़ सकते हैं। अब, हम P2p नेटवर्क में इन हस्ताक्षरों को कैसे एकत्रित करते हैं? ठीक है, हम वास्तव में अभी तक नहीं जानते हैं। PegaSys टीम का एक वर्तमान प्रस्ताव है जिसे हैंडेल कहा जाता है। पेपर अभी तक प्रकाशित नहीं हुआ है, हालांकि गिटहब रिपॉजिटरी सार्वजनिक है और स्टैनफोर्ड ब्लॉकचेन सम्मेलन में एक बात दी गई थी। हालांकि, अभी तक कुछ भी तय नहीं हुआ है। यदि आपके पास ऐसा करने का कोई विचार है, तो कृपया पहुंचें।

पीयर डिस्कवरी

वर्तमान पीयर डिस्कवरी डिज़ाइन चरण 0 के टेस्टनेट चरण के लिए ठीक है, लेकिन उत्पादन, विकेंद्रीकृत पी 2 पी नेटवर्क के लिए इष्टतम नहीं है। सहकर्मी की खोज का मुख्य दावेदार discv5 है। डिस्कवि 5 का एक संस्करण जीईटी 1.5 और इसके बाद के संस्करण में तैनात किया गया है लेकिन अन्य एथेरम ग्राहक डिस्कव 5 का उपयोग नहीं करते हैं। डिस्कवी 5 के लिए विनिर्देशन अभी चल रहा है और अनौपचारिक हैं। फेलिक्स लैंग के पास एक मसौदा है जिसे आप यहां पढ़ सकते हैं।

वायर प्रोटोकॉल

यदि हम अलग-अलग क्लाइंट्स से बात करना चाहते हैं तो एक वायर प्रोटोकॉल की जरूरत होती है। यह वर्तमान में एक कार्य-प्रगति है और डैनी रयान ने चरण 0 के लिए एक न्यूनतम तार एपीआई पोस्ट किया है जिसे एक विशेष वायर प्रोटोकॉल निर्दिष्ट किए जाने के बाद लागू किया जा सकता है। बाद के चरणों के लिए एक तार एपीआई को खाते में लेने के लिए विभिन्न आवश्यकताओं की आवश्यकता होगी। Devcon4 से पहले प्राग में कामकाजी समूह सत्र के दौरान, ETH2.0 के लिए वायर प्रोटोकॉल की आवश्यकता की आवश्यकताओं की एक सूची विकसित की गई थी। आप यहाँ विवरण पढ़ सकते हैं। शायद वर्तमान ETH1.0 वायर प्रोटोकॉल पर एक नज़र डालने से ETH2.0 के लिए वायर प्रोटोकॉल को डिजाइन करने में मदद मिल सकती है।

परिवहन प्रोटोकॉल

वर्तमान Ethereum नेटवर्क नोड की खोज के लिए UDP और अन्य सभी P2P संचार के लिए TCP के संयोजन का उपयोग करता है। विशेष रूप से, नोड खोज के लिए, यह UDP के शीर्ष पर एक Kademlia जैसी प्रणाली का उपयोग करता है और एक कस्टम ट्रांसपोर्ट प्रोटोकॉल, RLPx, जो कि TCP के शीर्ष पर बनाया गया है। यूडीपी पीयर-टू-पीयर सिस्टम में नोड खोज के लिए एक आम विकल्प है। टीसीपी का उपयोग नेटवर्क में अन्य साथियों को बड़े संदेश भेजने के लिए है। यह दृष्टिकोण आमतौर पर कई इंटरनेट अनुप्रयोगों जैसे कि गेम में उपयोग किया जाता है। हालांकि, टीसीपी कई बार धीमा हो सकता है, क्योंकि टीसीपी को यह सुनिश्चित करने की आवश्यकता है कि पैकेट सही तरीके से ऑर्डर किए गए हैं और साथियों से प्रतिक्रिया की प्रतीक्षा करने की आवश्यकता है। नेटवर्क में साथियों को पैकेट भेजने के लिए टीसीपी में त्रुटि सुधार के लिए बनाया गया है।

ऐसा लगता है कि एथेरियम में इस्तेमाल किए जाने वाले परिवहन प्रोटोकॉल में सुधार की गुंजाइश है। हो सकता है, हम एक परिवहन प्रोटोकॉल पा सकते हैं जो यूडीपी के रूप में तेज़ है और टीसीपी के रूप में विश्वसनीय है। इस तरह के एक प्रोटोकॉल का मुख्य दावेदार 2012 में Google द्वारा प्रस्तावित QUIC नामक प्रायोगिक परिवहन है। QUIC एक यूडीपी-आधारित परिवहन प्रोटोकॉल है जिसका उद्देश्य इंटरनेट पर पैकेट भेजने के प्रदर्शन में सुधार करना है। इसके अलावा, QUIC में अंतर्निहित एन्क्रिप्शन है। इसका मतलब है कि साथियों के बीच संचार को अवरुद्ध करना कठिन होगा। टीसीपी पर QUIC का उपयोग करने का मुख्य लाभ दो गुना है। टीसीपी के 3-वे हैंडशेक के बजाय कनेक्शन स्थापित करने के लिए पहले, QUIC को ऑनएपेट की आवश्यकता होती है। दूसरा, यह मल्टीप्लेक्सिंग का उपयोग करता है ताकि डेटा की कई धाराएं स्वतंत्र रूप से टीसीपी के विपरीत, अपने समापन बिंदु तक पहुंच सकें, जहां डेटा स्ट्रीम में त्रुटि पाए जाने पर कनेक्शन अवरुद्ध हो सकते हैं। ETH2.0 में टीसीपी पर QUIC का उपयोग करने के लाभों की चर्चा इस अंक में की गई है। PegaSys टीम ETH2.0 में इसकी व्यवहार्यता निर्धारित करने के लिए अधिक शोध करने की योजना बना रही है। यह देखने के लिए एक विश्लेषण करने के लिए सार्थक हो सकता है कि ETH2.0 के लिए एक विश्वसनीय और तेज परिवहन प्रोटोकॉल के लिए किस प्रकार के सुधार की आवश्यकता है।

Kademlia DHT के लिए विकल्प

स्टैनफोर्ड ब्लॉकचेन कॉन्फ्रेंस के बाद कामकाजी समूह सत्र के दौरान, एक सामान्य विषय जो पॉप अप किया गया है वह सहकर्मी खोज और पीयर रूटिंग के लिए केडेलिया डीएचटी का उपयोग है। वर्तमान एथेरियम नेटवर्क में Kademlia DHT और वेरिएंट का उपयोग किया गया है, यह इस बात के कारण है कि यह कितना प्रसिद्ध है। लेकिन, इस व्यापक उपयोग ने इथेरियम नेटवर्क को ग्रहण के हमलों जैसे कई हमलों के लिए अतिसंवेदनशील बना दिया है। इसके अलावा, Ethereum नेटवर्क Kademlia की क्षमताओं का पूर्ण उपयोग नहीं करता है। वास्तव में, Ethereum को शिक्षाविदों की सामग्री खोज क्षमताओं की आवश्यकता नहीं है। ये तथ्य सुझाव देते हैं कि हमें सहकर्मी मार्ग और खोज के लिए गैर-शिक्षाविद विकल्प तलाशने चाहिए।

बातचीत में शामिल हों

अब आपको इस बात का बेहतर अंदाजा होना चाहिए कि नेटवर्किंग किस तरह सेरेनिटी में दिख सकती है। उम्मीद है, आप ETH2.0 के लिए एक मजबूत और स्केलेबल P2pnetwork के अनुसंधान और कार्यान्वयन में योगदान करना चाहेंगे। यदि आप चल रही चर्चाओं और विचार-मंथन में योगदान करना चाहते हैं, तो GitHub पर Ethresearch P2p रिपॉजिटरी की जाँच करें और शार्पिंग गिटर चैनल और नव-निर्मित P2p gitter चैनल में विचारों को साझा करें, ETH2S स्पेस इश्यू ट्रैकर और Ethereum रिसर्च फ़ोरम पर।