इस लेख में, हम देखेंगे कि बिटकॉइन प्रोटोकॉल में बहु-हस्ताक्षर कैसे काम करते हैं। कृपया ध्यान दें कि अन्य क्रिप्टोकरेंसी और डिजिटल मुद्राओं में, इन तंत्रों को अलग तरीके से लागू किया जा सकता है - यह लेनदेन मॉडल पर निर्भर करता है। हम बहु-हस्ताक्षर की एक परिभाषा देंगे, हम एक लेनदेन के उदाहरण का उपयोग करके इसकी संरचना का विश्लेषण करेंगे, इसके साथ काम करते समय इसके उपयोग और सावधानियों के विकल्पों पर विचार करें। हम प्रस्तावित सुधारों, P2SH, और आरेख पर भी एक बहु-हस्ताक्षर के साथ एक पते पर भुगतान भेजने के लिए तंत्र का विश्लेषण करेंगे, के विषय का खुलकर खुलासा करने का प्रयास करेंगे। हमारा मानना है कि प्रस्तुत सामग्री उन पाठकों के लिए रुचि की होगी जिनकी गतिविधि या रुचि का क्षेत्र डिजिटल मुद्राओं से संबंधित है।
बहुभाषी पता
Multisignature address (शॉर्ट के लिए मल्टीसीग एड्रेस) एक बिटकॉइन एड्रेस है, जिसमें एक साथ कई जोड़े ECDSA कीज जुड़ी होती हैं। प्रत्येक जोड़ी में निजी और सार्वजनिक कुंजियाँ होती हैं। संयोजन पैटर्न जिसके अनुसार इन कुंजियों का उपयोग किया जा सकता है, भिन्न हो सकते हैं। इसके अलावा, उन स्थितियों को स्थापित करना संभव है जिनके तहत पते से सिक्के खर्च करने के लिए कई हस्ताक्षर प्रदान करना आवश्यक होगा।
बिटकॉइन लेनदेन जो बहु-हस्ताक्षर का उपयोग करता है
अधिक विस्तार से इसे योजनाबद्ध तरीके से प्रदर्शित किया जा सकता है। अभी के लिए, यह अनुमान लगाने के लिए पर्याप्त होगा कि एक बहुसांस्कृतिक पता एक ही बार में कई सार्वजनिक सार्वजनिक कुंजी हैशिंग द्वारा बनाया गया है। हम इस पर थोड़ा और विस्तार से विचार करेंगे। आरेख एक लेनदेन को दर्शाता है जो एक बहुभाषी पते के साथ खर्च होता है।

ग्रे शीर्षक क्षेत्र को इंगित करता है। इसमें दो फ़ील्ड शामिल हैं। दो इनपुट नीले और दो आउटपुट हरे रंग में दर्शाए गए हैं। पहली प्रविष्टि में भरे हुए फ़ील्ड शामिल हैं: पिछले लेनदेन का हैश मान लिखा गया है, जो सिक्का डेटा, निकास संख्या, आदि को खर्च करता है। स्क्रिप्ट फ़ील्ड में सार्वजनिक कुंजी और हस्ताक्षर होते हैं, जो एक सामान्य लेनदेन के लिए विशिष्ट है।
लेन-देन के दूसरे इनपुट पर ध्यान दें। ScriptSig फ़ील्ड में डेटा का एक और संयोजन होता है: दो सार्वजनिक कुंजी और दो हस्ताक्षर सूचीबद्ध होते हैं। उन्हें क्रमशः इन सार्वजनिक कुंजियों द्वारा सत्यापित किया जाना चाहिए। यह लेनदेन इनपुट है जो एक बहु-पता पते के साथ सिक्कों को खर्च करता है। इस तरह सिक्कों के स्वामित्व का प्रमाण दिखेगा।
कुंजी संयोजन विकल्प
मल्टिसिग्नेचर एड्रेस का उपयोग करते समय विभिन्न महत्वपूर्ण संयोजन होते हैं। सबसे अधिक उपयोग किए जाने वाले विकल्प हैं 2-ऑफ -2, 2-ऑफ -3 और 3-ऑफ -3। अधिकतम संभव विकल्प 15 में से 15 है।
सबसे सरल संयोजन 2-का -2 है। तात्पर्य यह है कि एक बहुउद्देशीय पता है जिसमें दो प्रमुख जोड़े बंधे हुए हैं, वास्तव में, दो सार्वजनिक कुंजियों को एक पंक्ति में रखा गया है और कुछ पता प्राप्त हुआ है। इस पते से सिक्के खर्च करने के लिए, आपको दो हस्ताक्षर उपलब्ध कराने होंगे जो दो उपलब्ध सार्वजनिक कुंजियों, सत्यापन और हैशिंग से सत्यापित किए जाएंगे, जो सही क्रम में पते के समान मूल्य प्रदान करें। संक्षेप में, दो पूर्व-स्थापित कुंजियाँ हैं और आपको दो हस्ताक्षरों की आवश्यकता है, जो क्रमशः इन कुंजियों द्वारा जाँच की जाएगी।
बहु-संकेतात्मक पते 2-ऑफ -3 के उपयोग का तात्पर्य है कि सिक्कों के स्वामित्व के प्रमाण के रूप में प्रस्तुत दो हस्ताक्षरों को सत्यापित करने के लिए तीन पूर्वनिर्धारित कुंजियों में से किसी दो का उपयोग किया जाना चाहिए। दूसरे शब्दों में, सिक्कों को खर्च करने के लिए, आपको दो हस्ताक्षर प्रदान करने होंगे जो पूर्वनिर्धारित तीन से दो सार्वजनिक कुंजी द्वारा जांचे जाएंगे।
3-ऑफ -3 के संयोजन, जैसा कि आप पहले से ही समझते हैं, तीन हस्ताक्षर की आवश्यकता है, जो तीन पूर्व-स्थापित कुंजियों द्वारा जांच की जाएगी। आवश्यक हस्ताक्षर और सार्वजनिक कुंजी की संख्या के संदर्भ में अधिकतम 15 -15 योजना होगी।
आइए इन संयोजनों का उपयोग करने के विकल्पों के माध्यम से चलते हैं।
2 का 2
कल्पना कीजिए कि एक पति और पत्नी एक आम बजट बनाए रखना चाहते थे।

वे इस बात से सहमत हैं कि केवल उनमें से प्रत्येक की सहमति से बजट से कुछ निश्चित जरूरतों पर खर्च किया जाएगा। बिटकॉइन के साथ, यह काफी सरल रूप से लागू किया जा सकता है। वे इस योजना के अनुसार एक बहुभाषी पता बनाते हैं, जहाँ पत्नी एक कुंजी को नियंत्रित करती है और पति दूसरी को नियंत्रित करता है। तब परिवार को ऐसे पते पर सभी आय प्राप्त होगी, और पैसा केवल आपसी समझौते से खर्च किया जा सकता है।
परिदृश्य के बारे में आपके सवाल का पूर्वानुमान जब पति और पत्नी सहमत नहीं होते हैं, तो कल्पना करें कि पत्नी वॉशिंग मशीन खरीदने के लिए आवश्यक समझती है, क्योंकि वह अपने हाथों से धोने से थक गई है, और पति का मानना है कि यह इतनी मेहनत नहीं है, और सभी सिक्कों पर खर्च करना अधिक समीचीन होगा। नवीनतम PlayStation मॉडल और इस तरह से अपना ख़ाली समय बिताएं। पत्नी अपने पति पर अपराध करती है और अपनी निजी कुंजी के साथ कागज का एक टुकड़ा खाती है, जिससे इस पते से खर्च करना असंभव हो जाता है।
ऐसी स्थिति से कैसे बचें और सिक्कों को सिक्कों के अंतिम नुकसान से बचाएं?
लेन-देन करना संभव है जो वांछित पते से सभी धनराशि खर्च करेगा, इस तथ्य के बावजूद कि राशि पहले से ज्ञात नहीं है। इनपुट राशि नहीं है, बल्कि लेनदेन का एक लिंक है, जहां से इन सिक्कों को खर्च किया जा सकता है।
हैश प्रकार की एक ऐसी चीज है, जो लेनदेन हस्ताक्षर के साथ कवर करने का एक तरीका है। यह आपको अग्रिम में एक हस्ताक्षर बनाने की अनुमति देता है, और कुछ लेनदेन डेटा, जैसे इनपुट, को बाद में प्रतिस्थापित किया जा सकता है। इस प्रकार, आप एक लेनदेन बना सकते हैं जो एक लेनदेन से सिक्के खर्च करेगा जो अभी तक मौजूद नहीं है, और इसे बाद में लागू करें, अर्थात, जब इसकी आवश्यकता होगी।
इसके अलावा, आप इस लेनदेन पर लॉकटाइम प्रतिबंध लगा सकते हैं। यह आपको लेन-देन की तुरंत पुष्टि करने की अनुमति नहीं देता है, लेकिन इसे कुछ समय के लिए स्थगित करने की अनुमति देता है। इसलिए, पति और पत्नी बहु-संकेतात्मक पते बनाने के तुरंत बाद, किसी भी भुगतान को प्राप्त करने से पहले, दो लॉकटाइम लेनदेन बना सकते हैं जिसमें सभी भविष्य के सिक्कों को पति और पत्नी के सामान्य पते पर पुनर्निर्देशित किया जाएगा, जिसे वे स्वतंत्र रूप से नियंत्रित करते हैं। उसी समय, लेनदेन को स्थगित कर दिया जाएगा और केवल दो महीनों के बाद, उदाहरण के लिए पुष्टि की जा सकती है। इन लेनदेन को कागज पर मुद्रित किया जा सकता है और एक सुरक्षित रूप से व्यक्तिगत रूप से संग्रहीत किया जा सकता है। यदि सिक्के के बहुसंकेतन पते के संतुलन पर एक स्थिति उत्पन्न होती है, और चाबी खो जाती है (एक या दोनों), तो सिक्के जमे हुए हो जाते हैं। लेकिन एक LockTime लेनदेन है। जो कोई भी इस तरह के लेनदेन को प्रकाशित करता है, वह इन फंडों को वैध बाहरी पते पर वापस ले सकेगा। सिक्के बच जाएंगे। यह एक सरलीकृत उदाहरण था, लेकिन अधिक जटिल तंत्र संभव है।
2-के-3
मान लीजिए कि ऐसे लोगों का एक समूह है जिनके पास एक आम बजट है।

