BITCOIN

पूर्व-अधिकृत हस्ताक्षरों का उपयोग करके बिटकॉइन स्टेटफुल अनुबंध अपडेट को गति दें

होम » Tech » स्पीडअप बिटकॉइन पूर्व-अधिकृत हस्ताक्षर का उपयोग करके राज्यव्यापी अनुबंध अद्यतन

) यह पोस्ट पहली बार मध्यम
पर प्रकाशित हुआ था। राज्य अद्यतन विवाद लेन-देन की एक श्रृंखला के आउटपुट में बिटकॉइन स्मार्ट कॉन्ट्रैक्ट्स स्टोर स्टेट्स । राज्य संक्रमण तब होता है जब कोई लेन-देन पुराने राज्य वाले आउटपुट को खर्च करता है और नए राज्य वाला आउटपुट बनाता है। किसी भी समय, लेन-देन श्रृंखला के सिरे पर एक एकल आउटपुट/UTXO की नवीनतम स्थिति होती है। एक समस्या तब उत्पन्न होती है जब कई लेन-देन एक ही समय में साझा स्थिति को अद्यतन करने के लिए संघर्ष करते हैं। यह देखने के लिए, आइए निम्नलिखित स्थिति के साथ एक सरल ईआरसी -20 जैसे टोकन स्मार्ट अनुबंध पर विचार करें [1]: Contract updates
चित्र 1: परिवर्तनीय टोकन अनुबंध की स्थिति
राज्य रिकॉर्ड करता है कि प्रत्येक उपयोगकर्ता के पास कितने टोकन हैं। मान लीजिए कि ऐलिस चार्ली को 5 टोकन स्थानांतरित करने के लिए
लेनदेन भेजता है, राज्य को अद्यतन करता है State3A , जबकि बॉब एक ​​साथ 10 टोकन को डेव को स्थानांतरित करने के लिए एक और लेनदेन भेजता है, इसके बजाय इसे अपडेट करता है State3B । लेन-देन में से एक विफल हो जाएगा क्योंकि वे डबल खर्च कर रहे हैं एक एकल UTXO जिसमें State2 है
चित्र 2: विवाद
मान लीजिए बॉब का लेन-देन विफल हो जाता है। उसे के बजाय नया UTXO State3A, खर्च करते हुए एक नया लेनदेन बनाना होगा State2, और पुनः प्रयास करें। यह देखना मुश्किल नहीं है कि जब एक ही समय में कई उपयोगकर्ता अपडेट करने का प्रयास कर रहे हों, तो किसी के अपडेट लेनदेन को सफल होने में कई प्रयास हो सकते हैं, जिससे अप्रत्याशित देरी हो सकती है और उपयोगकर्ता अनुभव खराब हो सकता है। चित्र तीन
विवाद से बचने के लिए, सभी अद्यतन लेनदेन को एक मध्यवर्ती समन्वयक, जिसे सीक्वेंसर कहा जाता है, को भेजना है, जो उन्हें आदेश देता है और उन्हें ब्लॉकचैन में प्रसारित करता है।
चित्र 4
दुर्भाग्य से, यह दृष्टिकोण काम नहीं करता है क्योंकि बैच किए गए लेनदेन एकल UTXO खर्च कर सकते हैं, जैसा कि चित्र 2 में ऐलिस और बॉब के लेनदेन करते हैं। जब सीक्वेंसर उन्हें दोहरे खर्च से बचने के लिए एक श्रृंखला में क्रमिक रूप से पुन: व्यवस्थित करता है, जैसा कि चित्र 3 में है, बॉब के मूल लेनदेन में हस्ताक्षर, State3B , अमान्य हो जाता है। यदि सीक्वेंसर को किसी उपयोगकर्ता को लेन-देन के पुन: आदेश दिए जाने पर हर बार फिर से हस्ताक्षर करने के लिए कहना है, तो फिर से अप्रत्याशित देरी होगी और हम एक वर्ग में वापस आ गए हैं। पूर्व-प्राधिकृत हस्ताक्षर हस्ताक्षर का उपयोग पूर्व- राज्य अद्यतन अधिकृत करें। हमें प्रत्येक लेन-देन पर हस्ताक्षर करने का एक तरीका चाहिए, जो कि अमान्य नहीं होगा, भले ही सीक्वेंसर अपने इनपुट को बदलकर इसे फिर से आदेश दे। कोई भी SIGHASH ध्वज इसकी अनुमति नहीं देता है।
हमारे पिछले कार्य से प्रेरित होकर अनुकरण करने के लिए SIGHASH_NOINPUT, जो हस्ताक्षर से खर्च किए जा रहे इनपुट को शामिल नहीं करता है, हम केवल एक संदेश पर हस्ताक्षर करते हैं जिसमें कार्रवाई के बारे में विशिष्ट विवरण होता है जिसे अधिकृत किया जा रहा है। हमारे टोकन अनुबंध में, हम केवल प्राप्तकर्ता और राशि पर हस्ताक्षर करते हैं। उदाहरण के लिए, ऐलिस चार्ली को 5 टोकन के हस्तांतरण को अधिकृत करने के लिए हस्ताक्षर करेगी।ईआरसी20 अनुबंध पूर्व-अधिकृत हस्ताक्षर के साथ फिर से खेलना हमले ध्यान दें कि टोकन जब तक एक वैध हस्ताक्षर प्रदान किया जाता है तब तक स्थानांतरित किया जा सकता है। ऐलिस के हस्ताक्षरित संदेश में ऐसा कुछ भी नहीं है जो एक ही हस्ताक्षर को बार-बार उपयोग किए जाने से रोक सके। बॉब (वास्तव में कोई भी) उसी हस्ताक्षर का पुन: उपयोग कर सकता है और खुद को ऐलिस से 5 और टोकन भेज सकता है। ऐलिस का संतुलन खत्म होने तक वह इसे कई बार दोहरा भी सकता है। रिप्ले हमले का मुकाबला करने के लिए, हम एक एप्लिकेशन-स्तरीय गैर का उपयोग कर सकते हैं। क्रिप्टोग्राफी में “नॉनस” “एक बार उपयोग की गई संख्या” के लिए शॉर्ट-हैंड है। हम प्रत्येक हस्ताक्षर के लिए एक गैर का उपयोग कर सकते हैं और अनुबंध के अंदर अगले गैर को संग्रहीत कर सकते हैं। ईआरसी20 अनुबंध अहस्ताक्षरित के साथ अनुबंध स्तर यदि दो अनुबंध संदेशों के समान एन्कोडिंग का उपयोग करें (उदाहरण के लिए, एक और फंगसेबल टोकन अनुबंध है), एक अनुबंध द्वारा उपयोग किया गया हस्ताक्षर दूसरे के लिए भी मान्य हो सकता है, यहां तक ​​​​कि गैर के साथ भी। इस प्रकार के रीप्ले हमले को रोकने के लिए हमें अनुबंध के बारे में कुछ पहचान संबंधी जानकारी की आवश्यकता है। हम निर्धारित करते हैं कि इस तरह के एक स्टेटफुल अनुबंध में उपयोग की जाने वाली कोई भी सार्वजनिक कुंजी/पता अन्य अनुबंधों में पुन: उपयोग नहीं किया जा सकता है। यह प्रत्येक नए बिटकॉइन लेनदेन के लिए एक नया पता बनाने के मानक अभ्यास के अनुरूप है। सेंसरशिप प्रतिरोधी यदि कोई सीक्वेंसर उपयोगकर्ता के लेन-देन को सेंसर करता है, तो उपयोगकर्ता इसे सीधे चेन पर स्टेटफुल कॉन्ट्रैक्ट में जमा कर सकता है। इसके अलावा किसी दिए गए स्टेटफुल कॉन्ट्रैक्ट के लिए कई सीक्वेंसर हो सकते हैं, अगर कोई अपने ट्रांजैक्शन को प्रोसेस करने से इनकार करता है तो यूजर वैकल्पिक सीक्वेंसर को सबमिट कर सकता है। इन सीक्वेंसर को माइनर नेटवर्क के बाहर एक ओवरले नेटवर्क में समन्वित किया जा सकता है। मानक शेड्यूलिंग तकनीक जैसे Contract updates राउंड-रॉबिन नवीनतम राज्य तक पहुँचने पर उनके बीच विवाद को हल करने के लिए नियोजित किया जा सकता है। [1] एक मर्कल ट्री में प्रत्येक टेबल एंट्री को स्टोर करके और स्मार्ट कॉन्ट्रैक्ट में स्टेट के रूप में ट्री की केवल जड़ को स्टोर करके एक स्टेट को कंप्रेस किया जा सकता है। देखें: बीएसवी ग्लोबल ब्लॉकचैन कन्वेंशन प्रेजेंटेशन, स्मार्ट कॉन्ट्रैक्ट्स और बीएसवी पर गणना Contract updates चौड़ाई=”562″ ऊंचाई=”315″ फ्रेमबॉर्डर=”0″ अनुमति पूर्णस्क्रीन=”अनुमति पूर्णस्क्रीन”> Contract updates
Contract updatesबिटकॉइन में नए हैं? CoinGeek की जाँच करें Contract updates
शुरुआती के लिए बिटकॉइन अनुभाग, सीखने के लिए अंतिम संसाधन मार्गदर्शिका बिटकॉइन के बारे में – जैसा कि मूल रूप से सातोशी नाकामोतो द्वारा कल्पना की गई थी – और ब्लॉकचेन। Contract updates

Back to top button
%d bloggers like this: