मास्टरिंग वेब3.0 वेव्स के साथ #मॉड्यूल 3

By @s5k10/10/2019web3
waves-client-1-launch-beta.png
separador.png separador.png

स्मार्ट कॉन्ट्रैक्ट और स्मार्ट एकाउंट्स का परिचयो

Hey,

यह ऑनलाइन कोर्स “मास्टरिंग वेब 3 वेव्स के साथ” का मॉड्यूल 3 है।

इस मॉड्यूल में हम स्मार्ट कॉन्ट्रैक्ट्स के बारे में बात करते हैं, वे कैसे काम करते हैं और उनका उपयोग कैसे करते हैं यह हमारे Web3 विकेंद्रीकृत एप्लिकेशन — कूपन बाज़ार को लागू करने के लिए।

1.png

इस मॉड्यूल के विषय:

3.1 ओवरव्यू

3.2 स्मार्ट कॉन्ट्रैक्ट का परिचय

3.3 स्मार्ट कॉन्ट्रैक्ट्स और स्मार्ट एकाउंट्स वेव्स मे

3.4 सिक्योरिटी इश्यूज और मल्टी सिग्नेचर स्मार्ट एकाउंट्स

3.5 स्मार्ट एकाउंट्स और विकेन्द्रीकृत एप्लीकेशन
separador.png

Let’s go!


2.png
ट्रेडिशनल कॉन्ट्रैक्ट्स कम से कम दो शामिल दलों (प्रतिभागियों) के बीच एक समझौते का प्रतिनिधित्व करते हैं। ये समझौते तीसरे पक्ष के अधिकारी या सरकार द्वारा मान्य और लागू किए जाते हैं। तृतीय-पक्ष संस्थाओं कॉन्ट्रैक्ट्स की शर्तों के सत्यापन को सुनिश्चित करने के लिए महत्वपूर्ण भागीदार हैं, और पर्यावरणीय परिस्थितियों और घटनाओं का मूल्यांकन करने के लिए भी जो अनुबंध समझौते के निष्पादन को प्रभावित कर सकते हैं।

भले ही वे समान टर्म साझा करते हैं, लेकिन स्मार्ट कॉन्ट्रैक्ट्स “पार्टियों के बीच समझौते” की परिभाषा के जैसा कॉन्ट्रैक्ट्स नहीं हैं। एक स्मार्ट कॉन्ट्रैक्ट एक कंप्यूटर प्रोटोकॉल (सोर्स कोड या प्रोग्राम) है जिसे ब्लॉकचेन नेटवर्क जैसे वितरित वातावरण में निष्पादित किया जा सकता है। निष्पादन परिणामों सहित सभी कार्यों को ब्लॉकचेन के भीतर संग्रहीत किया जाता है।

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

3.png

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

याद रखें कि Web3 के लिए मुख्य तकनीक ब्लॉकचेन या अधिक सामान्य तरीके से D.L.T (डिस्ट्रीब्यूटेड लेजर टेक्नोलॉजी) है, जिससे स्मार्ट कॉन्ट्रैक्ट्स को एक साथ सैकड़ों मशीनों पर निष्पादित किया जा सकता है।

स्मार्ट कॉन्ट्रैक्ट्स कई दिलचस्प सुविधाएँ प्रदान करते हैं:

  • कोई मिडलमेन नहीं

  • डिजिटल एसेट्स के लिए सुरक्षित स्टोरेज

  • कोड कानून है

  • डिफ़ॉल्ट बैकअप

  • मानवीय त्रुटियों से बचाव

  • भरोसे का एक्सेक्यूशन

  • ऑटोनोमस एक्सेक्यूशन


4.png

आपमें से कुछ ने रिकार्डियन कॉन्ट्रैक्ट के बारे में सुना होगा — 90 के दशक में बनाया गया एक इनोवेशन।

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

रिकार्डियन स्मार्ट कॉन्ट्रैक्ट दोनों का सबसे अच्छा संयोजन है।

5.png
separador.png

अलग-अलग D.L.T प्लेटफार्मों में स्मार्ट कॉन्ट्रैक्ट्स के विकास के लिए अलग-अलग तरीके हैं।

8.png

वेव्स स्मार्ट कॉन्ट्रैक्ट्स को दो अलग-अलग प्रकारों द्वारा दर्शाया जाता है: स्मार्ट अकाउंट्स और स्मार्ट एसेट्स। हम इस पाठ्यक्रम में बाद में स्मार्ट एसेट्स के साथ अभ्यास करेंगे।