वे एक बहुभाषी पता बनाते हैं जिसमें तीन कुंजी होती हैं, लेकिन लेनदेन पर हस्ताक्षर करने के लिए दो हस्ताक्षर पर्याप्त हैं। अधिकांश समूह बनाने वाले प्रतिभागियों की सहमति से, इन निधियों को खर्च किया जा सकता है। दूसरे शब्दों में, तीन प्रतिभागियों में से कोई भी सिक्के खर्च कर सकता है। ऐसा करने के लिए, यह लेनदेन को नेटवर्क में फैलाने के लिए पर्याप्त है।
वॉलेट सेवा उदाहरण
2-ऑफ -3 संयोजन का उपयोग करने का एक और दिलचस्प तरीका है और इसका उपयोग तथाकथित वॉलेट सेवाओं में किया जाता है। इस संदर्भ में बटुआ सेवा सामान्य बिटकॉइन वॉलेट के साथ भ्रमित नहीं होनी चाहिए, जिसे उपयोगकर्ता स्वतंत्र रूप से नियंत्रित करता है। सेवा सिक्कों के लिए पूर्ण भंडारण प्रदान नहीं करती है और उनके पास खुद नहीं है, लेकिन केवल सुविधाजनक काम के लिए सेवाएं प्रदान करती है।
यदि आप इस स्थिति की योजनाबद्ध रूप से कल्पना करते हैं, तो एक कुंजी सीधे सेवा से संबंधित है, दूसरी केवल उपयोगकर्ता द्वारा उत्पन्न की जाती है (और केवल वह जानता है), तीसरी कुंजी उपयोगकर्ता द्वारा बनाई गई और संग्रहीत की जाती है, भी, लेकिन अलग से। उसके बाद, इन व्यक्तिगत कुंजियों के अनुरूप सार्वजनिक कुंजियों की गणना की जाती है और एक बहुभाषी पता संकलित किया जाता है। सिक्के वहां पहुंचते हैं और अब खर्च की शर्तें सीमित हैं।

कल्पना करें कि हम एक निश्चित वेब सेवा के साथ काम कर रहे हैं और आप एक ब्राउज़र के माध्यम से इसके संसाधन दर्ज कर सकते हैं। ब्राउज़र बिटकॉइन वॉलेट कोड डाउनलोड करता है, जो इस पते पर खर्च किए गए सिक्कों की एक सूची प्राप्त करता है, उनके संतुलन की गणना करता है और खर्च करने के लिए तैयार है। यदि उपयोगकर्ता सिक्कों को खर्च करना चाहता है, तो वह सीधे ब्राउज़र में लेनदेन करता है और इसे अपने (आवश्यक में से एक) हस्ताक्षर के साथ हस्ताक्षर करता है।
ध्यान दें कि उपयोगकर्ता अपने पासवर्ड से निजी कुंजी प्राप्त कर सकता है, या कुंजी को यादृच्छिक रूप से उत्पन्न किया जा सकता है, उपयोगकर्ता के पासवर्ड के साथ एन्क्रिप्ट किया गया और सेवा में संग्रहीत किया जा सकता है। तब उपयोगकर्ता सेवा के लिए एक अनुरोध भेजता है, एक एन्क्रिप्टेड कुंजी के साथ एक कंटेनर प्राप्त करता है, इसे अपने पासवर्ड के साथ डिक्रिप्ट करता है, और पहले से ही उसकी निजी कुंजी तक पहुंच है।
जब कोई उपयोगकर्ता लेन-देन पर हस्ताक्षर करता है, तो उसे सेवा के किनारे भेजा जाता है ताकि वह दूसरा आवश्यक हस्ताक्षर लगाए और लेनदेन भेज सके। सेवा दूसरे प्रमाणीकरण चैनल के माध्यम से लेन-देन पर हस्ताक्षर करने की आवश्यकता के तथ्य को स्पष्ट करती है, जो कि पहले से निर्धारित एक अलग चैनल के माध्यम से होती है, जो मोबाइल फोन, एसएमएस, ई-मेल संदेश और अन्य वैकल्पिक संचार विधियों (यदि व्यक्तिगत सुरक्षा की आवश्यकता होती है, तो एक कॉल हो सकती है) । जब सेवा ने यह सुनिश्चित कर लिया है कि पंजीकृत उपयोगकर्ता वास्तव में लेन-देन हस्ताक्षर अनुरोध शुरू करता है, तो वह अपनी कुंजी का उपयोग करके लापता हस्ताक्षर डालता है। उसके बाद, लेनदेन वैध हो जाता है और पुष्टि के लिए नेटवर्क पर वितरित किया जा सकता है।
सेवा से वंचित होने पर तीसरी कुंजी का उपयोग किया जाता है। सॉफ्टवेयर इस कुंजी को उत्पन्न करता है और इसे आपके लिए सुविधाजनक तरीके से सहेजने की पेशकश करता है। उपयोगकर्ता आमतौर पर इसे सुरक्षित स्थान पर संग्रहीत करता है। यदि सेवा को सेवा से वंचित किया जाता है, तो उपयोगकर्ता लेनदेन को अपने स्वयं के कुंजी (दूसरे और तीसरे) के साथ हस्ताक्षर कर सकता है। यदि दूसरी कुंजी को सेवा पक्ष पर संग्रहीत किया गया था, तो इस कुंजी के साथ एक संरक्षित कंटेनर को उपयोगकर्ता को वैकल्पिक डेटा चैनल के माध्यम से अग्रिम में भेजा जाएगा, उदाहरण के लिए, ई-मेल द्वारा। उपयोगकर्ता अपने पासवर्ड का उपयोग करके कुंजी के साथ कंटेनर को डिक्रिप्ट करता है।
उपयोगकर्ता दो आवश्यक निजी कुंजी प्राप्त करता है और विशेष सॉफ्टवेयर में प्रवेश करता है जो सेवा पहले से प्रदान की जाती है। इसके अलावा, यह सॉफ़्टवेयर उपयोगकर्ता के कंप्यूटर पर, सेवा की भागीदारी के बिना, स्वायत्त रूप से चलता है। यह ध्यान दिया जाना चाहिए कि इस सॉफ़्टवेयर का उपयोग केवल चरम मामलों में किया जाना चाहिए, जब किसी सेवा को सेवा से वंचित किया जाता है (यानी यह हैक हो गया था, क्षतिग्रस्त हो गया था या मौजूद नहीं था)। फिर उपयोगकर्ता अपनी कुंजियों के साथ लेनदेन पर हस्ताक्षर करता है और जहां आवश्यक हो, सिक्कों को स्थानांतरित करता है।
2-ऑफ -3 वॉलेट सर्विसेज के फायदे
हम अधिक विवरण में ऐसी वॉलेट सेवाओं के लाभों पर ध्यान केन्द्रित करेंगे। यह स्टोर करने का एक सुरक्षित तरीका है, क्योंकि सेवा के पास सभी आवश्यक सेट नहीं हैं - यह केवल एक भाग का मालिक है, जो कि धनराशि लेने के लिए पर्याप्त नहीं है। इसके अलावा, न तो सेवा और न ही हैकर जो इसे क्रैक कर सकते हैं, उनके पास फंड तक पहुंच है।
इस दृष्टिकोण की सुविधा यह है कि उपयोगकर्ता को इस सेवा का सुरक्षित उपयोग करने की आवश्यकता नहीं है। इसमें एक नियमित उपकरण हो सकता है जो वायरस से संक्रमित हो सकता है या स्कैमर द्वारा नियंत्रित किया जा सकता है, और डेटा को समझौता या प्रतिस्थापित किया जा सकता है। लेकिन किसी हमलावर के लिए केवल इस उपकरण का मालिक होना पर्याप्त नहीं है, क्योंकि इसमें से केवल दो हस्ताक्षर ही प्राप्त किए जा सकते हैं।
एक और लाभ यह है कि यदि सेवा सेवा से इनकार करती है, तो उपयोगकर्ता अपने सिक्कों तक पहुंच नहीं खोता है। ये बहुभाषी पतों का उपयोग करने के लिए कुछ संभावित योजनाएँ थीं, जो डेटिंग के लिए पर्याप्त हैं।
मल्टी-सिग्नेचर सावधानियां
और अब यह बहु-हस्ताक्षर के बारे में सावधानियों के बारे में बात करने लायक है। 2-ऑफ -2 के मामले में, आपको लॉकटाइम ट्रांजेक्शन बनाने की आवश्यकता है जो ब्लॉक किए गए फंड को एक विशिष्ट पते पर स्थानांतरित कर सकते हैं। यह महत्वपूर्ण है जब कुंजी हानि होती है।
अगर आप मल्टीसिग्नेचर एड्रेस 2-ऑफ -3 का इस्तेमाल कर रहे हैं, तो यह बहुत जरूरी है कि आप चाबी को सुरक्षित जगह पर रखें। तीन चाबियों में से एक के नुकसान के मामले में, आपको तुरंत धनराशि स्थानांतरित करनी चाहिए और उस क्षण तक इंतजार नहीं करना चाहिए जब आवश्यक 3 कुंजियों में से 2 खो जाती हैं।
बिटकॉइन स्क्रिप्ट कैसे काम करती है (उदाहरण के लिए)
मल्टी-सिग्नेचर कैसे काम करता है, इस बारे में अधिक विस्तार से समझने के लिए, हमें इस बारे में थोड़ी बात करने की आवश्यकता है कि बिटकॉइन स्क्रिप्ट कैसे काम करता है: सिक्कों को खर्च करने के नियम कैसे हैं, उन्हें कैसे संतुष्ट किया जाए, नियमों का वर्णन करने के लिए कौन से ऑपरेशन हैं, बिटकॉइन स्क्रिप्ट क्या है और इसे कैसे निष्पादित किया जाता है।
सिक्कों को खर्च करने के एक साधारण मामले के एक उदाहरण पर विचार करें, जहां एक नियमित पता है, जिसमें एक सार्वजनिक कुंजी का एक हैश जुड़ा हुआ है, एक संबंधित स्क्रिप्ट जो खर्च करने की शर्तों को निर्धारित करती है, और एक स्क्रिप्ट जो इन स्थितियों को संतुष्ट करती है।

