Trending News

BTC
$23,635.58
-0.68
ETH
$1,665.42
-0.44
LTC
$99.40
-0.46
DASH
$63.29
+1.41
XMR
$173.74
-2.84
NXT
$0.00
-0.68
ETC
$23.24
-2.43

छत्ता: हम एक साफ कांटे के लिए कैसे प्रयास करते हैं

0


DAO सॉफ्ट-फोर्क का प्रयास कठिन था। न केवल यह पता चला कि हमने सर्वसम्मति प्रोटोकॉल (यानी DoS भेद्यता) पर दुष्प्रभावों को कम करके आंका, बल्कि हम जल्दबाजी में किए गए कार्यान्वयन में एक डेटा रेस शुरू करने में भी कामयाब रहे जो एक टिक-टिक करने वाला टाइम बम था। यह आदर्श नहीं था, और भले ही अंतिम उदाहरण पर टाल दिया गया हो, लेकिन तेजी से कठिन कांटे की समय सीमा कम से कम कहने के लिए अजीब लग रही थी। हमें एक नई रणनीति की जरूरत थी …

इस ओर कदम बढ़ाने का विचार Google (निक जॉनसन के सौजन्य से) से उधार लिया गया एक विचार था: एक विस्तृत लेख लिखना शवपरीक्षा घटना के मूल कारणों का आकलन करने के उद्देश्य से, केवल तकनीकी पहलुओं और पुनरावृत्ति को रोकने के लिए उचित उपायों पर ध्यान केंद्रित करना।

तकनीकी समाधान पैमाने और बने रहते हैं; लोगों को दोष देना नहीं है। ~ निक