किसी भी वेव्स अकाउंट को एक विशेष अकाउंट-स्क्रिप्ट को लागू करके स्मार्ट अकाउंट में परिवर्तित किया जा सकता है। अकाउंट-स्क्रिप्ट एक प्रोग्राम कोड है जो कि RIDE लैंग्वेज पर लिखा गया है, जिसमें विभिन्न प्रकार के आउटगोइंग ट्रांसक्शन की अनुमति या खंडन करने वाली शर्तों का एक सेट है।

9.png

तकनीकी रूप से वेव्स स्मार्ट कॉन्ट्रैक्ट के क्रिएशन और डिप्लॉयमेंट के कई स्टेजेस हैं:

RIDE कोड में लिखना, कंपाइलेशन, सेट-स्क्रिप्ट ट्रांसक्शन, कम से कम एक नोड द्वारा वेलिडेशन, सभी नोड्स के बीच UTX पूल और अगले ब्लॉक में ट्रांसक्शन स्क्रिप्ट सम्मिलित करना।

10.png

और एक्यूरेट ओवरव्यू में वास्तव में कुछ और कदम हैं:

  • वेव्स IDE RIDE कोड का मान्य करता है

  • RIDE कोड को base64- फॉर्मेट कम्पेटिबल सिम्बल्स के अनुक्रम में संकलित किया गया है

  • सेट-स्क्रिप्ट ट्रांसक्शन का उपयोग संकलित कोड को ब्लॉकचैन नोड में भेजने के लिए किया जाता है

  • डिसेरिएलाइज़ेशन और सिंटेक्स की जाँच, नेम्स और वेरिएबल्स , फंक्शन इनवोकेशन

  • कॉस्ट कैलकुलेशन, प्रकार और हस्ताक्षर की जाँच

  • पहले नोड द्वारा जाँच और सत्यापन पूरा होने के बाद सेट-स्क्रिप्ट ट्रांसक्शन को इंटर-नोड्स UTX पूल में पास किया जाता है

  • अन्य सभी नोड्स प्रदर्शन किए गए डिसेरिएलाइज़ेशन और कम्प्यूटेशनल कॉस्ट स्टेप्स को सत्यापित करते हैं

  • एक नए ब्लॉक को मान्य करने और ब्लॉकचेन में डालने से पहले माइनर नोड्स डीरेलिएशन और कम्प्यूटेशनल कॉस्ट की जांच करते हैं।

  • एक नया ब्लॉक प्राप्त करने के बाद सभी नोड्स डीरेलिएशन और कम्प्यूटेशनल कॉस्ट स्टेप्स का प्रदर्शन करते हैं

  • अब स्क्रिप्ट को सभी नोड्स पर निष्पादित किया जाता है और उस स्मार्ट अकाउंट से सभी आउटगोइंग ट्रांसक्शन के सत्यापन में भाग लेता है


11.png

एक स्मार्ट स्क्रिप्ट कुछ शर्तों के आधार पर कुछ निवर्तमान ट्रांसक्शन की अनुमति देती है या इनकार करती है। यह तर्क कई डेटा स्रोतों पर निर्भर करता है: अकाउंट डेटा, ट्रांसक्शन डेटा, ब्लॉकचैन स्टेट और डेटा।

12.png

एक स्टैण्डर्ड अकाउंट और एक स्मार्ट अकाउंट के बीच क्या अंतर है?

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

13.png

लेकिन ऐलिस एक स्टैण्डर्ड अकाउंट से एक स्मार्ट अकाउंट बनाकर स्क्रिप्ट को अपने खाते में सेट कर सकती है। ऐसा करने के लिए एलिस को पहले सेट-स्क्रिप्ट ट्रांसक्शन पर हस्ताक्षर करना चाहिए।

14.png

जब एक डिफ़ॉल्ट अकाउंट एक स्मार्ट अकाउंट बन जाता है, तो कोई भी स्मार्ट स्क्रिप्ट तर्क के आधार पर कुछ निश्चित आउटगोइंग ट्रांसक्शन पर हस्ताक्षर करने में सक्षम होता है।

15.png

प्रत्येक कूपन — एक डिजिटल एसेट है जो आपूर्तिकर्ता से विशेष छूट का प्रतिनिधित्व करता है।

16.png

“कूपन बाज़ार” एक बाज़ार है। यह आपूर्तिकर्ताओं और ग्राहकों के बीच मिलान, भुगतान संचालन और वितरण सेवाएं प्रदान करता है।

17.png

आपूर्तिकर्ताओं के लिए कार्यक्षमता:

