मुख्य आशयावर जा

व्हर्कल ट्रीज

पृष्ठ संपादित करा (opens in a new tab)

व्हर्कल ट्रीज ("Vector commitment" (व्हेक्टर बांधिलकी) आणि "Merkle Trees" (मर्कल ट्रीज) यांचा पोर्टमॅन्टो) ही एक डेटा रचना आहे जिचा वापर इथेरियम नोड्स अपग्रेड करण्यासाठी केला जाऊ शकतो जेणेकरून ते ब्लॉक्स प्रमाणित करण्याची क्षमता न गमावता मोठ्या प्रमाणात स्थिती (state) डेटा संचयित करणे थांबवू शकतील.

अवस्थाहीनता

अवस्थाहीन (stateless) इथेरियम क्लायंट्सच्या मार्गावर व्हर्कल ट्रीज हे एक महत्त्वपूर्ण पाऊल आहे. अवस्थाहीन क्लायंट्स असे असतात ज्यांना येणारे ब्लॉक्स प्रमाणित करण्यासाठी संपूर्ण स्थिती डेटाबेस संचयित करण्याची आवश्यकता नसते. ब्लॉक्सची पडताळणी करण्यासाठी इथेरियमच्या स्थितीची स्वतःची स्थानिक प्रत वापरण्याऐवजी, अवस्थाहीन क्लायंट्स ब्लॉकसोबत येणाऱ्या स्थिती डेटाच्या "साक्ष" (witness) चा वापर करतात. साक्ष हा स्थिती डेटाच्या वैयक्तिक तुकड्यांचा संग्रह असतो जो व्यवहारांचा एक विशिष्ट संच कार्यान्वित करण्यासाठी आवश्यक असतो, आणि साक्ष हा खरोखरच संपूर्ण डेटाचा भाग असल्याचा क्रिप्टोग्राफिक पुरावा असतो. स्थिती डेटाबेसच्या ऐवजी साक्ष वापरली जाते. हे कार्य करण्यासाठी, साक्ष खूप लहान असणे आवश्यक आहे, जेणेकरून प्रमाणकांना (validators) 12 सेकंदांच्या स्लॉटमध्ये त्यांच्यावर प्रक्रिया करण्यासाठी वेळेत नेटवर्कवर सुरक्षितपणे प्रसारित केले जाऊ शकेल. सध्याची स्थिती डेटा रचना योग्य नाही कारण साक्ष खूप मोठी असते. व्हर्कल ट्रीज लहान साक्ष सक्षम करून ही समस्या सोडवतात, ज्यामुळे अवस्थाहीन क्लायंट्समधील मुख्य अडथळ्यांपैकी एक दूर होतो.

इथेरियम क्लायंट्स सध्या त्यांचा स्थिती डेटा संचयित करण्यासाठी Patricia Merkle Trie (पॅट्रिशिया मर्कल ट्राय) म्हणून ओळखली जाणारी डेटा रचना वापरतात. वैयक्तिक खात्यांबद्दलची माहिती ट्रायवर पाने (leaves) म्हणून संचयित केली जाते आणि पानांच्या जोड्या वारंवार हॅश केल्या जातात जोपर्यंत फक्त एकच हॅश शिल्लक राहत नाही. या अंतिम हॅशला "रूट" (root) म्हणून ओळखले जाते. ब्लॉक्सची पडताळणी करण्यासाठी, इथेरियम क्लायंट्स ब्लॉकमधील सर्व व्यवहार कार्यान्वित करतात आणि त्यांची स्थानिक स्टेट ट्राय अपडेट करतात. जर स्थानिक ट्रीचे रूट ब्लॉक प्रस्तावकाने प्रदान केलेल्या रूटसारखेच असेल तर ब्लॉक वैध मानला जातो, कारण ब्लॉक प्रस्तावक आणि प्रमाणित करणाऱ्या नोडने केलेल्या गणनेतील कोणत्याही फरकामुळे रूट हॅश पूर्णपणे भिन्न होईल. यातील समस्या अशी आहे की ब्लॉकचेनची पडताळणी करण्यासाठी प्रत्येक क्लायंटला हेड ब्लॉक आणि अनेक ऐतिहासिक ब्लॉक्ससाठी संपूर्ण स्टेट ट्राय संचयित करणे आवश्यक असते (गो इथेरियम (गेथ) मधील डीफॉल्ट हेडच्या मागे 128 ब्लॉक्ससाठी स्थिती डेटा ठेवणे आहे). यासाठी क्लायंट्सना मोठ्या प्रमाणात डिस्क स्पेसमध्ये प्रवेश असणे आवश्यक आहे, जे स्वस्त, कमी पॉवर हार्डवेअरवर पूर्ण नोड्स चालविण्यातील एक अडथळा आहे. यावर उपाय म्हणजे स्टेट ट्रायला अधिक कार्यक्षम रचनेत (व्हर्कल ट्री) अपडेट करणे ज्याचा सारांश डेटाच्या एका लहान "साक्ष" चा वापर करून काढला जाऊ शकतो जो संपूर्ण स्थिती डेटाऐवजी सामायिक केला जाऊ शकतो. स्थिती डेटाला व्हर्कल ट्रीमध्ये रिफॉर्मेट करणे हे अवस्थाहीन क्लायंट्सकडे जाण्यासाठी एक महत्त्वाचे पाऊल आहे.