पोस्टमॉर्टम से, इस ब्लॉग पोस्ट के नजरिए से एक दिलचस्प खोज की गई। सॉफ्ट-फोर्क कोड अंदर [go-ethereum](https://github.com/ethereum/go-ethereum) सभी दृष्टिकोणों से ठोस लग रहा था: ए) यह 3:1 टेस्ट-टू-कोड अनुपात के साथ यूनिट परीक्षणों द्वारा पूरी तरह से कवर किया गया था; बी) छह फाउंडेशन डेवलपर्स द्वारा इसकी गहन समीक्षा की गई थी; और सी) यह एक निजी नेटवर्क पर मैन्युअल रूप से लाइव परीक्षण भी किया गया था … फिर भी, एक घातक डेटा दौड़ बनी रही, जो संभावित रूप से गंभीर नेटवर्क व्यवधान का कारण बन सकती थी।

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

और इस तरह, मधुमुखी का छत्ता पैदा हुआ था…

छत्ता क्या है?

एथेरियम उस बिंदु तक बड़ा हो गया जहां परीक्षण कार्यान्वयन एक बड़ा बोझ बन गया। यूनिट परीक्षण विभिन्न कार्यान्वयन quirks की जाँच के लिए ठीक हैं, लेकिन यह सत्यापित करना कि ग्राहक कुछ आधारभूत गुणवत्ता के अनुरूप है, या यह मान्य करना कि ग्राहक एक बहु ग्राहक वातावरण में एक साथ अच्छी तरह से खेल सकते हैं, यह सब सरल है।

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

सबसे महत्वपूर्ण बात यह है कि हाइव को किसी भी ग्राहक के सीआई कार्यप्रवाह के हिस्से के रूप में चलाने के लिए शुरू से डिजाइन किया गया था!

छत्ता कैसे काम करता है?

हाइव का शरीर और आत्मा है [docker](https://www.docker.com/)। प्रत्येक ग्राहक कार्यान्वयन एक डॉकर छवि है; प्रत्येक सत्यापन सूट एक डॉकर छवि है; और हर नेटवर्क सिमुलेशन एक डॉकर छवि है। हाइव अपने आप में एक सर्वव्यापी डॉकर छवि है। यह एक बहुत ही शक्तिशाली अमूर्तन है…

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

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

अंततः, नेटवर्क सिमुलेशन फिर से डॉकर छवियों द्वारा परिभाषित किया गया है, लेकिन सरल परीक्षणों की तुलना में, सिमुलेटर न केवल चल रहे क्लाइंट के खिलाफ कोड निष्पादित करते हैं, बल्कि वास्तव में ग्राहकों को शुरू और समाप्त कर सकते हैं। ये क्लाइंट एक ही वर्चुअल नेटवर्क में चलते हैं और स्वतंत्र रूप से (या सिम्युलेटर कंटेनर द्वारा तय किए गए अनुसार) एक-दूसरे से जुड़ सकते हैं, ऑन-डिमांड प्राइवेट एथेरियम नेटवर्क बना सकते हैं।

छत्ते ने कांटे की सहायता कैसे की?

हाइव न तो इकाई परीक्षण के लिए एक प्रतिस्थापन है और न ही गहन समीक्षा के लिए। किसी भी सुविधा का स्वच्छ कार्यान्वयन प्राप्त करने के लिए सभी वर्तमान नियोजित प्रथाएँ आवश्यक हैं। हाइव औसत डेवलपर के दृष्टिकोण से जो संभव है उससे परे सत्यापन प्रदान कर सकता है: व्यापक परीक्षण चलाना जिसके लिए जटिल निष्पादन वातावरण की आवश्यकता हो सकती है; और नेटवर्किंग कॉर्नर केसों की जाँच करना जिन्हें सेट होने में घंटों लग सकते हैं।

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

इसलिए हमने हाइव में तीन विशिष्ट नेटवर्क सिमुलेशन लागू किए हैं:

  • सबसे पहला यह जांचने के लिए कि पूर्ण एटाश डीएजी चलाने वाले खनिक प्रो-फोकर्स और नो-फोर्कर्स दोनों के लिए सही ब्लॉक अतिरिक्त-डेटा फ़ील्ड उत्पन्न करते हैं, भले ही भोले-भाले स्पूफ की कोशिश कर रहे हों।

  • दूसरा यह सत्यापित करने के लिए कि फोर्क ब्लॉक आने पर मिश्रित प्रो-फोर्क और नो-फोर्क नोड्स/खनिकों वाला नेटवर्क सही ढंग से दो में विभाजित हो जाता है, बाद में विभाजन को भी बनाए रखता है।

  • तीसरा यह जांचने के लिए कि पहले से ही फोर्क्ड नेटवर्क दिया गया है, नए जुड़ने वाले नोड्स अपनी पसंद की श्रृंखला में सिंक, फास्ट सिंक और लाइट सिंक कर सकते हैं।

हालांकि दिलचस्प सवाल यह है: क्या हाइव ने वास्तव में कोई त्रुटि पकड़ी है, या किया सिर्फ एक अतिरिक्त पुष्टि के रूप में कार्य करता है कि सब कुछ ठीक है? और जवाब है, दोनों. छत्ता पकड़ा गया तीन कांटा-असंबंधित बग गेथ में, लेकिन इसने नेटवर्क के व्यवहार को प्रभावित करने के तरीके पर लगातार प्रतिक्रिया देकर गेथ के हार्ड-फोर्क विकास में भारी सहायता की।

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

हाइव का भविष्य क्या है?

एथेरियम गिटहब संगठन सुविधाएँ [4 test tools already](https://github.com/ethereum?utf8=%E2%9C%93&query=test), कम से कम एक EVM बेंचमार्क टूल कुछ बाहरी रिपॉजिटरी में पक रहा है। उनका पूरा उपयोग नहीं हो पा रहा है। उनके पास ढेर सारी निर्भरताएँ हैं, ढेर सारा कबाड़ उत्पन्न करते हैं और उपयोग करने के लिए बहुत जटिल हैं।

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

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

थोड़े से या काम के साथ, शायद हमारे पास क्लाउड में हाइव चलाने के लिए भी समर्थन होगा, जिससे यह नेटवर्क सिमुलेशन को और अधिक दिलचस्प पैमाने पर चलाने की अनुमति देगा।




Source link

Leave A Reply

Your email address will not be published.

Shares