एक आपूर्तिकर्ता रजिस्ट्रेशन सिस्टम
आइटम्स मैनेजमेंट
खरीद की पुष्टि

ग्राहकों के लिए कार्यक्षमता:

कूपन ढूंढें
कूपन खरीदे


18.png

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

19.png

कोई भी इस अकाउंट के अकाउंट स्क्रिप्ट को बदलने और उसके बाद सभी धन वापस लेने में सक्षम है।

20.png

स्क्रिप्ट को बदलने / अपडेट करने के लिए केवल dApp ओनर को अनुमति देने के लिए, हमें sigVerify फ़ंक्शन का उपयोग करना चाहिए। इस फ़ंक्शन का उपयोग करके हम यह जांच सकते हैं कि हस्ताक्षर नामक एक अर्रे से, जिसे सबूत कहा जाता है, डीएप के ओनर का।

21.png

हम Verify() फ़ंक्शन के भीतर एक मिलान में sigVerify फ़ंक्शन का उपयोग कर सकते हैं। जब डीएप ओनर ट्रांसक्श पर हस्ताक्षर करता है तो sigVerify एक बूलियन TRUE वैल्यू मान लेता है।

22.png

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

उदाहरण के लिए, हमारे आपूर्तिकर्ता कई संस्थापकों या प्रशासकों (हमारे मामले में तीन) से मिलकर छोटे व्यवसाय हैं। मल्टीगिग खाते से धन निकालने के लिए आउटगोइंग ट्रांसफर ट्रांसक्शन करने के लिए कम से कम दो में से तीन हस्ताक्षर आवश्यक हैं।

यह मल्टी-सिग खाता उस ऑनलाइन स्टोर को हैक से भी बचाता है जब किसी ओनर की निजी कुंजी या सीड से छेड़छाड़ या चोरी की गई हो।

23.png

कम से कम दो हस्ताक्षरों वाले मल्टी सिग्नेचर वाले एकाउंट को लागू करने के लिए हमें वैलिड अकाउंट हस्ताक्षरों की सार्वजनिक-कुंजी घोषित करनी चाहिए। प्रतिभागियों को आदेशों के एक अलग सेट में ट्रांसक्शन पर हस्ताक्षर करने में सक्षम होना चाहिए, इसलिए सभी संयोजनों की जांच की जानी चाहिए।

24.png

एक ट्रांसक्शन पर हस्ताक्षर करने के लिए कई बार हमें एक ही फ़ंक्शन के माध्यम से कई बार ट्रांसक्शन की जावास्क्रिप्ट ऑब्जेक्ट को पास करना चाहिए। उदाहरण के लिए हमारे मामले में एक ट्रांसफर फंक्शन के माध्यम से।

25.png
separador.png


विकेंद्रीकृत ऍप्लिकेशन्स के बारे में बात करते हैं!

26.png

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

27.png

स्मार्ट कॉन्ट्रैक्ट्स का उपयोग करके हम विकेंद्रीकृत Web3 ऍप्लिकेशन्स का निर्माण कर सकते हैं।

“विकेंद्रीकृत एप्लीकेशन (डीएप) एक कंप्यूटर के बजाय पी-2-पी कंप्यूटर नेटवर्क पर चलने वाले एप्लीकेशन हैं। पी-2-पी नेटवर्क के आगमन के बाद से डीएप मौजूद हैं। वे एक प्रकार का सॉफ्टवेयर प्रोग्राम है जो इंटरनेट पर एक तरह से मौजूद है जिसे किसी एक एंटिटी द्वारा नियंत्रित नहीं किया जाता है। बिटटोरेंट, पॉपकॉर्न टाइम, बिटमैसेज, टॉर, सभी पारंपरिक डीएप हैं जो पी-2-पी नेटवर्क पर चलते हैं, लेकिन ब्लॉकचेन पर नहीं (जो एक विशिष्ट प्रकार का पी-2-पी नेटवर्क है)। ”

लेकिन हमारी परिभाषा में: dApp our ब्लॉकचेन सक्षम ’वेबसाइटें हैं, जहां एक स्मार्ट कॉन्ट्रैक्ट है जो उन्हें ब्लॉकचेन से जुड़ने की अनुमति देता है। इसे समझने का सबसे आसान तरीका यह है कि पारंपरिक वेबसाइटें कैसे संचालित होती हैं, जैसे कि हमारे “कूपन बाज़ार” डीएप के साथ है जो वेव्स के ब्लॉकचेन और वेव्स कीपर ब्राउज़र एक्सटेंशन को एकीकृत करता है।