साक्ष म्हणजे काय आणि आपल्याला त्यांची आवश्यकता का आहे?

ब्लॉकची पडताळणी करणे म्हणजे ब्लॉकमध्ये समाविष्ट असलेल्या व्यवहारांची पुन्हा अंमलबजावणी करणे, इथेरियमच्या स्टेट ट्रायमध्ये बदल लागू करणे आणि नवीन रूट हॅशची गणना करणे. प्रमाणित ब्लॉक तो असतो ज्याचा गणना केलेला स्थिती रूट हॅश ब्लॉकसोबत प्रदान केलेल्या हॅशसारखाच असतो (कारण याचा अर्थ ब्लॉक प्रस्तावकाने खरोखरच ती गणना केली आहे जी त्यांनी केल्याचे ते सांगतात). आजच्या इथेरियम क्लायंट्समध्ये, स्थिती अपडेट करण्यासाठी संपूर्ण स्टेट ट्रायमध्ये प्रवेश आवश्यक असतो, जी एक मोठी डेटा रचना आहे जी स्थानिक पातळीवर संचयित केली जाणे आवश्यक आहे. साक्षमध्ये केवळ स्थिती डेटाचे तेच तुकडे असतात जे ब्लॉकमधील व्यवहार कार्यान्वित करण्यासाठी आवश्यक असतात. त्यानंतर प्रमाणक केवळ त्या तुकड्यांचा वापर करून हे प्रमाणित करू शकतो की ब्लॉक प्रस्तावकाने ब्लॉक व्यवहार कार्यान्वित केले आहेत आणि स्थिती योग्यरित्या अपडेट केली आहे. तथापि, याचा अर्थ असा आहे की साक्ष इथेरियम नेटवर्कवरील पीअर्स दरम्यान इतक्या वेगाने हस्तांतरित करणे आवश्यक आहे की ती प्रत्येक नोडद्वारे 12 सेकंदांच्या स्लॉटमध्ये सुरक्षितपणे प्राप्त केली जाईल आणि त्यावर प्रक्रिया केली जाईल. जर साक्ष खूप मोठी असेल, तर काही नोड्सना ती डाउनलोड करण्यासाठी आणि चेनसोबत राहण्यासाठी खूप वेळ लागू शकतो. ही एक केंद्रीकरण करणारी शक्ती आहे कारण याचा अर्थ असा आहे की केवळ वेगवान इंटरनेट कनेक्शन असलेले नोड्सच ब्लॉक्स प्रमाणित करण्यात सहभागी होऊ शकतात. व्हर्कल ट्रीजसह तुमच्या हार्ड ड्राईव्हवर स्थिती संचयित करण्याची आवश्यकता नाही; ब्लॉक प्रमाणित करण्यासाठी तुम्हाला आवश्यक असलेली प्रत्येक गोष्ट ब्लॉकमध्येच समाविष्ट असते. दुर्दैवाने, मर्कल ट्रायजमधून तयार केल्या जाऊ शकणाऱ्या साक्ष अवस्थाहीन क्लायंट्सना समर्थन देण्यासाठी खूप मोठ्या असतात.

व्हर्कल ट्रीज लहान साक्ष का सक्षम करतात?