बाईं ओर आरेख में हम डेटा स्टैक को देखते हैं, और दाईं ओर स्क्रिप्ट। स्क्रिप्ट लाइन के पहले दो भाग हस्ताक्षर और सार्वजनिक कुंजी हैं, तथाकथित अनलॉकिंग स्क्रिप्ट, यानी वह स्क्रिप्ट जो लेन-देन के इनपुट में संकेतित होती है जो सिक्के खर्च करती है। इसके बाद डेटा सेट होता है जिसे लेनदेन आउटपुट में इंगित किया जाता है - इसे लॉकिंग स्क्रिप्ट कहा जाता है। दूसरे शब्दों में, दो लिपियों का संयोजन यहां प्रस्तुत किया गया है: एक स्क्रिप्ट जो सिक्कों को अनलॉक करती है, और एक स्क्रिप्ट जो सिक्कों को लॉक करती है। उस स्थिति में जब लेनदेन पहले से ही नेटवर्क नोड द्वारा मान्य किया जाएगा, इन दोनों लिपियों को सिक्के खर्च करने की शर्तों की जांच करने के लिए संयुक्त किया जाता है। इस प्रकार, अनलॉकिंग स्क्रिप्ट पहले आती है, उसके बाद लॉकिंग स्क्रिप्ट।
इसके बाद ऑपरेंड और डेटा के पूर्ण सेट का क्रमिक निष्पादन होता है। निष्पादन बिंदु प्रत्येक ऑपरेंड और डेटा के प्रत्येक टुकड़े के लिए क्रमिक रूप से चलता है। यदि निष्पादन बिंदु डेटा का एक टुकड़ा मारता है, तो इसे स्टैक पर धकेल दिया जाता है। जैसा कि हम आरेख में देखते हैं, शीर्ष पर स्क्रिप्ट निष्पादन कर्सर हस्ताक्षर डेटा को इंगित करता है, जिसे तब स्टैक पर धकेल दिया जाता है।
इसके अलावा, निष्पादन कर्सर सार्वजनिक कुंजी को इंगित करता है - इसे स्टैक पर भी धकेल दिया जाता है।
तीसरा चरण डुप्लिकेट ऑपरेशन करना है, जिसका अर्थ है स्टैक के शीर्ष की प्रतिलिपि बनाना और इस डेटा को फिर से स्टैक पर रखना।
उसके बाद हैश फ़ंक्शन हैश -160 का उपयोग करके हैशिंग का प्रदर्शन किया जाता है। इसका मतलब यह है कि स्टैक के शीर्ष को पहले SHA-2 एल्गोरिथ्म द्वारा 256 बिट्स की लंबाई में और फिर RIPEMD-160 फ़ंक्शन द्वारा 160 बिट्स की लंबाई में हैशेड किया गया है। यह ऑपरेशन ठीक वैसा ही है, जब पब्लिक की हैशिंग और एड्रेस मिलता है। वास्तव में, यह बात है।

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