28.png

डेवलपर्स के लिए डीएप विकास प्रक्रिया को आसान बनाने के लिए RIDE- वेव्स स्मार्ट कॉन्ट्रैक्ट लैंग्वेज में दो प्रकार के फंक्शन्स हैं:

@Verifier और @Callable.

हम पहले से ही परिचित हैं @Verifier.

@Callable फंक्शन्स को बाहर से उपयोगकर्ताओं द्वारा बुलाया जा सकता है (न केवल dApp निर्माता)। निष्पादन के परिणामस्वरूप, नई जानकारी डीएप डेटा स्टोरेज (की-वैल्यू) में डाली जा सकती है या अपडेट की जा सकती है और / या फंड को डीएप बैलेंस से कॉलर या डीएप के लॉजिक के आधार पर किसी अन्य पते पर स्थानांतरित किया जा सकता है।

हमारे मामले में एक डीएप (dApp) और एक स्मार्ट अकाउंट एक ही एंटिटी है।

29.png

उपयोगकर्ता @Callable फंक्शन्स को कॉल करके इन्वोकेशन नामक प्रक्रिया में सक्षम हैं। @Callable फ़ंक्शन का उपयोग invokeTransaction के साथ किया जा सकता है। InvokeTransaction पैरामीटर से प्राप्त जानकारी का उपयोग स्मार्ट कॉन्ट्रैक्ट स्क्रिप्ट के अंदर भी किया जा सकता है, उदाहरण के लिए, कुछ भुगतान जानकारी, जिसमें राशि और भुगतान मुद्रा (टोकन) शामिल हैं।

कूपन बाज़ार उदाहरण में, हम ग्राहकों से खरीद और आपूर्तिकर्ताओं को कूपन-खरीद की पुष्टि करने के लिए एक purchase() फ़ंक्शन बनाने जा रहे हैं।

इसके लिए, आइटम की कीमतें डीएप की-वैल्यू स्टोरेज (कुंजी: आइटम_ए_कोपोन_प्राइस) में संग्रहीत की जानी चाहिए।

इसके बाद हम getInteger() फ़ंक्शन का उपयोग करके आइटम की कीमतें निकाल सकते हैं।

एक ग्राहक को कूपन खरीदने के लिए सटीक राशि का भुगतान करना चाहिए अन्यथा स्मार्ट कॉन्ट्रैक्ट त्रुटि विवरण के साथ एक अपवाद उत्पन्न करेगा।

जैसा कि आप देख सकते हैं, purchase() फ़ंक्शन के निष्पादन के बाद एक खरीद स्वचालित रूप से पुष्टि की जाएगी।

30.png

सभी रिकॉर्ड डीएप की-वैल्यू (key-value) स्टोरेज में संग्रहीत किए जाते हैं। यह डेटा WriteSet() फ़ंक्शन का उपयोग करके लिखा गया है। स्मार्ट कॉन्ट्रैक्ट निष्पादन के दौरान इस डेटा को पढ़ और फिर से लिख सकता है।

31.png

@Callable फ़ंक्शन — purchase() को कॉल करने के लिए हमें एक नए प्रकार के ट्रांसक्शन और इसके व्राप्पेर का जावास्क्रिप्ट में उपयोग करना चाहिए — invokeScript()।

हम आर्ग्स (args) ऐरे और भुगतान विवरण में किसी भी की-वैल्यू (key-value) पैरामीटर का उपयोग कर सकते हैं। यह निर्दिष्ट करने के लिए कि किस फ़ंक्शन को निष्पादित किया जाएगा हमें @Callable फ़ंक्शन के नाम का उपयोग करना चाहिए और सार्वजनिक पता डीएप अकाउंट के निर्दिष्ट करना चाहिए।

32.png

इसलिए ये स्मार्ट कॉन्ट्रैक्ट्स और वेव्स में इसके कार्यान्वयन के बुनियादी पहलू हैं।

हम आपको “कोड चैलेंज” के साथ शुभकामनाएं देते हैं!

Enjoy!

separador.png
इस मॉड्यूल के विषय:
  • स्मार्ट कॉन्ट्रैक्ट का परिचय

  • स्मार्ट कॉन्ट्रैक्ट्स और स्मार्ट एकाउंट्स वेव्स मे

  • सिक्योरिटी इश्यूज और मल्टी सिग्नेचर स्मार्ट एकाउंट्स

  • स्मार्ट एकाउंट्स और विकेन्द्रीकृत एप्लीकेशन

435

comments