बिटकॉइन के बारे में 5 विचार पिछले साल यहां लिखे गए थे, जो कि बिटकॉइन के बारे में पहला लेख प्रतीत होता है। आज हम बिटकॉइन प्रोटोकॉल के बारे में बात करेंगे।
यह लेख माइकल नीलसन द्वारा अनुवादित बिटकॉइन प्रोटोकॉल के बारे में लेख है, जो अनुवादक को लगता है कि बिटकॉइन के बारे में सबसे स्पष्ट लेख है। माइकल नीलसन एक अग्रणी वैज्ञानिक, लेखक और प्रोग्रामर हैं जो क्वांटम कंप्यूटिंग का अध्ययन करते हैं। विवरण के लिए अपने स्वयं के परिचय को देखें। अनुवाद के लिए यह लेख इसलिए है क्योंकि अनुवादक ने बिटकॉइन के बारे में लेखों और चर्चाओं के बारे में बहुत, बहुत समर्थन के लिए कई विरोधों को देखा है। लेकिन अधिकांश अवधारणाओं, कीमतों और व्यक्तिपरक विचारों पर रुकते हैं, मैं बिटकॉइन के मौजूदा मूल्य और सतह के प्रदर्शन को फेंकना चाहता हूं। इस लेख के माध्यम से, मैं सभी को बिटकॉइन के प्रोटोकॉल के कामकाज के बारे में विस्तार से बताता हूं। मुझे विश्वास है कि एक चीज के पीछे काम करने वाले सिद्धांतों को समझना एक अच्छी श्रृंखला को समझने के लिए बहुत महत्वपूर्ण है। मैं ज्यादातर लोगों की तरह महसूस करता हूं, जब मैंने पहली बार देखा कि यह स्वयं पागलपन है, तो यह एक धोखाधड़ी है।
निकोलेव ने कहा कि यह लेख को संकुचित करने में मदद करेगा और इसे कम प्रचारक ध्वनि के रूप में जल्द से जल्द संभव बना देगा। बस लोगों को यह बताने के लिए कि यह क्या है, जहां यह इलेक्ट्रॉनिक पैसे के स्थान में फिट बैठता है, उन्हें यह विश्वास दिलाने की कोशिश नहीं कर रहा है कि यह अच्छा है।
हजारों लेख बिटकॉइन, एक ऑनलाइन, पीयर-टू-पीयर मुद्रा को समझाने का प्रयास करते हैं। अधिकांश लेख इसके अंतर्निहित प्रोटोकॉल के बारे में एक लेख देते हैं, कई विवरणों को छोड़ देते हैं। यहां तक कि बहुत गहन लेख भी महत्वपूर्ण स्थानों पर अटक जाते हैं। इस लेख का उद्देश्य बिटकॉइन प्रोटोकॉल के पीछे के बिंदुओं को यथासंभव स्पष्ट और समझने में आसान तरीके से समझाना है। हम पहले सिद्धांत से शुरू करते हैं, बिटकॉइन प्रोटोकॉल को समझने के लिए एक व्यापक सिद्धांत का निर्माण करते हैं, फिर लेनदेन के विवरण में गहराई से जाते हैं, बिटकॉइन में डेटा की जांच करते हैं।
इस प्रोटोकॉल को गहराई से समझना मुश्किल है, क्योंकि यह बहुत आसान है कि आप बिटकॉइन को एक चीज के रूप में लें और सोचें कि इसका उपयोग कैसे किया जाए, यह सोचें कि क्या यह एक बुलबुला है या नहीं, यह सोचें कि क्या बिटकॉइन का अर्थ है करों का अंत, आदि। ये सोचने के लिए दिलचस्प हैं, लेकिन ये विचार आपकी समझ को गंभीर रूप से सीमित करते हैं। और बिटकॉइन प्रोटोकॉल को समझने के लिए खुद को अन्य दृष्टिकोणों को खोलना होगा जो अन्य चैनलों तक नहीं पहुंचते हैं। उदाहरण के लिए, यह प्रोटोकॉल बिटकॉइन के अंतर्निहित स्क्रिप्ट भाषा का आधार है, जो आपको बिटकॉइन के साथ नए वित्तीय उपकरण बनाने की अनुमति देता है, जैसे कि स्मार्ट अनुबंध। नए वित्तीय उपकरण बदले में नए बाजार और नए लोगों और लोगों के बीच सहयोग पैदा कर सकते हैं, जो कि वास्तव में मज़ेदार है!
मैं बाद के लेखों में बिटकॉइन स्क्रिप्ट और स्मार्ट कॉन्ट्रैक्ट के बारे में बताऊंगा. इस लेख में मैं बिटकॉइन प्रोटोकॉल के विशिष्ट विवरणों पर ध्यान केंद्रित करूंगा. इस लेख को समझने के लिए आपको संभवतः सार्वजनिक कुंजी पासवर्ड और इसके साथ जुड़े डिजिटल हस्ताक्षर से परिचित होने की आवश्यकता होगी, कृपया दो अवधारणाओं के बारे में जानें. साथ ही संभवतः हैश फ़ंक्शन से भी परिचित हों (जो किसी भी लंबाई के इनपुट को निश्चित लंबाई के आउटपुट में परिवर्तित करता है) । ये सभी अवधारणाएं बहुत अच्छी हैं, यदि आप उन्हें नहीं समझते हैं, तो आपको कुछ समय बिताने की सलाह दी जाती है।
बिटकॉइन का आधार क्रिप्टोलॉजी है, यह आपको आश्चर्यचकित कर सकता है, क्या बिटकॉइन एक मुद्रा नहीं है? क्या यह गुप्त सूचनाओं को भेजने का एक तरीका है? वास्तव में, बिटकॉइन का अधिकांश समाधान लेनदेन की सुरक्षा के बारे में है ताकि यह सुनिश्चित किया जा सके कि लोग दूसरों की चीजों को नहीं चुरा सकते हैं या दूसरों का उपहास नहीं कर सकते हैं। परमाणुओं से बने भौतिक दुनिया में, हम लॉक, हस्ताक्षर, बैंक बीमा आदि के साथ सुरक्षा सुनिश्चित करते हैं। सूचना की दुनिया में, हम क्रिप्टोलॉजी के साथ सुरक्षा सुनिश्चित करते हैं। यही कारण है कि बिटकॉइन का मूल क्रिप्टोग्राफिक प्रोटोकॉल है।
इस लेख की रणनीति बिटकॉइन को बनाने की एक परत है। हम एक बहुत ही सरल डिजिटल मुद्रा से शुरू करेंगे, जिसे हम अस्थायी रूप से बिटकॉइन से अलग करने के लिए इन्फोकोइन टैंक कहते हैं। बेशक हमारे पहले संस्करण के इन्फोकोइन में बहुत कमियां होंगी, इसलिए हम कई पुनरावृत्तियों के माध्यम से जाएंगे, प्रत्येक पुनरावृत्ति में एक या दो नई अवधारणाओं को पेश करते हुए। कई पुनरावृत्तियों के बाद हम एक पूर्ण बिटकॉइन प्रोटोकॉल प्राप्त करेंगे। हम एक साथ बिटकॉइन को फिर से आविष्कार करेंगे।
यह तरीका बिटकॉइन को सीधे व्याख्या करने की तुलना में थोड़ा धीमा है। लेकिन यहां तक कि अगर आप बिटकॉइन के सिद्धांतों को समझते हैं, तो आपको यह समझना मुश्किल है कि बिटकॉइन को इस तरह से क्यों बनाया गया है। धीरे-धीरे चरण-दर-चरण पुनरावर्ती व्याख्या का लाभ यह है कि यह आपको बिटकॉइन के प्रत्येक तत्व की स्पष्ट समझ देता है।
अंत में, मुझे यह कहना चाहिए कि मैं बिटकॉइन की दुनिया में अपेक्षाकृत नया हूं। मैंने 2011 में एक मोटा-मोटा ध्यान दिया, लेकिन वास्तव में 2013 के शुरू में इसके विवरणों पर गंभीरता से काम किया। मैं किसी को भी मेरी गलतियों को सही करने का स्वागत करता हूं।
एक डिजिटल मुद्रा की संभावना नहीं लगती है. मान लीजिए कि एक व्यक्ति जिसे हम एलिस कहते हैं, उसके पास कुछ डिजिटल मुद्राएं हैं जो वह खर्च करना चाहती है. यदि एलिस एक स्ट्रिंग वर्णों के साथ पैसे के रूप में उपयोग कर सकती है, तो हम उसे उसी स्ट्रिंग वर्णों के साथ बार-बार उपयोग करने से कैसे रोक सकते हैं? अगर हम इस समस्या को हल कर सकते हैं, तो हम दूसरों को एक स्ट्रिंग वर्णों को बनाने और एलिस से चोरी करने से कैसे रोक सकते हैं?
ये केवल दो समस्याएं हैं जो जानकारी को मुद्रा के रूप में हल करने के लिए हैं। पहले संस्करण के इंफोकोइन में, हमने एलिस को पैसे के रूप में एक स्ट्रिंग देने का एक तरीका निकाला और इसे नकली होने से बचाने का एक तरीका निकाला। मान लीजिए कि एलिस एक इंफोकोइन को बॉब को देने जा रही है। एलिस को एक संदेश लिखना होगाः "अरे, मुझे एलिस को बॉब को एक इंफोकोइन देने जा रहा है।" वह फिर इस संदेश को एक निजी कुंजी के साथ हस्ताक्षर करती है (यह निजी कुंजी 64 संख्याओं में से एक है जो यादृच्छिक रूप से उत्पन्न होती है) । और इस हस्ताक्षरित नाम के परिणाम वर्ण को दुनिया भर में प्रकाशित करती है।
यह तरीका बहुत प्रसिद्ध नहीं है, लेकिन इसके कुछ फायदे हैं. दुनिया में कोई भी एलिस के सार्वजनिक कुंजी का उपयोग करके एलिस को सत्यापित कर सकता है कि वह वास्तव में हस्ताक्षरकर्ता है. किसी और को उस हस्ताक्षर का परिणाम उत्पन्न करने की संभावना नहीं है (यह हस्ताक्षर केवल एलिस के पास निजी कुंजी से उत्पन्न हो सकता है, सिद्धांत में ऊपर उल्लिखित डिजिटल हस्ताक्षर देखें), इसलिए एलिस नहीं कह सकती है कि नहीं, मैंने बॉब को एक infocoin नहीं दिया है। इस प्रकार, यह प्रोटोकॉल एलिस को एलिस को एक infocoin देने का इरादा रखता है। इसी तरह, कोई भी अन्य व्यक्ति इस तरह के हस्ताक्षरित संदेश का उत्पादन नहीं कर सकता है, जिससे अन्य लोगों को एलिस के संदेश को गलत तरीके से प्रकाशित करने से रोका जा सकता है। बेशक, जब एलिस ने अपना संदेश प्रकाशित किया है, तो अन्य लोगों के लिए इस संदेश को कॉपी करने की संभावना है, लेकिन इसे प्रकाशित करने से पहले इसे गलत तरीके से प्रदर्शित करना असंभव है। इसलिए, संदेश जारी करने से पहले इरादे और गलत तरीके से रोकने की क्षमता इस प्रोटोकॉल की दो विशेषताओं में वास्तव में उल्लेखनीय है।
मैंने अभी तक यह नहीं कहा है कि इस प्रोटोकॉल में पैसा क्या है; स्पष्ट रूप सेः पैसा वास्तव में संदेश है; यानी, हस्ताक्षर करने वाले लोगों की एक श्रृंखला का प्रतिनिधित्व करता है जो मेरी माँ एलिस को बॉब को एक जानकारी सिक्का देने के लिए चिह्नित करती है। बाद का प्रोटोकॉल इस बिंदु पर समान होगा, यानी सभी डिजिटल मुद्राएं केवल संदेश वर्णों की बढ़ती संख्या में हैं।
हमारे पहले संस्करण के Infocoin के साथ समस्या यह थी कि क्या एलिस बार-बार बॉब को एक ही हस्ताक्षरित संदेश भेज सकती थी; मान लीजिए कि बॉब को 10 संदेश प्राप्त हुए जैसे कि मुझे, एलिस, बॉब को एक infocoin देना। क्या यह एलिस ने बॉब को 10 अलग-अलग infocoin दिए थे? या एलिस ने बॉब को एक infocoin दिया था, बस गलती से संदेश दोहराया था? या वह बॉब को यह विश्वास दिलाने के लिए धोखा देना चाहती थी कि उसने उसे 10 infocoin दिए थे, जबकि वास्तव में बाहर की दुनिया को भेजे गए संदेशों से पता चलता है कि उसने केवल एक ही infocoin दिया था।
हम चाहते हैं कि इनफोकॉइन का एक अद्वितीय आइडेंटिफिकेशन हो. इसे एक लेबल या सीरियल नंबर की आवश्यकता होती है. एलिस मैसेजिंग में बॉब को एक इनफोकॉइन टैब पर हस्ताक्षर कर सकती है, जिसका सीरियल नंबर 8740348 है. और फिर अगर एलिस दूसरे मैसेज में साइन करती है, तो एलिस बॉब को एक इनफोकॉइन टैब देगी, जिसका सीरियल नंबर 8770431 है, ताकि बॉब और अन्य लोग जान सकें कि यह दो अलग-अलग इनफोकॉइन हैं.
इस योजना को लागू करने के लिए, हमें एक विश्वसनीय सीरियल नंबर स्रोत की आवश्यकता होगी। सीरियल नंबर उत्पन्न करने का एक तरीका एक संस्था जैसे बैंक का गठन करना है। यह बैंक इनफोकॉइन के लिए सीरियल नंबर उत्पन्न करेगा, जो रिकॉर्ड करेगा कि किसके पास कौन से इनफोकॉइन हैं, और लेनदेन की प्रामाणिकता को सत्यापित करेगा।
अधिक विस्तार से, मान लीजिए कि एलिस एक बैंक में जाती है और कहती है कि मैं अपने खाते से एक इन्फोकॉइन निकालने जा रही हूँ। यह बैंक उसके खाते से एक इन्फोकॉइन घटाता है, और उसे एक नया सीरियल नंबर देता है जिसका उसने कभी उपयोग नहीं किया है, मान लीजिए कि यह 1234567 है। फिर, जब एलिस बॉब को एक इन्फोकॉइन भेजना चाहती है, तो वह इस नए संदेश पर हस्ताक्षर करती है। लेकिन बॉब ने न केवल इस इन्फोकॉइन को स्वीकार किया, बल्कि उसने बैंक से संपर्क किया और दो चीजों की पुष्टि की, पहला, सीरियल नंबर 1234567 का इन्फोकॉइन वास्तव में एलिस का है। दूसरा, एलिस ने अभी तक उस इन्फोकॉइन को खर्च नहीं किया है। फिर बैंक ने इसके रिकॉर्ड को अपडेट किया और दिखाया कि यह अब एलिस का नहीं बल्कि बॉब का है।
उपरोक्त समाधान बहुत अधिक संभावना दिखता है। लेकिन, हम कुछ और अधिक महत्वाकांक्षी कर सकते हैं। हम इस समझौते से बैंकों को हटा सकते हैं। यह मुद्रा के स्वयं के गुणों को काफी बदल देता है। इसका मतलब है कि एक अलग संगठन नहीं होगा जो इस मुद्रा के लिए जिम्मेदार होगा। जब आप सोचते हैं कि केंद्रीय बैंक के पास कितना अधिकार है (पैसे जारी करने पर नियंत्रण) तो यह एक बड़ा बदलाव है।
इसका तरीका यह है कि सभी लोग मिलकर बैंक बनें. विशेष रूप से, हम मान लेते हैं कि प्रत्येक व्यक्ति जो इनफोकॉइन का उपयोग करता है, एक पूर्ण रिकॉर्ड रखता है, जिसमें यह भी शामिल है कि कौन सा इनफोकॉइन किसके लिए है. आप इसे एक साझा सार्वजनिक खाता के रूप में सोच सकते हैं, जो सभी इनफोकॉइन लेनदेन के रिकॉर्ड को रिकॉर्ड करता है. हम इसे ब्लॉकचेन ब्लॉकचेन खाता कहते हैं, क्योंकि बिटकॉइन में ऐसा कहा जाता है।
अब, मान लीजिये एलिस बॉब को एक infocoin देने जा रही है. उसने मैसेजिंग में मुझे बताया कि एलिस ने बॉब को एक infocoin के लिए साइन किया है, जिसका सीरियल नंबर 1234567 है. और उस साइन किए गए संदेश का परिणाम बॉब को आउटपुट किया गया है, और बॉब अपने स्वयं के ब्लॉकचेन पर जांच कर सकता है, ओह ठीक है, यह वास्तव में एलिस ने मुझे दिया था. अगर उसने जांच की, तो उसने एलिस के संदेश को पूरे नेटवर्क में प्रकाशित किया और खुद को इस infocoin को प्राप्त करने का संदेश दिया. और फिर सभी ने अपना ब्लॉकचेन अपडेट किया।
हमारे पास अभी भी यह सवाल है कि सीरियल नंबर कहां से आया, लेकिन यह वास्तव में हल करने के लिए आसान है, इसलिए मैं इसे बाद में समझाता हूं। और भी कठिन बात यह है कि यह प्रोटोकॉल एलिस को अपने इनफोकॉइन को दोहराने के लिए खर्च करने की अनुमति देता है। वह एक हस्ताक्षरित संदेश जारी कर सकती है कि एलिस बॉब को 1234567 का इनफोकॉइन देगी, और साथ ही एक हस्ताक्षरित संदेश भी जारी कर सकती है कि एलिस ने चार्ली को 1234567 का इनफोकॉइन दे दिया। बॉब और चार्ली दोनों अपने स्वयं के ब्लॉकचेन का उपयोग करते हैं ताकि यह पता लगाया जा सके कि यह वास्तव में एलिस द्वारा भेजा गया था। मान लीजिए कि वे एक ही समय में जांच कर रहे थे। (उन्होंने एक दूसरे के बारे में पता लगाया था) और दोनों ने पाया कि, हां, यह निश्चित रूप से एलिस का था। इसलिए वे दोनों ने उस लेनदेन को स्वीकार किया, और अब उनके पूरे नेटवर्क को जानकारी दी गई है। इस तरह के एक साधारण सवाल के रूप में, ब्लॉकचेन पर, किसी को भी अपने लेनदेन को अपडेट करने के लिए धोखा नहीं दिया
हम इस समस्या को डबल खर्च करने वाली समस्या कहते हैं, जो पहली नज़र में सफल नहीं होती है। आखिरकार, अगर एलिस पहले बॉब को संदेश भेजती है, तो बॉब सभी को संदेश भेजता है, जिसमें चार्ली भी शामिल है, और अन्य लोग अपने ब्लॉकचेन को अपडेट करते हैं। इस समय, चार्ली को धोखा नहीं दिया जाता है। इसलिए ऐसा लगता है कि डबल खर्च केवल थोड़े समय के लिए संभव है। हालांकि, यहां तक कि अगर यह समय छोटा है, तो यह समस्या भी अवांछनीय है। इससे भी बदतर, एलिस कुछ युक्तियों का उपयोग कर सकती है ताकि यह समय बढ़ाया जा सके। उदाहरण के लिए, वह वेब एनालिटिक्स सॉफ़्टवेयर का उपयोग कर सकती है जब वह बॉब और चार्ली के बीच संचार को बहुत देर तक ढूँढ सकती है। या कुछ ऐसा कर सकती है जो जानबूझकर उनके बीच के नेटवर्क कनेक्शन को बाधित करता है। यदि वह इस संचार को थोड़ा धीमा कर सकती है, तो कई सफल डबल खर्च हो सकते हैं।
सबसे आसान तरीका यह है कि जब एलिस बॉब को इनफोकॉइन भेजती है, तो बॉब को अकेले लेनदेन की जांच नहीं करनी चाहिए; बल्कि उसे इस प्रतीक्षा लेनदेन को पूरे इनफोकॉइन नेटवर्क में प्रकाशित करना चाहिए और दूसरों को यह तय करने में मदद करनी चाहिए कि क्या लेनदेन उचित है। यदि वे एक साथ निर्णय लेते हैं कि लेनदेन उचित है, तो बॉब इस इनफोकॉइन को स्वीकार कर सकता है, और फिर सभी अपने ब्लॉकचेन को अपडेट कर सकते हैं। इस तरह के प्रोटोकॉल से दोहरे फूलों को रोका जा सकता है, क्योंकि अगर एलिस एक ही समय में बॉब और चार्ली को एक ही इनफोकॉइन भेजना चाहती है, तो नेटवर्क पर अन्य लोग इसे नोटिस करेंगे और बॉब और चार्ली को बताएंगे कि लेनदेन में समस्या है, तो लेनदेन को पारित करने की अनुमति नहीं दी जाएगी।
अधिक विशेष रूप से, मान लीजिए कि एलिस बॉब को एक infocoin देना चाहती है; जैसा कि पहले किया गया था, उसने एक संदेश को हस्ताक्षरित किया था, मेरी माँ एलिस ने बॉब को 1234567 का सीरियल नंबर दिया था, और बॉब को एक अच्छी तरह से हस्ताक्षरित संदेश दिया था। जैसा कि पहले किया गया था, बॉब ने अपने स्वयं के ब्लॉकचेन पर एक जांच की, यह सिक्का वास्तव में एलिस का था। लेकिन प्रोटोकॉल अलग था, बॉब ने इसे सीधे स्वीकार नहीं किया था, लेकिन पूरे नेटवर्क पर एलिस के संदेश को प्रकाशित किया था। अन्य सदस्यों ने जांच की कि क्या एलिस के पास यह infocoin है, और यदि हां, तो उन्होंने संदेश प्रकाशित किया कि यह सही है, एलिस के पास वास्तव में 1234567 का infocoin है, और अब इसे बॉब के पास स्थानांतरित किया जा सकता है। एक बार जब पर्याप्त लोग इस संदेश को प्रकाशित करते हैं, तो हर कोई अपने ब्लॉकचेन को अपडेट करता है।
इस प्रोटोकॉल के बारे में अभी भी कई अनिश्चितताएं हैं; उदाहरण के लिए, एक बार जब पर्याप्त लोग इस संदेश को प्रकाशित करते हैं, तो इसका क्या मतलब है, कितने लोग पर्याप्त हैं? यह पूरा इंफोकोइन नेटवर्क नहीं हो सकता है, क्योंकि हम पहले से नहीं जानते कि इंफोकोइन नेटवर्क पर कौन है।
मान लीजिए कि एलिस उपरोक्त प्रोटोकॉल में दोहरे फूल चाहते हैं, और उसे पूरे इंफोकोइन नेटवर्क पर नियंत्रण रखने की आवश्यकता है; मान लीजिए कि वह एक स्वचालित प्रणाली का उपयोग कर इंफोकोइन नेटवर्क पर कई अलग-अलग पहचानों वाले खातों का निर्माण करती है, मान लीजिए कि एक अरब हैं; जैसा कि पहले हुआ था, उसने दोहरे फूल करने का प्रयास किया, जो कि बॉब और चार्ली को एक ही इंफोकोइन देता है, लेकिन जब बॉब और चार्ली ने इंफोकोइन नेटवर्क से इस लेनदेन की जांच करने के लिए पूछा, तो एलिस के घोड़े पूरे नेटवर्क को भर गए, जो बॉब और चार्ली को बताते हैं कि वे इस लेनदेन के माध्यम से जा सकते हैं, और शायद उनमें से एक या दोनों को धोखा दे सकते हैं या लेनदेन स्वीकार कर सकते हैं।
एक चतुर तरीका है, जो कि चाकू के काम को साबित करने का एक तरीका है जिसे चाकू का काम साबित करने का तरीका कहा जाता है। यह तरीका सहज नहीं है और दो अवधारणाओं को जोड़ने की आवश्यकता है, 1) मैन्युअल रूप से जांच करने के लिए लेनदेन की प्रक्रिया को अधिक गणना लागत खर्च करने के लिए; 2) उन्हें इस लेनदेन को सत्यापित करने में मदद करने के लिए पुरस्कृत करने के लिए।
यह काम के प्रमाण पत्र का मुख्य बिंदु है. लेकिन काम के प्रमाण पत्र को समझने के लिए, हमें अधिक विशिष्ट विवरणों में जाने की आवश्यकता है.
मान लीजिए कि एलिस ने पूरे नेटवर्क को एक संदेश भेजा है कि एलिस बॉब को 1234567 का एक जानकारी सिक्का देने जा रहा है। जब नेटवर्क पर अन्य लोगों ने इस संदेश को सुना, तो हर कोई इसे एक लंबित लेनदेन की सूची में शामिल करता है, जो अभी तक पूरे नेटवर्क द्वारा पारित नहीं किया गया है। उदाहरण के लिए, नेटवर्क पर डेविड नाम के व्यक्ति के पास निम्नलिखित लंबित लेनदेन हो सकते हैंः
डेविड ने अपने स्वयं के ब्लॉकचेन की जांच की और देखा कि उपरोक्त लेनदेन उचित हैं। वह इस सत्यापन संदेश को पूरे नेटवर्क में प्रसारित करने में मदद करना चाहता है। लेकिन, इससे पहले, सत्यापन लेनदेन प्रोटोकॉल में डेविड को एक गणना की कठिनाई हल करने की आवश्यकता होती है, जिसका नाम है कार्य प्रमाण। यदि उसे कठिनाई का समाधान नहीं मिलता है, तो नेटवर्क के अन्य सदस्य उसके सत्यापन को स्वीकार नहीं करेंगे।
तो, डेविड किस तरह की समस्या को हल करना चाहता है? इसे समझाने के लिए, हम एक निश्चित हैश फ़ंक्शन हैश फ़ंक्शन का उपयोग करते हैं जिसे नेटवर्क पर हर कोई जानता है और इसे प्रोटोकॉल में शामिल करता है। बिटकॉइन एक प्रसिद्ध SHA-256 हैश फ़ंक्शन का उपयोग करता है, लेकिन किसी भी क्रिप्टोग्राफिक हैश फ़ंक्शन का उपयोग यहां किया जा सकता है। हम डेविड के लिए लंबित लेनदेन के इस समूह को एक चिह्न देते हैं, जो कि बाद में संदर्भित करने के लिए है। यह समूह लंबित लेनदेन भी ब्लॉक के बराबर है। ब्लॉक डेविड-ब्लॉक को समझने के लिए महत्वपूर्ण है, जो कि सूचनाओं का एक समूह है, जिसमें कई लेनदेन शामिल हैं।
डेविड को हल करने वाली समस्या (कार्य प्रमाण) एक यादृच्छिक संख्या x का पता लगाना है, और जब हम इस x को L के बाद जोड़ते हैं और hash का यह संयोजन प्राप्त करते हैं, तो परिणाम कुछ 0 के साथ शुरू होता है। इस समस्या की कठिनाई को शुरुआती शून्य की संख्या को समायोजित करके समायोजित किया जा सकता है। एक सरल कंक्रीट कार्य प्रमाणन कंक्रीट को केवल 3 या 4 शून्य के साथ शुरू होने वाले हैश की आवश्यकता होती है, जबकि एक कठिन कंक्रीट कार्य प्रमाणन कंक्रीट को अधिक शून्य की आवश्यकता हो सकती है, जैसे कि 15 लगातार शून्य।
और आप देख सकते हैं कि यह तब भी काम नहीं करता है जब x = 1 है.
और फिर हम x = 2, और फिर हम x = 3, 4, 5, और फिर हम जानते हैं कि अंत में, जब हम जानते हैं कि x = 4350, तो हम प्राप्त करते हैं
यह यादृच्छिक संख्या x हमें चार शून्य से शुरू होने वाले हैश का परिणाम देती है। यह एक सरल हल करने के लिए पर्याप्त है।
इस समस्या को हल करना इतना मुश्किल है कि इसके पासवर्ड हैश फ़ंक्शन का परिणाम हमेशा यादृच्छिक होता है, और इनपुट मान में कोई भी मामूली बदलाव पूरे हैश फ़ंक्शन के आउटपुट को पूरी तरह से अलग कर देगा, जिससे यह अनुमान लगाना मुश्किल है। इसलिए यदि हमें 10 से शुरू होने वाले 0 से आउटपुट करना है, तो डेविड को औसत 1610 ≈ 1012 अलग-अलग x की आवश्यकता होगी ताकि वह सही मान पा सके। यह एक बहुत ही चुनौतीपूर्ण कार्य है और बहुत अधिक गणना की आवश्यकता है।
स्पष्ट रूप से, हम यह निर्धारित करके कार्य प्रमाण की कठिनाई को नियंत्रित कर सकते हैं कि कितने शून्य की आवश्यकता है। वास्तव में, बिटकॉइन प्रोटोकॉल को ऊपर दिए गए कार्य प्रमाण में थोड़ा संशोधन करके कठिनाई पर बेहतर नियंत्रण दिया जा सकता है। अब यह निर्धारित नहीं है कि कितने शुरुआती शून्य की आवश्यकता है, बल्कि यह निर्धारित करता है कि ब्लॉक के हैश आउटपुट का परिणाम एक लक्ष्य मूल्य से कम या बराबर है, जिसे स्वचालित रूप से समायोजित किया जाता है ताकि यह सुनिश्चित किया जा सके कि बिटकॉइन के प्रत्येक ब्लॉक को हल करने में औसतन 10 मिनट लगते हैं।
ठीक है, हम मानते हैं कि डेविड भाग्यशाली है और एक उपयुक्त x (nonce) ढूंढता है, उसे बधाई! (उसे इस उत्तर को खोजने के लिए पुरस्कृत किया जाएगा) । वह घोषणा करेगा कि उसने ब्लॉक में लेनदेन को मान्य साबित कर दिया है, और साथ ही उसके द्वारा पाए गए x के मूल्य को प्रकाशित करेगा, और अन्य infocoin के प्रतिभागी उस x के कामकाजी प्रमाण को मान्य साबित कर सकते हैं। और फिर वे अपने स्वयं के ब्लॉकचेन को अपडेट करते हैं, जिसमें डेविड द्वारा प्रकाशित लेनदेन शामिल हैं।
इस योजना को काम करने के लिए साबित करने के लिए, नेटवर्क के प्रतिभागियों को लेनदेन को सत्यापित करने में मदद करने के लिए एक प्रोत्साहन तंत्र की आवश्यकता होनी चाहिए। यदि कोई प्रोत्साहन तंत्र नहीं है, तो कोई भी लेनदेन की जांच करने में मदद करने के लिए अपने कंप्यूटर की गणना करने के लिए तैयार नहीं होगा। यदि नेटवर्क प्रतिभागी गणना करने के लिए तैयार नहीं हैं, तो पूरी प्रणाली काम नहीं करेगी। इसलिए, हम किसी भी व्यक्ति को पुरस्कार दे सकते हैं जो लेनदेन को सफलतापूर्वक सत्यापित करता है। यदि उन्हें पर्याप्त जानकारी प्रदान की जाती है, तो उन्हें सत्यापन में भाग लेने के लिए प्रोत्साहित किया जा सकता है।
बिटकॉइन के प्रोटोकॉल में, इस सत्यापन की प्रक्रिया को कंक्रीट खनन कहा जाता है; प्रत्येक लेनदेन ब्लॉक के सफल सत्यापन के लिए बिटकॉइन को पुरस्कार के रूप में प्राप्त किया जाता है; शुरुआत में, यह 50 बिटकॉइन का पुरस्कार था; लेकिन प्रति 210,000 सत्यापित ब्लॉक (जो कि लगभग हर 4 साल में होता है) पुरस्कार आधा हो जाएगा; अब तक यह केवल एक बार हुआ है, यानी अब एक ब्लॉक को सत्यापित करने के लिए 25 बिटकॉइन का पुरस्कार प्राप्त होता है; आधा होने की प्रक्रिया लगभग 2140 तक जारी रहेगी; तब खनन के लिए पुरस्कार 10-8 बिटकॉइन तक कम हो जाएगा; जबकि 10-8 बिटकॉइन सबसे छोटी इकाई है जिसे एक सैटोस कहा जाता है; इसलिए, 2140 तक, कुल सत्यापन के अलावा, बिटकॉइन का पुरस्कार बढ़ना बंद हो जाएगा; हालांकि, यह सत्यापन की प्रक्रिया को समाप्त नहीं करता है। यह लेनदेन में भाग लेने वालों को 25 बिटकॉइन का उपयोग करने की अनुमति देता है।
आप कार्य-प्रमाण को एक प्रतिस्पर्धी सत्यापन लेनदेन की प्रक्रिया के रूप में देख सकते हैं; प्रत्येक प्रतिभागी कंप्यूटर गणना का एक हिस्सा खर्च करता है; एक खनिक की जीत की संभावना लगभग उसी अनुपात में होती है जो उनके नियंत्रण में है और पूरे नेटवर्क की गणना की क्षमता। उदाहरण के लिए, एक खनिक पूरे नेटवर्क की गणना की शक्ति के एक प्रतिशत पर नियंत्रण रखता है, तो उसकी जीत की संभावना लगभग एक प्रतिशत है। इसलिए बड़ी मात्रा में गणना की क्षमता प्रदान करना प्रतिस्पर्धात्मकता का समर्थन करने वाला कारक है, और एक बेईमान खनिक के पास सत्यापन प्रक्रिया को खराब करने का बहुत कम मौका है, जब तक कि वे भारी कंप्यूटर संसाधन खर्च नहीं करते हैं।
बेशक, भले ही बेईमान खनिकों के पास पूरे ब्लॉकचैन को तोड़ने का बहुत कम मौका हो, हम इसे मुद्रा के रूप में लेने के लिए पर्याप्त आत्मविश्वास नहीं रखते हैं। विशेष रूप से, हमने अभी तक द्विगुणी समस्या का अंतिम समाधान नहीं किया है।
मैं तुरंत दोहरे फूलों की समस्या का विश्लेषण करूंगा, लेकिन इससे पहले, मैं Infocoin की अवधारणा में एक महत्वपूर्ण विवरण जोड़ना चाहता हूं। आदर्श रूप से, हम चाहते हैं कि Infocoin नेटवर्क लेनदेन के होने के क्रम को एकजुट करे। यदि हमारे पास एकजुट क्रम नहीं है, तो यह स्पष्ट नहीं है कि किसके पास किसी विशेष समय पर कौन सा infocoin है। इसे हल करने में मदद करने के लिए, हम नए ब्लॉक को एक पॉइंट के साथ एक पॉइंट को शामिल करने के लिए कहते हैं, जो वास्तव में एक ब्लॉक के हैश का परिणाम है। इसलिए, मूल रूप से, ब्लॉकचेन स्वयं एक लेनदेन की जानकारी वाले ब्लॉक की एक रैखिक श्रृंखला है, एक ब्लॉक के बाद एक, प्रत्येक में एक पॉइंट के साथ एक पॉइंट है।
एक ब्लॉकचैन पर संयोग से एक शाखा उत्पन्न होती है; ऐसा इसलिए है क्योंकि कभी-कभी दो खनिक लगभग एक ही समय में एक ब्लॉक के लेनदेन को सत्यापित करते हैं; वे एक ही समय में नेटवर्क में प्रकाशित होते हैं, कुछ लोग अपने ब्लॉकचैन को एक तरीके से अपडेट करते हैं, और अन्य लोग अपने ब्लॉकचैन को दूसरे तरीके से अपडेट करते हैं।
यह एक ऐसी स्थिति पैदा करता है जिसे हम बचना चाहते हैं, जहां लेनदेन का क्रम स्पष्ट नहीं होता है, और यह भी स्पष्ट नहीं होता है कि किसके पास कौन से इन्फोकॉइन हैं। सौभाग्य से, एक सरल तरीका है जिसका उपयोग शाखाओं को स्थानांतरित करने के लिए किया जा सकता है। नियम यह है कि यदि एक शाखा स्थिति होती है, तो नेटवर्क पर लोग दो शाखाओं को बनाए रखते हैं, और किसी भी मामले में, खनिक केवल सबसे लंबे ब्लॉकचेन पर काम करते हैं।
मान लीजिए कि हमारे पास एक शाखा है, कुछ खनिक पहले ब्लॉक A प्राप्त करते हैं, और अन्य खनिक पहले ब्लॉक B प्राप्त करते हैं; जो खनिक ब्लॉक A प्राप्त करते हैं वे अपने शाखा के साथ खनन जारी रखेंगे, जबकि अन्य लोग ब्लॉक B के शाखा के साथ खनन करेंगे। मान लीजिए कि शाखा B पर खनिक पहले अगले ब्लॉक को सफलतापूर्वक खनन करते हैंः
जब उन्हें यह संदेश मिलता है, तो शाखा A में लोग ध्यान देते हैं कि शाखा B अब सबसे लंबी है और इसलिए वे शाखा B में स्थानांतरित हो जाते हैं; शाखा A पर काम जल्दी से बंद हो जाता है, ताकि हर कोई एक ही क्रम में ब्लॉकचेन पर काम कर सके; और ब्लॉक A को अनदेखा कर दिया जाता है। बेशक, ब्लॉक A में सभी लंबित लेनदेन लंबित रहते हैं, और फिर शाखा B में एक नए ब्लॉक में डाल दिया जाता है, ताकि सभी लेनदेन अंततः सत्यापित हो सकें।
इसी तरह, यदि शाखा A पर खनिक अगले ब्लॉक को पहले खोदता है, तो शाखा B पर काम करने वाला व्यक्ति बंद हो जाता है और शाखा A पर जाता है।
जो भी परिणाम होता है, यह प्रक्रिया ब्लॉकचेन को एक समान क्रम की गारंटी देती है। बिटकॉइन में, एक लेनदेन को तब तक पुष्टि नहीं माना जाता है जब तक कि 1) यह सबसे लंबे शाखा ब्लॉक में मौजूद है, और 2) इसके बाद कम से कम 5 सत्यापित ब्लॉक सत्यापित नहीं होते हैं। इस स्थिति में, हम कहते हैं कि लेनदेन में 6 पुष्टिकरण हैं। यह पूरे नेटवर्क को ब्लॉक के क्रम को एकीकृत करने का समय देता है। हम इन्फोकोइन में भी इसी तरह का तरीका उपयोग करते हैं।
अब जब हम समय के क्रम को समझते हैं, तो हम सोचने के लिए वापस जाते हैं कि क्या होगा यदि एक बेईमान व्यक्ति दो बार खर्च करना चाहता है। मान लीजिए कि एलिस को एक ही समय में बॉब और चार्ली को एक ही लेनदेन देना है। एक संभावना यह है कि उसे एक ब्लॉक को सत्यापित करना है जिसमें दो लेनदेन हैं। मान लीजिए कि उसके पास एक प्रतिशत कंप्यूटिंग क्षमता है, तो वह एक ब्लॉक को सत्यापित करने के लिए भाग्यशाली हो सकती है। दुर्भाग्य से, यह दो बार खर्च तुरंत दूसरों द्वारा खोजा जाएगा और अस्वीकार कर दिया जाएगा, हालांकि उसने काम के प्रमाण में कठिनाई को हल किया है। इसलिए हमें इस संभावना के बारे में चिंता करने की ज़रूरत नहीं है।
लेकिन एक और संभावना यह है कि वह दो लेनदेन को अलग-अलग प्रकाशित करने की कोशिश कर रही है। वह एक लेनदेन को एक खनिक के लिए प्रकाशित कर सकती है और दूसरे खनिक के लिए एक और लेनदेन की घोषणा कर सकती है, और वह चाहती है कि दोनों लेनदेन सत्यापित हों। सौभाग्य से, इस मामले में, जैसा कि हमने अभी कहा है, नेटवर्क केवल एक लेनदेन की पुष्टि करता है। इसलिए, यह भी कोई समस्या नहीं है।
एक और संभावना है, एलिस = बॉब, यानी एलिस चार्ली को एक सिक्का देने की कोशिश कर रही है, और वह उस सिक्के को खुद को दे रही है, क्योंकि वह खुद कई खाते रख सकती है। इस मामले में एलिस की रणनीति यह है कि चार्ली को इन्फोकोइन प्राप्त होने तक इंतजार करें, जो कि सबसे लंबे ब्लॉकचेन में लेनदेन की पुष्टि होने के बाद 6 बार होगा। वह फिर से दूसरे ब्लॉक शाखा को हल करने की कोशिश करती है जिसमें वह अपने लिए लेनदेन भेजती है।
दुर्भाग्य से, इस समय एलिस सबसे लंबे ब्लॉकचैन से 6 कदम पीछे है। उसे सबसे लंबे शाखा के साथ पकड़ में मुश्किल हो रही है। अन्य खनिक उसकी मदद नहीं करेंगे क्योंकि उन्हें सभी को सबसे लंबे शाखा पर काम करने की आवश्यकता है ताकि उन्हें पुरस्कार प्राप्त हो सके। जब तक एलिस को हल करने का काम साबित नहीं होता है, तब तक वह नेटवर्क के अन्य लोगों की तुलना में तेजी से जोड़ सकता है ((यानी वह संभवतः पूरे नेटवर्क के 50% से अधिक कंप्यूटिंग क्षमता है) । बेशक, वह भाग्यशाली हो सकती है और एक प्रतिशत के हिसाब से एक ब्लॉक को हल कर सकती है, लेकिन 6 फूलों को एक साथ पकड़ना 1/1006 = 10-12 के बराबर है। यह स्थिति शून्य पर विचार करने के लिए कहा जा सकता है।
बेशक, यह बहुत सख्त नहीं है कि एलिस निश्चित रूप से दोहरे फूल नहीं डाल सकता है; यह केवल एक तर्कसंगत निष्कर्ष है; बिटकॉइन के श्वेतपत्र में मूल रूप से एक कठोर सुरक्षा विश्लेषण नहीं किया गया है, लेकिन मेरे जैसे अनौपचारिक निष्कर्ष हैं; सुरक्षा समूह बिटकॉइन की सुरक्षा और संभावित खामियों का विश्लेषण करते हैं, विशेष रूप से इस सूची को देखें।
अनुवादक ने लिखा, यह पहले भाग का हिस्सा है, दूसरे भाग के लेखक माइकल ने बिटकॉइन लेनदेन के दृष्टिकोण से बिटकॉइन प्रोटोकॉल को और अधिक विस्तार से समझाने के लिए इन्फोकॉइन की अवधारणा को छोड़ दिया है। यदि आपने इसे देखा है, तो आप मेरे माइक्रोब्लॉग, और ब्लॉग को देख सकते हैं।
इसके अलावा, यदि आपको यह मददगार लगता है, तो मैं सुझाव देता हूं कि आप इस लेख के लेखक माइकल नीलसन को टिप दें, जिसका पता 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ है, आप उसे ट्विटर पर भी फॉलो कर सकते हैं। या उसके न्यूरल नेटवर्क और डीप लर्निंग पर प्रकाशित होने वाले नए पुस्तक के पहले अध्याय को फॉलो कर सकते हैं।
यह लेख एक पत्रिका से लिया गया है।