व्हर्कल ट्रीज ("Vector commitment" (व्हेक्टर बांधिलकी) आणि "Merkle Trees" (मर्कल ट्रीज) यांचा पोर्टमॅन्टो) ही एक डेटा रचना आहे जिचा वापर इथेरियम नोड्स अपग्रेड करण्यासाठी केला जाऊ शकतो जेणेकरून ते ब्लॉक्स प्रमाणित करण्याची क्षमता न गमावता मोठ्या प्रमाणात स्थिती (state) डेटा संचयित करणे थांबवू शकतील.
अवस्थाहीनता
अवस्थाहीन (stateless) इथेरियम क्लायंट्सच्या मार्गावर व्हर्कल ट्रीज हे एक महत्त्वपूर्ण पाऊल आहे. अवस्थाहीन क्लायंट्स असे असतात ज्यांना येणारे ब्लॉक्स प्रमाणित करण्यासाठी संपूर्ण स्थिती डेटाबेस संचयित करण्याची आवश्यकता नसते. ब्लॉक्सची पडताळणी करण्यासाठी इथेरियमच्या स्थितीची स्वतःची स्थानिक प्रत वापरण्याऐवजी, अवस्थाहीन क्लायंट्स ब्लॉकसोबत येणाऱ्या स्थिती डेटाच्या "साक्ष" (witness) चा वापर करतात. साक्ष हा स्थिती डेटाच्या वैयक्तिक तुकड्यांचा संग्रह असतो जो व्यवहारांचा एक विशिष्ट संच कार्यान्वित करण्यासाठी आवश्यक असतो, आणि साक्ष हा खरोखरच संपूर्ण डेटाचा भाग असल्याचा क्रिप्टोग्राफिक पुरावा असतो. स्थिती डेटाबेसच्या ऐवजी साक्ष वापरली जाते. हे कार्य करण्यासाठी, साक्ष खूप लहान असणे आवश्यक आहे, जेणेकरून प्रमाणकांना (validators) 12 सेकंदांच्या स्लॉटमध्ये त्यांच्यावर प्रक्रिया करण्यासाठी वेळेत नेटवर्कवर सुरक्षितपणे प्रसारित केले जाऊ शकेल. सध्याची स्थिती डेटा रचना योग्य नाही कारण साक्ष खूप मोठी असते. व्हर्कल ट्रीज लहान साक्ष सक्षम करून ही समस्या सोडवतात, ज्यामुळे अवस्थाहीन क्लायंट्समधील मुख्य अडथळ्यांपैकी एक दूर होतो.
साक्ष म्हणजे काय आणि आपल्याला त्यांची आवश्यकता का आहे?
ब्लॉकची पडताळणी करणे म्हणजे ब्लॉकमध्ये समाविष्ट असलेल्या व्यवहारांची पुन्हा अंमलबजावणी करणे, इथेरियमच्या स्टेट ट्रायमध्ये बदल लागू करणे आणि नवीन रूट हॅशची गणना करणे. प्रमाणित ब्लॉक तो असतो ज्याचा गणना केलेला स्थिती रूट हॅश ब्लॉकसोबत प्रदान केलेल्या हॅशसारखाच असतो (कारण याचा अर्थ ब्लॉक प्रस्तावकाने खरोखरच ती गणना केली आहे जी त्यांनी केल्याचे ते सांगतात). आजच्या इथेरियम क्लायंट्समध्ये, स्थिती अपडेट करण्यासाठी संपूर्ण स्टेट ट्रायमध्ये प्रवेश आवश्यक असतो, जी एक मोठी डेटा रचना आहे जी स्थानिक पातळीवर संचयित केली जाणे आवश्यक आहे. साक्षमध्ये केवळ स्थिती डेटाचे तेच तुकडे असतात जे ब्लॉकमधील व्यवहार कार्यान्वित करण्यासाठी आवश्यक असतात. त्यानंतर प्रमाणक केवळ त्या तुकड्यांचा वापर करून हे प्रमाणित करू शकतो की ब्लॉक प्रस्तावकाने ब्लॉक व्यवहार कार्यान्वित केले आहेत आणि स्थिती योग्यरित्या अपडेट केली आहे. तथापि, याचा अर्थ असा आहे की साक्ष इथेरियम नेटवर्कवरील पीअर्स दरम्यान इतक्या वेगाने हस्तांतरित करणे आवश्यक आहे की ती प्रत्येक नोडद्वारे 12 सेकंदांच्या स्लॉटमध्ये सुरक्षितपणे प्राप्त केली जाईल आणि त्यावर प्रक्रिया केली जाईल. जर साक्ष खूप मोठी असेल, तर काही नोड्सना ती डाउनलोड करण्यासाठी आणि चेनसोबत राहण्यासाठी खूप वेळ लागू शकतो. ही एक केंद्रीकरण करणारी शक्ती आहे कारण याचा अर्थ असा आहे की केवळ वेगवान इंटरनेट कनेक्शन असलेले नोड्सच ब्लॉक्स प्रमाणित करण्यात सहभागी होऊ शकतात. व्हर्कल ट्रीजसह तुमच्या हार्ड ड्राईव्हवर स्थिती संचयित करण्याची आवश्यकता नाही; ब्लॉक प्रमाणित करण्यासाठी तुम्हाला आवश्यक असलेली प्रत्येक गोष्ट ब्लॉकमध्येच समाविष्ट असते. दुर्दैवाने, मर्कल ट्रायजमधून तयार केल्या जाऊ शकणाऱ्या साक्ष अवस्थाहीन क्लायंट्सना समर्थन देण्यासाठी खूप मोठ्या असतात.
व्हर्कल ट्रीज लहान साक्ष का सक्षम करतात?
मर्कल ट्रायची रचना साक्षचा आकार खूप मोठा बनवते - 12 सेकंदांच्या स्लॉटमध्ये पीअर्स दरम्यान सुरक्षितपणे प्रसारित करण्यासाठी खूप मोठा. याचे कारण असे की साक्ष हा एक मार्ग आहे जो पानांमध्ये (leaves) असलेल्या डेटाला रूट हॅशशी जोडतो. डेटाची पडताळणी करण्यासाठी केवळ प्रत्येक पानाला रूटशी जोडणारे सर्व मध्यवर्ती हॅश असणे आवश्यक नाही, तर सर्व "सिबलिंग" (sibling) नोड्स असणे देखील आवश्यक आहे. पुराव्यातील प्रत्येक नोडचा एक सिबलिंग असतो ज्याच्यासोबत तो ट्रायच्या वरचा पुढील हॅश तयार करण्यासाठी हॅश केला जातो. हा खूप डेटा आहे. व्हर्कल ट्रीज ट्रीची पाने आणि त्याचे रूट यामधील अंतर कमी करून आणि रूट हॅशची पडताळणी करण्यासाठी सिबलिंग नोड्स प्रदान करण्याची आवश्यकता दूर करून साक्षचा आकार कमी करतात. हॅश-शैलीतील व्हेक्टर बांधिलकीऐवजी शक्तिशाली पॉलिनोमियल बांधिलकी (polynomial commitment) योजनेचा वापर करून आणखी अधिक जागा कार्यक्षमता प्राप्त केली जाईल. पॉलिनोमियल बांधिलकी साक्षला एक निश्चित आकार ठेवण्याची परवानगी देते, ती किती पानांना सिद्ध करते याची पर्वा न करता.
पॉलिनोमियल बांधिलकी योजनेअंतर्गत, साक्षचे आकार आटोपशीर असतात जे पीअर-टू-पीअर नेटवर्कवर सहजपणे हस्तांतरित केले जाऊ शकतात. हे क्लायंट्सना कमीत कमी डेटासह प्रत्येक ब्लॉकमधील स्थिती बदलांची पडताळणी करण्यास अनुमती देते.
व्हर्कल ट्रीची रचना काय आहे?
व्हर्कल ट्रीज या (key,value) जोड्या आहेत जिथे कीज (keys) 32-बाइट घटक असतात जे 31-बाइट स्टेम (stem) आणि सिंगल बाइट सफिक्स (suffix) ने बनलेले असतात. या कीज एक्स्टेंशन (extension) नोड्स आणि इनर (inner) नोड्समध्ये आयोजित केल्या जातात. एक्स्टेंशन नोड्स भिन्न सफिक्स असलेल्या 256 मुलांसाठी (children) एकच स्टेम दर्शवतात. इनर नोड्सना देखील 256 मुले असतात, परंतु ते इतर एक्स्टेंशन नोड्स असू शकतात. व्हर्कल ट्री आणि मर्कल ट्री रचनेमधील मुख्य फरक हा आहे की व्हर्कल ट्री खूप सपाट (flatter) आहे, याचा अर्थ पानाला रूटशी जोडणारे मध्यवर्ती नोड्स कमी आहेत आणि त्यामुळे पुरावा तयार करण्यासाठी कमी डेटा आवश्यक आहे.
व्हर्कल ट्रीजच्या रचनेबद्दल अधिक वाचा (नवीन टॅबमध्ये उघडते)
सद्य प्रगती
व्हर्कल ट्री टेस्टनेट्स आधीपासूनच कार्यरत आहेत, परंतु व्हर्कल ट्रीजना समर्थन देण्यासाठी क्लायंट्समध्ये अद्याप महत्त्वपूर्ण अपडेट्स बाकी आहेत. तुम्ही टेस्टनेट्सवर कॉन्ट्रॅक्ट्स तैनात करून किंवा टेस्टनेट क्लायंट्स चालवून प्रगतीला गती देण्यास मदत करू शकता.
Guillaume Ballet यांना Condrieu व्हर्कल टेस्टनेट स्पष्ट करताना पहा (नवीन टॅबमध्ये उघडते) (लक्षात घ्या की Condrieu टेस्टनेट प्रूफ-ऑफ-वर्क (PoW) होते आणि आता त्याची जागा Verkle Gen Devnet 6 टेस्टनेटने घेतली आहे).
पुढील वाचन
- अवस्थाहीनतेसाठी व्हर्कल ट्रीज (नवीन टॅबमध्ये उघडते)
- Dankrad Feist PEEPanEIP वर व्हर्कल ट्रीज स्पष्ट करतात (नवीन टॅबमध्ये उघडते)
- आपल्या सर्वांसाठी व्हर्कल ट्रीज (नवीन टॅबमध्ये उघडते)
- व्हर्कल पुराव्याची रचना (Anatomy of A Verkle Proof) (नवीन टॅबमध्ये उघडते)
- Guillaume Ballet ETHGlobal मध्ये व्हर्कल ट्रीज स्पष्ट करतात (नवीन टॅबमध्ये उघडते)
- Devcon 6 मध्ये Guillaume Ballet यांचे "व्हर्कल ट्रीज इथेरियमला कसे लीन आणि मीन बनवतात" (नवीन टॅबमध्ये उघडते)
- ETHDenver 2020 मधील अवस्थाहीन क्लायंट्सवर Piper Merriam (नवीन टॅबमध्ये उघडते)
- Dankrad Feist झिरो-नॉलेज पॉडकास्टवर व्हर्कल ट्रीज आणि अवस्थाहीनता स्पष्ट करतात (नवीन टॅबमध्ये उघडते)
- व्हर्कल ट्रीजवर विटालिक् बुटेरिन् (नवीन टॅबमध्ये उघडते)
- व्हर्कल ट्रीजवर Dankrad Feist (नवीन टॅबमध्ये उघडते)
- व्हर्कल ट्री EIP दस्तऐवजीकरण (नवीन टॅबमध्ये उघडते)