मर्कल ट्रायची रचना साक्षचा आकार खूप मोठा बनवते - 12 सेकंदांच्या स्लॉटमध्ये पीअर्स दरम्यान सुरक्षितपणे प्रसारित करण्यासाठी खूप मोठा. याचे कारण असे की साक्ष हा एक मार्ग आहे जो पानांमध्ये (leaves) असलेल्या डेटाला रूट हॅशशी जोडतो. डेटाची पडताळणी करण्यासाठी केवळ प्रत्येक पानाला रूटशी जोडणारे सर्व मध्यवर्ती हॅश असणे आवश्यक नाही, तर सर्व "सिबलिंग" (sibling) नोड्स असणे देखील आवश्यक आहे. पुराव्यातील प्रत्येक नोडचा एक सिबलिंग असतो ज्याच्यासोबत तो ट्रायच्या वरचा पुढील हॅश तयार करण्यासाठी हॅश केला जातो. हा खूप डेटा आहे. व्हर्कल ट्रीज ट्रीची पाने आणि त्याचे रूट यामधील अंतर कमी करून आणि रूट हॅशची पडताळणी करण्यासाठी सिबलिंग नोड्स प्रदान करण्याची आवश्यकता दूर करून साक्षचा आकार कमी करतात. हॅश-शैलीतील व्हेक्टर बांधिलकीऐवजी शक्तिशाली पॉलिनोमियल बांधिलकी (polynomial commitment) योजनेचा वापर करून आणखी अधिक जागा कार्यक्षमता प्राप्त केली जाईल. पॉलिनोमियल बांधिलकी साक्षला एक निश्चित आकार ठेवण्याची परवानगी देते, ती किती पानांना सिद्ध करते याची पर्वा न करता.

पॉलिनोमियल बांधिलकी योजनेअंतर्गत, साक्षचे आकार आटोपशीर असतात जे पीअर-टू-पीअर नेटवर्कवर सहजपणे हस्तांतरित केले जाऊ शकतात. हे क्लायंट्सना कमीत कमी डेटासह प्रत्येक ब्लॉकमधील स्थिती बदलांची पडताळणी करण्यास अनुमती देते.

साक्षचा आकार त्यात समाविष्ट असलेल्या पानांच्या संख्येनुसार बदलतो. साक्षमध्ये 1000 पाने समाविष्ट आहेत असे गृहीत धरल्यास, मर्कल ट्रायसाठी साक्ष सुमारे 3.5MB असेल (ट्रायमध्ये 7 स्तर आहेत असे गृहीत धरून). व्हर्कल ट्रीमध्ये त्याच डेटासाठी साक्ष (ट्रीमध्ये 4 स्तर आहेत असे गृहीत धरून) सुमारे 150 kB असेल - सुमारे 23 पट लहान. साक्षच्या आकारात ही घट अवस्थाहीन क्लायंट साक्षना स्वीकार्यपणे लहान होण्यास अनुमती देईल. कोणती विशिष्ट पॉलिनोमियल बांधिलकी वापरली जाते यावर अवलंबून पॉलिनोमियल साक्ष 0.128 - 1 kB असतात.

व्हर्कल ट्रीची रचना काय आहे?

व्हर्कल ट्रीज या (key,value) जोड्या आहेत जिथे कीज (keys) 32-बाइट घटक असतात जे 31-बाइट स्टेम (stem) आणि सिंगल बाइट सफिक्स (suffix) ने बनलेले असतात. या कीज एक्स्टेंशन (extension) नोड्स आणि इनर (inner) नोड्समध्ये आयोजित केल्या जातात. एक्स्टेंशन नोड्स भिन्न सफिक्स असलेल्या 256 मुलांसाठी (children) एकच स्टेम दर्शवतात. इनर नोड्सना देखील 256 मुले असतात, परंतु ते इतर एक्स्टेंशन नोड्स असू शकतात. व्हर्कल ट्री आणि मर्कल ट्री रचनेमधील मुख्य फरक हा आहे की व्हर्कल ट्री खूप सपाट (flatter) आहे, याचा अर्थ पानाला रूटशी जोडणारे मध्यवर्ती नोड्स कमी आहेत आणि त्यामुळे पुरावा तयार करण्यासाठी कमी डेटा आवश्यक आहे.

Diagram of a Verkle tree data structure

व्हर्कल ट्रीजच्या रचनेबद्दल अधिक वाचा (opens in a new tab)

सद्य प्रगती

व्हर्कल ट्री टेस्टनेट्स आधीपासूनच कार्यरत आहेत, परंतु व्हर्कल ट्रीजना समर्थन देण्यासाठी क्लायंट्समध्ये अद्याप महत्त्वपूर्ण अपडेट्स बाकी आहेत. तुम्ही टेस्टनेट्सवर कॉन्ट्रॅक्ट्स तैनात करून किंवा टेस्टनेट क्लायंट्स चालवून प्रगतीला गती देण्यास मदत करू शकता.

Guillaume Ballet यांना Condrieu व्हर्कल टेस्टनेट स्पष्ट करताना पहा (opens in a new tab) (लक्षात घ्या की Condrieu टेस्टनेट प्रूफ-ऑफ-वर्क (PoW) होते आणि आता त्याची जागा Verkle Gen Devnet 6 टेस्टनेटने घेतली आहे).

पुढील वाचन

पृष्ठ शेवटचे अपडेट: 26 फेब्रुवारी, 2026