ब्लॉकचैन-आधारित परियोजनाओं का मुख्य लक्ष्य डेटा का सत्यापन करना है। जीवंत उदाहरणों के लिए, आप डिजिटल पहचान और ऑनलाइन दस्तावेज़ भंडारण और जाँच देख सकते हैं। दरअसल, इनमें से किसी भी मामले में व्यक्ति या इकाई की पुष्टि के लिए कार्रवाई/लेनदेन आरंभकर्ता सत्यापन की आवश्यकता होती है। उदाहरण के लिए, यदि व्यक्ति के पास आईडी दस्तावेज़ का डिजिटल रूप है, तो स्वामित्व सुनिश्चित करना महत्वपूर्ण हो जाता है। इस प्रकार यह डेटा सत्यापनीयता की समस्या का एक उत्कृष्ट उदाहरण है। आइए समाधान के सबसे सरल रूप की समीक्षा करें - एक डिजिटल हस्ताक्षर, जिसका परीक्षण स्मार्ट-अनुबंध विकास के दौरान महत्वपूर्ण बिंदुओं में से एक है।
दृष्टिकोण सरल है:
1) सिस्टम सभी के लिए ज्ञात नियमों के अनुसार एक संदेश उत्पन्न करता है
2) हस्ताक्षरकर्ता संदेश प्राप्त करता है और प्रतीकों का एक विशिष्ट सेट जोड़ता है - डिजिटल हस्ताक्षर, एक निजी कुंजी द्वारा संदेश से निर्मित कोड
3) उत्पन्न हस्ताक्षर अब अनुबंध पर भेजा जाता है, जहां हस्ताक्षरकर्ता का पता प्राप्त करने के लिए इसे विघटित किया जाता है।
सॉलिडिटी आपको हस्ताक्षर निर्माण और आगे के अपघटन के लिए ईसीडीएसए एल्गोरिदम प्रदान करती है। हमें एल्गोरिदम में गहराई से जाने की आवश्यकता नहीं है (आप आवश्यक जानकारी पा सकते हैं उपयुक्त स्रोतों में). हमें बस यह जानने की जरूरत है कि ईसीडीएसए असममित क्रिप्टोग्राफी का एक उदाहरण है, जहां पहला उपयोगकर्ता अपनी निजी कुंजी के साथ हस्ताक्षर बनाता है, और दूसरा उपयोगकर्ता हस्ताक्षरकर्ता की सार्वजनिक कुंजी को पुनः प्राप्त करने के लिए एक मानक एल्गोरिदम लागू करता है। इस प्रकार, यह हस्ताक्षर के स्रोत को सत्यापित कर सकता है। इसके बजाय, आइए व्यावहारिक भाग - हस्ताक्षर उपयोग और परीक्षण पर ध्यान केंद्रित करें।
सबसे पहले, हमें एक समस्या को पहचानने की जरूरत है। उदाहरण के लिए, अनुबंध को कुछ कार्रवाई करने की आवश्यकता है, मान लीजिए, कॉल करने वाले का पता संग्रहीत करना है। हालाँकि, अनुबंध को केवल तभी भंडारण करना चाहिए जब कॉल करने वाले का सत्यापन हो, हमें यह सुनिश्चित करने की आवश्यकता है कि कोई भी बिना अनुमति के उनके पते का उपयोग नहीं कर सकता है। प्रामाणिक कॉलर को पुनः प्राप्त करने के लिए, हमें कुछ संदेश उत्पन्न करने, उस पर हस्ताक्षर करने और उसे अनुबंध के भीतर विघटित करने की आवश्यकता है।
आप पा सकते हैं सॉलिडिटी दस्तावेज़ीकरण में मानक समाधान (उदाहरण के लिए, 0.8.4 में - लेख के समय नवीनतम स्थिर संस्करण)। दस्तावेज़ हमें अनुबंध प्रदान करते हैं, जिसके लिए निम्नलिखित अंतर्निहित कार्यक्षमता की आवश्यकता होती है: हस्ताक्षरकर्ता को पुनः प्राप्त करने के लिए संदेश निर्माण, हस्ताक्षर विभाजन और असेंबली कोड। उदाहरण सभी आवश्यक तरीकों को दिखाता है और बहुत सीधा है, हालांकि इसमें दो कमियां हैं: इसमें सार्वभौमिकता का अभाव है, और समाधान परीक्षण का कोई अच्छा उदाहरण नहीं है। इसीलिए मैं कोड का अपना संस्करण और (वास्तविक लक्ष्य) - अनुबंध की परीक्षण रणनीति प्रदान करता हूं।
ज़रूर, आप इस्तेमाल कर सकते हैं मानक ओपनज़ेपेलिन लाइब्रेरी ईसीडीएसए संचालन के लिए, लेकिन आपको फिर से उन्हीं समस्याओं का सामना करना पड़ेगा - लचीलेपन और परीक्षण दृष्टिकोण की कमी। तो, आइए हस्ताक्षर-आधारित तर्क के मेरे उदाहरण पर गौर करें। आप पूरा पा सकते हैं मेरे GitHub में कार्यशील उदाहरण, लेकिन कुछ जगहें ऐसी हैं जिन्हें मैं पूरी तरह से दिखाना चाहता हूं।
सबसे पहले हम मैसेज तैयार करेंगे. जैसा कि आप देख सकते हैं, यह दो पैक्ड और हैशेड वॉलेट पतों से बना है:
कोड का दूसरा महत्वपूर्ण भाग मानक एथेरियम संदेश के साथ संदेश को हैश करना है:
यह दर्शाता है कि संदेश एथेरियम नेटवर्क के भीतर भेजा गया था और इसकी लंबाई 32-बाइट है, जो एक यादृच्छिक संख्या नहीं है। पिछले ऑपरेशन के बाद, हमारे पास हैश है, जिसकी लंबाई 32-बाइट है। इस रूप में अतिरिक्त हैशिंग फ़ंक्शन का होना आवश्यक है, और हम तर्क पर थोड़ी देर बाद चर्चा करेंगे।
अन्य कोड टुकड़े काफी मानक हैं। हस्ताक्षर को विभाजित करने का कार्य इस प्रकार है:
और यहां हस्ताक्षरकर्ता को पुनः प्राप्त करने का कार्य है:
बाहरी इंटरफ़ेस के लिए, हम कस्टम फ़ंक्शन का उपयोग करेंगे, जो हस्ताक्षर और आवश्यक तर्क प्राप्त करता है, जांचता है कि उपयोगकर्ता पहले से पंजीकृत है या नहीं, संदेश बनाता है, और हस्ताक्षर सत्यापित करता है:
सबसे पहले, हम उस संदेश का अनुकरण करेंगे जिस पर हस्ताक्षर करने की आवश्यकता है। हम इस्तेमाल करेंगे ईथर.जेएस पुस्तकालय, जो (साथ में) है web3) सबसे अधिक उपयोग की जाने वाली और सुविधाजनक लाइब्रेरी। चूँकि यह एक खुला स्रोत पुस्तकालय है, आप अन्वेषण करने के लिए स्वतंत्र हैं इसका कोड और दस्तावेज़. साथ ही, यह लाइब्रेरी हमें निम्नलिखित संदेश बनाने के लिए सही इंटरफ़ेस प्रदान करती है:
दोनों में से एक नुकसान web3 और ईथर पुस्तकालयों की समस्या यह है कि उनके पास स्थानीय गनाचे वातावरण के लिए सभी कार्य नहीं हैं क्योंकि दोनों पुस्तकालयों का उद्देश्य पूर्ण एथेरियम नोड्स के साथ काम करना है। फिर भी, स्थानीय परीक्षण का उपयोग करने के लिए एक दृष्टिकोण है वेब3-खाता कार्यक्षमता. हालाँकि आपको एक अतिरिक्त खाता बनाने की आवश्यकता है, जो गायक कार्यक्षमता को लागू करेगा और वर्तमान वेब3 प्रदाता से कनेक्शन प्रदान करेगा:
तो, अब हमारे पास संदेश तैयार और हस्ताक्षरित है। लेकिन, यही सब कुछ नहीं है; बात करने के लिए कुछ चीजें बाकी हैं। हुड के नीचे दोनों लाइब्रेरी (वेब3 और ईथर) हस्ताक्षर निर्माण से पहले संदेश की अतिरिक्त हैशिंग प्रदान करते हैं। इसके अलावा, संदेश केवल हैश नहीं किया गया है बल्कि मानक एथेरियम संदेश के साथ जोड़ा गया है जिसे हमने पहले देखा था:
और इसीलिए हमने अनुबंध में अतिरिक्त विधि जोड़ी है। इसलिए, यदि आप कस्टम संदेशों का उपयोग करना चाहते हैं, अतिरिक्त हैशिंग आदि को छोड़ना चाहते हैं, तो आपको हस्ताक्षर कार्यक्षमता का एक कस्टम संस्करण बनाना होगा। हमने ऊपर कारण पर चर्चा की है - दोनों मानक पुस्तकालय संदेश पर हस्ताक्षर करने के लिए विशिष्ट दृष्टिकोण लागू करते हैं, जिसे केवल कार्यक्षमता को ओवरराइड करके बदला जा सकता है।
अंतिम चरण के रूप में, आइए परीक्षण चलाएं और जांचें कि क्या यह सही ढंग से काम करता है:
हमने हस्ताक्षर निर्माण, उत्पन्न संदेश, हस्ताक्षर अनुमोदन और अस्वीकृति का परीक्षण किया है। तो यह सत्यापन कार्यक्षमता के लिए परीक्षणों का एक पूर्ण सेट है।
- लेखा
- कार्य
- अतिरिक्त
- कलन विधि
- सब
- तर्क
- लेख
- विश्वसनीय
- बिट
- मामलों
- जाँचता
- कोड
- अनुबंध
- क्रिप्टोग्राफी
- वर्तमान
- तिथि
- विकास
- डिजिटल
- डिजिटल पहचान
- दस्तावेजों
- वातावरण
- ethereum
- इथेरियम नेटवर्क
- चेहरा
- प्रथम
- लचीलापन
- फोकस
- प्रपत्र
- मुक्त
- पूर्ण
- समारोह
- अच्छा
- हैश
- हैशिंग
- HTTPS
- ia
- पहचान
- करें-
- IP
- IT
- कुंजी
- ताज़ा
- पुस्तकालय
- स्थानीय
- मध्यम
- नेटवर्क
- नोड्स
- प्रस्ताव
- ऑफर
- ऑनलाइन
- खुला
- खुला स्रोत
- संचालन
- निजी
- निजी कुंजी
- परियोजनाओं
- सार्वजनिक
- सार्वजनिक कुंजी
- की समीक्षा
- रन
- सेट
- सरल
- So
- दृढ़ता
- विभाजित
- भंडारण
- की दुकान
- स्ट्रेटेजी
- प्रणाली
- परीक्षण
- परीक्षण
- परीक्षण
- स्रोत
- us
- सत्यापन
- बटुआ
- विकिपीडिया
- अंदर
- काम
- कार्य