स्टैक के शीर्ष दो तत्वों की तुलना की जाती है। यदि वे वास्तव में एक ही बाइट हैं, तो यह डेटा स्टैक से हटा दिया जाता है और यह माना जाता है कि चेक सफल था। उसके बाद, हस्ताक्षर और सार्वजनिक कुंजी स्टैक पर रहती है। तदनुसार, चेक सिग्नेचर ऑपरेशन इन दो ऑपरेंड को लेता है और सार्वजनिक कुंजी के साथ हस्ताक्षर को सत्यापित करता है। यदि लेन-देन के संबंध में हस्ताक्षर सही है, जो वर्तमान में सत्यापन से गुजर रहा है, क्योंकि हस्ताक्षर लेनदेन का हिस्सा है, तदनुसार, आपको इस लेनदेन के कुछ क्षेत्रों से हैश मान लेना होगा। यह हैश प्रकार की संरचना के एक अलग बाइट द्वारा सेट किया गया है, अर्थात्, एक हैश मान लिया जाता है और हस्ताक्षर सत्यापन इनपुट के साथ-साथ हस्ताक्षर और सार्वजनिक कुंजी को खिलाया जाता है। यदि चेक सही ढंग से होता है, तो चेक का परिणाम सही है, यह मान स्टैक पर धकेल दिया जाता है। यह स्क्रिप्ट के निष्पादन को पूरा करता है। डेटा को कॉलिंग फ़ंक्शन में पास किया जाता है और वहां चेक किया जाता है। यदि स्टैक सत्य है, तो इस लेन-देन इनपुट का सत्यापन सही था। यदि सभी लेनदेन इनपुट को सही तरीके से सत्यापित किया गया है, तो पूरे लेनदेन को सही माना जाता है।
हमने सीखा कि बिटकॉइन स्क्रिप्ट एक लेनदेन के सरल इनपुट और आउटपुट को सत्यापित करने के लिए कैसे काम करती है। अब हम बात करेंगे कि बिटकॉइन स्क्रिप्ट का उपयोग करते समय बहुउद्देशीयता कैसे व्यवस्थित होती है और यह कैसे काम करती है।
P2SH
BIP16 एक बार प्रस्तावित किया गया था, जो बिटकॉइन प्रोटोकॉल में एक नई अवधारणा को परिभाषित करता है - स्क्रिप्ट हैश (P2SH) को तथाकथित वेतन। यह एक खुली स्क्रिप्ट में नहीं, सिक्कों को खर्च करने के नियमों को निर्धारित करने का एक अवसर है, जहां आप एक पंक्ति में ऑपरेंड और कुछ डेटा लिखते हैं, जिसे तब जिस तरह से हमने जांच की है, उसके द्वारा निष्पादित किया जाता है, लेकिन स्क्रिप्ट से एक हैश मान के रूप में, आपको इन ऑपरेंड से चेकसम की आवश्यकता होती है। इससे सिक्कों को खर्च करने के लिए बड़े और जटिल परिस्थितियों को निर्धारित करने के लिए लेनदेन से बाहर निकलने की अनुमति दी गई, लेकिन निकास खुद ही छोटा रहा।
इस तरह की शर्तों के तहत इन सिक्कों को खर्च करने के लिए, लेन-देन के इनपुट पर आपको इस स्क्रिप्ट को संतुष्ट करने वाले डेटा को निर्दिष्ट करने की आवश्यकता होती है, और पूरी स्क्रिप्ट को यह साबित करने के लिए कि आपको पता है कि सिक्के भेजते समय किन शर्तों को निर्धारित किया गया था, ताकि स्रोत स्क्रिप्ट का हैश मान पते से मेल खाता हो सिक्के भेजे गए। दूसरे शब्दों में, साबित करें कि आप शर्तों को जानते हैं और इन स्थितियों को संतुष्ट करते हैं।
बिटकॉइन में सुधार के इस प्रस्ताव को 3 जनवरी 2012 को स्वीकार किया गया था। वास्तव में, बिटकॉइन का जन्मदिन। अब बहु सक्रियता पते को लागू करने के लिए सक्रिय रूप से उपयोग किया जाता है।
P2SH कैसे काम करता है?
आइए एक उदाहरण देखें कि यह कैसे काम करता है। लेन-देन का निर्माण करने के लिए, हमें अवधारणाओं की एक समझ होनी चाहिए जैसे कि रेडीम स्क्रिप्ट, लॉकिंग स्क्रिप्ट और अनलॉकिंग स्क्रिप्ट।
रिडीम स्क्रिप्ट में सार्वजनिक कुंजियाँ होती हैं जिनसे बहुभाषी पता बाध्य होगा। इस मामले में, हम "2-ऑफ -5" कुंजी के संयोजन पर विचार कर रहे हैं।
पहले मान 2 आता है, अर्थात्, हम संकेत देते हैं कि 2 हस्ताक्षर आवश्यक होंगे, जो कि संबंधित सार्वजनिक कुंजियों द्वारा सत्यापित किया जाएगा। इसके बाद सार्वजनिक कुंजी होती है, हमारे मामले में 5 होते हैं। इसके बाद, हम 5 मानों को इंगित करते हैं, क्योंकि हमने 5 सार्वजनिक कुंजियाँ निर्दिष्ट की हैं, और जब डेटा को रिवर्स ऑर्डर में पढ़ा जाता है, तो यह मान आवश्यक है कि आपको कितनी कुंजियों को पढ़ने की आवश्यकता है। इसके बाद, ऑपरेशन चेक मल्टीसिग्नेचर इंगित किया जाता है।लॉकिंग स्क्रिप्ट - एक स्क्रिप्ट जो एक लेनदेन के आउटपुट में इंगित की जाती है जो एक बहुभाषी पते के लिए भुगतान करती है। यहां एक हैश मान प्राप्त करने का संचालन किया जाएगा, जिसके साथ हम पहले से ही विस्तार से परिचित हो गए हैं। इसके बाद Redeem Script हैश वैल्यू है, जिसमें 20 बाइट्स लगते हैं। उसके बाद, यह सत्यापित करने के लिए एक ऑपरेशन किया जाता है कि डेटा वास्तविक हैश मान से मेल खाता है।अनलॉकिंग स्क्रिप्ट इस पते पर भुगतान किए गए लेनदेन के आउटपुट पर स्क्रिप्ट के साथ लेनदेन के इनपुट पर लिपियों का एक संयोजन है। सिक्कों को खर्च करने के लिए दो हस्ताक्षर आवश्यक हैं, और पूर्ण रिडीम स्क्रिप्ट, जिसे बाद में हैश किया जाएगा और उस पते के अनुपालन के लिए जाँच की जाएगी, जिस पर सिक्के भेजे गए थे। उसके बाद, स्क्रिप्ट पूरी तरह से निष्पादित की जाएगी, जिसमें बहु-हस्ताक्षर की जांच शामिल है।यह महत्वपूर्ण है कि सूचीबद्ध लिपियों में से प्रत्येक के लिए अधिकतम आकार पर प्रतिबंध हैं और यह 520 बाइट्स हैं। इस संख्या की गणना इस आधार पर की गई थी कि अनलॉकिंग स्क्रिप्ट अधिकतम 15 हस्ताक्षर और 15 संबंधित सार्वजनिक कुंजी, साथ ही साथ इन मानों को सत्यापित करने के लिए कई ऑपरेशनों को फिट कर सकती है। यह है कि एक निश्चित संख्या कैसे प्राप्त की गई थी, जिसने गोल करते समय 520 बाइट्स दिए। यह कहा जाना चाहिए कि यह संख्या इस उम्मीद के साथ प्राप्त की गई थी कि "15 का 15" प्रकार का बहु-विषयक पता व्यावहारिक उपयोग के लिए एक उचित पर्याप्त सीमा है। बड़ी संख्या में हस्ताक्षर का उपयोग करते समय स्क्रिप्ट को रिडीम करना बहुत बड़ी मात्रा में हो जाता है। जो उपयोगकर्ता बहु-संकेतात्मक पते या अन्य P2SH पतों का उपयोग करता है, जब उनसे सिक्के खर्च करते हैं, बहुत बड़े लेनदेन होते हैं। इसका मतलब हैअपने लेनदेन की पुष्टि करने के लिए, उसे बड़े कमीशन का भुगतान करना होगा।P2SH के लाभ
हम P2SH के फायदे पर अलग से विचार करेंगे। पहला यह है कि इस तरह के पते बेस 58 का उपयोग करके परिचित रूप में एन्कोड किए जा सकते हैं, जिसमें उनकी लंबाई 34 वर्ण है। BIP13 के अनुसार, जो Base58Check द्वारा एन्कोड किए गए बिटकॉइन पतों के लिए संस्करण बाइट सेट करने के नियमों को परिभाषित करता है, पता एक ट्रिपल के साथ शुरू होगा, अर्थात, एक विशिष्ट संस्करण बाइट वहां डाला जाता है।एक उदाहरण के रूप में, आप P2SH पता देख सकते हैं।3P14159f73E4gFr7JterCCQh9QjiTjiZrGयह एक बहुभाषी पता नहीं हो सकता है। रिडीम स्क्रिप्ट न केवल एक बहुभाषी पते का वर्णन कर सकती है, बल्कि सिक्कों को खर्च करने के लिए अन्य जटिल नियम भी बता सकती है।हम जोड़ते हैं कि यह बिटकॉइन में बहु-हस्ताक्षर को व्यवस्थित करने का एकमात्र तरीका नहीं है। आपको P2SH का उपयोग करने की आवश्यकता नहीं है, लेकिन आउटपुट में जो मल्टीसिग्नेचर एड्रेस के लिए भुगतान करेगा, स्क्रिप्ट से हैश वैल्यू नहीं, बल्कि स्क्रिप्ट ही है, अर्थात् आउटपुट में सभी सार्वजनिक कुंजियों को सीधे सूचीबद्ध करें और ऑपरेशन को मल्टीग्नेचर पर सेट करें। हालाँकि, जब आप इस पते पर सिक्के भेजते हैं, तो आप तुरंत सार्वजनिक कुंजियों का खुलासा करते हैं, क्योंकि वे सार्वजनिक डोमेन में होंगे और उसी क्षण उन पर सिक्के जमा हो जाएंगे।और एक और खामी यह है कि मल्टीसिग्नेचर पते पर सिक्कों के भेजने वाले के पास एक बड़ा लेनदेन होता है, जिसके लिए आपको एक बड़ा कमीशन देना होगा। यह संभावना नहीं है कि प्रेषक इस तथ्य के लिए ओवरपे करना चाहता है कि प्राप्तकर्ता मल्टीसिग्नेचर का उपयोग करना चाहता है। P2SH आपको प्राप्तकर्ता को कमीशन की लागत को स्थानांतरित करने की अनुमति देता है। यदि प्राप्तकर्ता मल्टीसिग्नेचर पते पर सिक्कों को स्वीकार करना चाहता है, तो वह खुद बड़े लेनदेन के लिए भुगतान करेगा, जो एक न्यायपूर्ण दृष्टिकोण है।हम कहते हैं कि P2SH आपको इस तरह के मल्टीसिग्नेचर (2-2, 2-ऑफ -3 और अन्य) के विभिन्न संयोजनों को लागू करने की अनुमति देता है।योजनाबद्ध रूप से एक बहुभाषी पते पर भेजने पर विचार करें।
मान लीजिए कि ऐलिस बॉब को भुगतान करना चाहता है, जो केवल बहुभाषी पते का उपयोग करता है। ऐसा करने के लिए, बॉब अपने कंप्यूटर पर स्थानीय रूप से (वैसे, बॉब के बजाय किसी प्रकार का संगठन हो सकता है) कई निजी कुंजी उत्पन्न करता है, उनसे संबंधित सार्वजनिक कुंजी प्राप्त करता है, जिसे एक निश्चित तरीके से संक्षिप्त किया जाता है। सबसे अधिक बार, सार्वजनिक कुंजियों को पहले Base58Check के साथ एन्कोड किया जाता है, और फिर उन्हें वर्णानुक्रम में क्रमबद्ध किया जाता है, और फिर संक्षिप्त किया जाता है।व्यक्तिगत कुंजियों से सार्वजनिक कुंजियों का पुनर्गणना आवश्यक होने पर यह दृष्टिकोण बंद हो जाता है। उन्हें उसी क्रम में समेटने की आवश्यकता है, क्योंकि अगला चरण एक रेडीम स्क्रिप्ट बनाने और उसे हैश करने का है। यदि ठीक उसी कुंजी को रिडीम स्क्रिप्ट में मिलता है, लेकिन एक अलग क्रम में, हमें एक अलग हैश मान और एक अलग पता मिलेगा। यह कुछ गलतफहमियों को पकड़ लेगा। इसलिए, सहमति से पहले, सार्वजनिक कुंजी को कुछ नियम के अनुसार क्रमबद्ध किया जाना चाहिए। और सबसे अधिक बार वे Base58 संख्या प्रणाली में वर्णानुक्रम छँटाई का उपयोग करते हैं।इसलिए बॉब ने रिडीम स्क्रिप्ट से हैश मान की गणना की। वह इसे 20 बाइट्स के रूप में प्रस्तुत कर सकते हैं और इसे ऐलिस को भेज सकते हैं, कह सकते हैं कि यह P2SH का उपयोग करते हुए एक बहुउद्देशीय पता है। हालांकि, बॉब इसे एक बाइट के साथ एक नियमित पते की तरह एनकोड कर सकता है, और बस इसे ऐलिस को भेज सकता है। ऐलिस संस्करण बाइट से समझ जाएगा कि यह एक बहुउद्देशीय पता है, एक लेनदेन लिखें, और उसके अनुसार उसके उत्पादन को पॉपुलेट करें ताकि बॉब अपने सिक्के प्राप्त करे। यह तब नेटवर्क को लेनदेन का प्रचार करता है। वे पुष्टि की प्रतीक्षा कर रहे हैं और बॉब ऐलिस से भुगतान स्वीकार करते हैं। उदाहरण के लिए, प्रतिस्थापन बॉब, एक सेवा प्रदान करता है या सामान स्थानांतरित करता है।एक समय आता है जब बॉब इन सिक्कों को खर्च करना चाहता है। यह समझा जाना चाहिए कि सिक्कों के अपने बहुभाषी पते पर पूर्ण रेडीम स्क्रिप्ट का सार्वजनिक रूप से खुलासा नहीं किया गया था। और यहां तक कि ऐलिस ने यह नहीं देखा कि बॉब किन सार्वजनिक कुंजियों का उपयोग करते हैं, उनमें से कितने थे, आदि। वह यह नहीं जानती है कि यह P2SH पता किन नियमों से बना है, क्या यह एक बहुभाषी पता है या नहीं, आदि, तदनुसार, इलेक्ट्रॉनिक पर हमला। एक डिजिटल हस्ताक्षर (एक अण्डाकार वक्र पर) अभी भी संभव नहीं है।मान लीजिए कि बॉब ईव को भुगतान भेजना चाहता है।
वह एक नया पता तैयार करती है और बॉब को देती है। वह इनपुट में एक लेन-देन रिक्त बनाता है, जिसमें वह उस लेनदेन को इंगित करता है जिसमें उसने ऐलिस से सिक्के प्राप्त किए थे, और आउटपुट ईवा का पता है। अब उसे सिक्कों के स्वामित्व का प्रमाण देना होगा जो वह खर्च करता है। ऐसा करने के लिए, वह अपनी दो निजी कुंजियाँ लेता है (हमने ऊपर उल्लेख किया है कि उसका बहुउद्देशीय पता "2-ऑफ -5" विकल्प का अर्थ है), जिसमें से वह इस लेनदेन के लिए दो हस्ताक्षर की गणना करता है। इसके बाद, वह पूर्ण रिडीम स्क्रिप्ट लेता है और इसे लेनदेन इनपुट में जोड़ता है।कृपया ध्यान दें कि इस रेडिम स्क्रिप्ट को बॉब के कंप्यूटर पर पूरी तरह से संग्रहीत किया जाना चाहिए या उसे उस आदेश को याद रखना होगा जिसमें उसने इस कुंजी को लिखने के लिए सार्वजनिक कुंजियों का उपयोग किया था। यदि उसने कुछ छंटनी के नियम लागू किए हैं, तो उसे याद रखना चाहिए। उसे यह भी याद रखना चाहिए कि एक बहुभाषी पता कुछ निजी कुंजी के लिए बाध्य है। इस ज्ञान के बिना, बॉब को यह पता नहीं होता था कि उसकी कौन सी निजी चाबियां हैं, जिसे संचालित करने के लिए और वांछित पता प्राप्त करने के लिए उन्हें किस क्रम में हैशेड किया जाना चाहिए।तो, उसके दो हस्ताक्षर हैं और एक पूर्ण रिडीम स्क्रिप्ट है। लेनदेन को सही माना जाता है और बॉब इसे नेटवर्क में वितरित करता है, और फिर पुष्टि की प्रतीक्षा करता है। यह एक बहुभाषी पते के साथ खर्च करने के बारे में मुख्य बात है।सवाल
अब हम आपके सवालों पर आते हैं।- क्या तीन अलग-अलग कंप्यूटरों पर एक ही वॉलेट को एक साथ चलाना और सिंक्रोनाइज़ेशन शुरू करना संभव है?सबसे अधिक संभावना है, हम किसी प्रकार के नेटवर्क नोड के बारे में बात कर रहे हैं: या तो एक एसपीवी नोड, या एक पूर्ण नोड। कई अलग-अलग कंप्यूटर और एक ही वॉलेट का उपयोग किया गया था। और एक वॉलेट का मतलब निजी कुंजी है। कई पूर्ण नोड्स हैं जो वॉलेट कार्यक्षमता को लागू करते हैं। इन नोड्स पर, हम एक ही निजी कुंजी डालते हैं और सिंक्रनाइज़ेशन शुरू करते हैं। सबसे अधिक संभावना है, नेटवर्क के साथ पूर्ण तुल्यकालन के साथ, हम प्रत्येक बटुए पर उसी संतुलन को देखेंगे जो अपने स्वयं के नोड का उपयोग करता है। यदि आप एक नोड पर परिवर्तन देखते हैं, तो नेटवर्क के साथ सिंक्रनाइज़ेशन के बाद आप अन्य सभी नोड्स पर बिल्कुल समान परिवर्तन देखेंगे। लेनदेन को गुप्त नहीं रखा जाता है, यह सभी नोड्स को वितरित किया जाता है जो इसे सत्यापित करते हैं और संबंधित परिवर्तनों को प्रदर्शित करते हैं, अगर यह उनके पते की चिंता करता है। वास्तव में, हाँ, आप कई नोड्स पर एक ही कुंजी का उपयोग कर सकते हैं,लेकिन सभी लेनदेन भी स्वचालित रूप से सिंक्रनाइज़ किए जाएंगे। बिटकॉइन निश्चित रूप से इससे दोगुना नहीं होगा और इसके अलावा, ट्रिपल नहीं होगा।— P2SH Segregated Witness?Segregated Witness — , , , , . , . , , , . , , . . Segregated Witness , . , , P2SH , Witness P2SH.
- क्या प्रकाश नेटवर्क में शीर्ष तीन से पते शुरू होते हैं?BIP13 उन नियमों को परिभाषित करता है जिनके द्वारा टेस्ट नेट, अन्य मुद्राओं आदि में बिटकॉइन पतों के लिए एक संस्करण बाइट का चयन किया जाता है। हां, लाइटिंग नेटवर्क मल्टीसिग्नेचर पतों का उपयोग करता है, जो सेटिंग शर्तों की P2SH विधि का भी उपयोग करता है।- किसी विशिष्ट व्यक्ति को टाई करने के लिए एक बटुआ को निजीकृत करना असंभव क्यों है?, , , . , . - . , — . , , , . .
, , . , .
— , 70-80%, ?, , , , , : , , , . . , , . , , , . Ripple, Stellar, NXT, Cardano. , , ICO, . . - , ,
क्रिप्टोकरेंसी । इसके अलावा, एक विशेष मुद्रा में विश्वास का सवाल प्रकृति में व्यक्तिगत है। आप इस ट्रस्ट की राशि तय करते हैं। उन उद्देश्यों को ध्यान में रखना आवश्यक है जिनके लिए मुद्रा का उपयोग किया जाता है, साथ ही साथ इसके जोखिम और सीमाएं भी।