Bitcoin प्रोटोकॉल कैसे काम करता है

लेखक:छोटे सपने, बनाया गयाः 2017-01-19 18:30:04, अद्यतन किया गयाः

Bitcoin प्रोटोकॉल कैसे काम करता है

  • बिटकॉइन

    अब, चलिए इन्फोकोइन को छोड़ते हैं और वास्तविक बिटकॉइन प्रोटोकॉल की ओर बढ़ते हैं। बिटकॉइन और इन्फोकोइन में बहुत अंतर नहीं है, जो हमने अभी कदम से कदम मिलाकर बनाया है, एक स्पष्ट बदलाव को छोड़कर।

    बिटकॉइन का उपयोग करने के लिए, सबसे पहले आपको कंप्यूटर में एक वॉलेट स्थापित करना होगा. आपको बेहतर समझने के लिए, नीचे दिए गए चित्र में मल्टीबिट नामक एक वॉलेट का एक स्क्रीनशॉट है. आप शीर्ष बाएं कोने में बिटकॉइन के बैलेंस को 0.06555555 बिटकॉइन के रूप में देख सकते हैं, जो स्क्रीनशॉट के उस समय के लेनदेन मूल्य के अनुसार लगभग $ 70 है। स्क्रीनशॉट के दाईं ओर दो हालिया लेनदेन हैं, जो इस 0.06555555 बिटकॉइन में जमा हैं।

    img

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

    img

    फिर आप अपना बिटकॉइन पता उस व्यक्ति को भेजते हैं जो आपको भुगतान करने वाला है। आप इसे ईमेल में भेज सकते हैं, या सीधे अपने वेब पेज पर डाल सकते हैं। यह सुरक्षित है, क्योंकि आपका पता केवल एक हैश किए गए सार्वजनिक कुंजी है, जिसे आप किसी को भी आश्वस्त कर सकते हैं। (किसी को भी इसके माध्यम से अपना निजी कुंजी नहीं मिल सकती है) । मैं बाद में समझाऊंगा कि क्यों बिटकॉइन पते सार्वजनिक कुंजी के बजाय सार्वजनिक कुंजी के हैश मान का उपयोग करते हैं।

    अब उस व्यक्ति को जो भुगतान करने के लिए तैयार है, एक नया लेनदेन बनाने की आवश्यकता है। आइए एक वास्तविक लेनदेन डेटा देखें जो 0.319 बिटकॉइन में स्थानांतरित हो गया है। नीचे यह लगभग मूल डेटा है, यहां तीन स्थानों में परिवर्तन हैः 1) डेटा का कोई निरंतरता नहीं है; 2) बेहतर समझ के लिए पंक्ति संख्याओं को जोड़ा गया है; 3) हैश डेटा की एक लंबी संख्या को छोड़ दिया गया है, केवल पहले 6 अंक को बनाए रखा गया है।

    1.  {"hash":"7c4025...",
    2.  "ver":1,
    3.  "vin_sz":1,
    4.  "vout_sz":1,
    5.  "lock_time":0,
    6.  "size":224,
    7.  "in":[
    8.    {"prev_out":
    9.      {"hash":"2007ae...",
    10.      "n":0},
    11.    "scriptSig":"304502... 042b2d..."}],
    12. "out":[
    13.   {"value":"0.31900000",
    14.    "scriptPubKey":"OP_DUP OP_HASH160 a7db6f OP_EQUALVERIFY OP_CHECKSIG"}]}
    
    • हम आपको एक-एक पंक्ति में बताते हैं।

      पहली पंक्ति, लेन-देन का हैश मान ((१६ इंटीग्रेटेड), वह इस लेनदेन का प्रतिनिधित्व करने के लिए उपयोग किया जाने वाला एकमात्र चिह्न है।

      दूसरी पंक्ति हमें बताती है कि यह लेनदेन बिटकॉइन प्रोटोकॉल के पहले संस्करण का उपयोग कर रहा है।

      पंक्तियाँ 3 और 4, हमें बताती है कि इस लेनदेन में एक इनपुट और एक आउटपुट है.

      पंक्ति 5, एक लॉक टाइम है जिसका उपयोग आप इस लेनदेन को पूरा होने पर नियंत्रित करने के लिए कर सकते हैं। अब अधिकांश बिटकॉइन लेनदेन का लॉक टाइम 0 है, यानी तुरंत लेनदेन पूरा हो जाता है।

      पंक्ति 6 हमें बताती है कि लेनदेन का आकार कितने बाइट्स है, ध्यान दें, यह लेनदेन का पैसा नहीं है।

      पंक्तियाँ 7 से 11 तक, यह इस लेनदेन के इनपुट को परिभाषित करती है, ठीक है, पंक्तियाँ 8 से 10 हमें बताती हैं कि पैसे को स्थानांतरित करने के लिए इस इनपुट मूल्य का पैसा पिछले लेनदेन के आउटपुट मूल्य से आया है। वह 2007 ae... जो पिछले लेनदेन के 16 इंटीग्रेटेड हैश मान हैं, जो एक लेनदेन को ऊपर की ओर इंगित करते हैं। n = 0 का मतलब है कि यह पिछले लेनदेन का पहला आउटपुट है, हम थोड़ी देर में देखेंगे कि कई इनपुट और आउटपुट कैसा दिखता है, इसलिए अब आगे बढ़ने की कोई चिंता नहीं है। पंक्तियाँ 11 उस व्यक्ति का हस्ताक्षर है जिसने पैसे भेजे थेः 304502... और रिक्त स्थान के बाद उसका सार्वजनिक कुंजीः 04b2d... वैसे ही दोनों 16 हैं।

      यहाँ इनपुट भाग में यह उल्लेखनीय है कि यह नहीं कहता है कि पहले लेनदेन में कितने बिटकॉइन दूसरे लेनदेन में स्थानांतरित होंगे; वास्तव में, पिछले लेनदेन में n = 0 के आउटपुट में सभी बिटकॉइन स्थानांतरित हो गए हैं। उदाहरण के लिए, यदि पिछले लेनदेन में पहले आउटपुट में n = 0 के लिए 2 बिटकॉइन थे, तो ये दोनों बिटकॉइन इस नए लेनदेन में खर्च किए जाएंगे। यह बहुत असुविधाजनक लगता है, जैसे कि 20 डॉलर के नकदी के साथ एक रोटी खरीदना। समाधान एक शून्य-पैसे वाला तंत्र प्रदान करना है, जिसे कई इनपुट और आउटपुट तरीकों से हल किया जा सकता है, जिसके बारे में अगले भाग में बात की जाएगी।

      पंक्तियों 12 से 14 तक, यह खंड लेनदेन के आउटपुट को परिभाषित करता है; विशेष रूप से, पंक्तियों 13 हमें बताता है कि पैसे का आउटपुट कितना है, यह 0.319 बिटकॉइन है। पंक्तियों 14 अपेक्षाकृत जटिल हैं, यह ध्यान देने योग्य है कि स्ट्रिंग a7db6f... बिटकॉइन के लिए भुगतान करने का पता है। यह पंक्ति वास्तव में बिटकॉइन के लिए एक स्क्रिप्ट भाषा है, जो यहां स्क्रिप्ट भाषा के विवरण को नहीं बताती है। आपको बस यह जानने की आवश्यकता है कि a7db6f... भुगतान करने का पता है।

      अब, आप देख सकते हैं कि बिटकॉइन ने कैसे उस समस्या को हल किया है, जिसके बारे में हमने पहले उल्लेख किया था कि सीरियल नंबर कहां से आते हैं। पहला, बिटकॉइन एक अलग से अलग सिक्का नहीं है, बल्कि ब्लॉकचेन पर मौजूद लेनदेन की एक लंबी श्रृंखला है। दूसरा, इस तरह से हमें सीरियल नंबर जारी करने के लिए एक केंद्रीय निकाय की आवश्यकता नहीं है। सीरियल नंबर हैश लेनदेन के माध्यम से ही प्राप्त किए जा सकते हैं।

      हम लेन-देन की श्रृंखला के साथ आगे और पीछे जा सकते हैं. अंत में, दो संभावनाएं हैं, पहला, आप शायद पहले बिटकॉइन लेनदेन में जाएंगे, जो एक ब्लॉक में मौजूद है, जिसे हम Genesis ब्लॉक कहते हैं. यह एक विशेष लेनदेन है, जिसमें कोई इनपुट नहीं है, केवल 50 बिटकॉइन का आउटपुट है. दूसरे शब्दों में, यह सबसे पहले बिटकॉइन की आपूर्ति है.

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

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

  • कई इनपुट और आउटपुट लेनदेन हैं

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

    1. {"hash":"993830...",
    2. "ver":1,
    3. "vin_sz":3,
    4.  "vout_sz":2,
    5.  "lock_time":0,
    6.  "size":552,
    7.  "in":[
    8.    {"prev_out":{
    9.      "hash":"3beabc...",
    10.        "n":0},
    11.     "scriptSig":"304402... 04c7d2..."},
    12.    {"prev_out":{
    13.        "hash":"fdae9b...",
    14.        "n":0},
    15.      "scriptSig":"304502... 026e15..."},
    16.    {"prev_out":{
    17.        "hash":"20c86b...",
    18.        "n":1},
    19.      "scriptSig":"304402... 038a52..."}],
    20.  "out":[
    21.    {"value":"0.01068000",
    22.      "scriptPubKey":"OP_DUP OP_HASH160 e8c306... OP_EQUALVERIFY OP_CHECKSIG"},
    23.    {"value":"4.00000000",
    24.      "scriptPubKey":"OP_DUP OP_HASH160 d644e3... OP_EQUALVERIFY OP_CHECKSIG"}]}
    
    • जैसा कि पहले, हम एक पंक्ति में व्याख्या करते हैं, ज्यादातर वही जो अभी हुआ है।

      पहली पंक्ति, लेनदेन का हैश मान, जिसका उपयोग लेनदेन के लिए एकमात्र चिह्न के रूप में किया जाता है।

      पंक्ति 2, बिटकॉइन प्रोटोकॉल का संस्करण, संस्करण 1।

      पंक्ति 3 और 4, यह बताता है कि इस लेनदेन में तीन इनपुट और दो आउटपुट हैं।

      पंक्ति 5, लॉक समय ((पहले की तरह) ।

      पंक्ति 6, लेनदेन का बाइट आकार।

      पंक्तियाँ 7 से 19 तक, सभी इनपुटों को परिभाषित करती हैं, प्रत्येक पिछले लेनदेन के आउटपुट से मेल खाती है। पहला इनपुट पंक्तियाँ 8 से 11 तक है। इसका सामग्री प्रारूप पहले के समान है। दूसरा इनपुट पंक्तियाँ 12 से 15 तक है, तीसरा पंक्तियाँ 16 से 19 तक है।

      पंक्तियाँ 20 से 24, सभी आउटपुट को परिभाषित करती हैं, पहला आउटपुट पंक्तियाँ 21 और 22 है, जैसा कि पहले था, पंक्तियाँ 21 कहती हैं कि इसमें 0.01068 बिटकॉइन हैं। पंक्तियाँ 22 बिटकॉइन के लिए एक स्क्रिप्ट भाषा हैं। स्ट्रिंग e8c30622... प्राप्तकर्ता का पता है। दूसरा आउटपुट पंक्तियाँ 23 और 24 है, एक ही प्रारूप में।

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

      कई इनपुट और आउटपुट का काम शून्य ढूँढना है. मान लीजिए कि मैं आपको 0.15 बिटकॉइन देना चाहता हूँ. मैं पहले से प्राप्त 0.2 बिटकॉइन खर्च कर सकता हूँ. बेशक, मैं आपको सभी 0.2 नहीं देना चाहता, इसलिए समाधान यह है कि मैं आपको 0.15 बिटकॉइन भेजता हूं, और फिर अपने दूसरे बिटकॉइन पते पर 0.05 बिटकॉइन भेजता हूं. इस प्रकार, यह 0.05 मुझे शून्य ढूँढने के लिए है. यह अवधारणा आपके वास्तविक स्टोर में शून्य ढूँढने के लिए बहुत अलग है, यह अधिक है कि आप अपने आप को भुगतान करते हैं। लेकिन यह लगभग एक ही बात है।

  • समापन

    बिटकॉइन के पीछे के बुनियादी अवधारणाओं का वर्णन किया गया है। बेशक, मैंने कई विवरणों को भी अनदेखा कर दिया है। यह एक औपचारिक विवरण नहीं है। लेकिन मैं आमतौर पर उपयोग किए जाने वाले बिटकॉइन के पीछे के अवधारणाओं का वर्णन करना चाहता हूं।

    हालांकि बिटकॉइन के पीछे के नियम सरल और समझने में आसान हैं, लेकिन इसका मतलब यह नहीं है कि उनके सभी संभावित परिणामों को समझना आसान है। बिटकॉइन के बारे में बहुत कुछ कहा जा सकता है, मैं बाद के लेखों में कुछ विस्तार से बताऊंगा। लेकिन अब, मैं थोड़ा सा संक्षेप में बताता हूं।

    बिटकॉइन कितना अनाम है? कई लोग कहते हैं कि बिटकॉइन का उपयोग अनाम किया जा सकता है. यह कथन सिल्क रोड जैसे ब्लैक मार्केट में उत्पन्न हुआ है। हालांकि यह कथन काल्पनिक है। ब्लॉकचेन सार्वजनिक है और इसका मतलब है कि कोई भी व्यक्ति सभी बिटकॉइन लेनदेन देख सकता है। हालांकि बिटकॉइन का पता सीधे वास्तविक दुनिया में किसी व्यक्ति की पहचान से मेल नहीं खाता है, कंप्यूटर वैज्ञानिकों ने अनाम सामाजिक नेटवर्क को तोड़ने के लिए बहुत काम किया है। ब्लॉकचेन उनका एक महान लक्ष्य है। मुझे आश्चर्य होगा कि निकट भविष्य में, यदि अधिकांश बिटकॉइन उपयोगकर्ताओं की पहचान अभी भी अपेक्षाकृत आत्मविश्वास के साथ पहचान नहीं की जा सकती है। पहचान पूरी तरह से पुष्टि नहीं की जानी चाहिए, लेकिन काफी संभावनाएं हैं। इसके अलावा, पहचान के उपकरण का अर्थ यह होगा कि 2011 में सिल्क रोड पर ड्रग्स बेचने वाले लोगों के लिए, ब्लॉकचेन अभी भी सार्वजनिक रूप से अनाम हो सकता है। यह शायद 2020 तक दुनिया के सबसे सुरक्षित कंप्यूटर उपयोगकर्ताओं में से एक है, और यह शायद सबसे अजीब है, क्योंकि एनएसए और एनएसए की तुलना में, और यहां तक कि अन्य देशों के लिए भी।

    क्या आप बिटकॉइन से धन कमा सकते हैं? हो सकता है, जैसा कि टिम ओ'रेली ने कहा था, पैसा बनाना कार में तेल की टंकी की तरह है जिसे आपको ध्यान देने की आवश्यकता है, अन्यथा आप सड़क के किनारे फंस जाएंगे लेकिन जीवन एक गैस स्टेशन के चारों ओर घूमता नहीं है! ओह, बिटकॉइन में अधिकांश रुचि उन लोगों से आती है जिनके जीवन का लक्ष्य केवल एक बड़ा गैस स्टेशन ढूंढना है। मुझे स्वीकार करना होगा कि यह भ्रमित करने वाला है। मुझे विश्वास है कि बिटकॉइन या अन्य डिजिटल मुद्राओं को एक नए मानव सहयोग के लिए एक उपकरण के रूप में देखना अधिक दिलचस्प और अधिक आनंददायक है। यह तर्कसंगत आकर्षण है, यह अविश्वसनीय नवाचार की संभावना प्रदान करता है, यह सामाजिक रूप से मूल्यवान है, और यह भी कुछ पैसा कमाने की संभावना है। लेकिन अगर पैसा बनाना आपका मुख्य लक्ष्य है, तो मुझे विश्वास है कि सफल होने के लिए अन्य आसान तरीके हैं।

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

    बिटकॉइन स्क्रिप्टः इस लेख में, मैंने बिटकॉइन को एक ऑनलाइन इलेक्ट्रॉनिक मुद्रा के रूप में समझाया है। लेकिन यह एक बड़ी और दिलचस्प कहानी का केवल एक छोटा सा हिस्सा है। जैसा कि हम देख सकते हैं, प्रत्येक बिटकॉइन लेनदेन में एक बिटकॉइन स्क्रिप्ट भाषा होती है। इस स्क्रिप्ट को इस लेख में इस तरह के शब्दों के समान सरल बनाया गया है। मुझे एलिस को बॉब को 10 बिटकॉइन देने के लिए कहते हैं। लेकिन इस स्क्रिप्ट भाषा का उपयोग अधिक जटिल लेनदेन को व्यक्त करने के लिए भी किया जा सकता है। दूसरे शब्दों में, बिटकॉइन एक प्रोग्राम करने योग्य मुद्रा है। बाद के लेख में, मैं इस सिस्टम स्क्रिप्ट और बिटकॉइन स्क्रिप्ट को एक मंच के रूप में कैसे समझाऊंगा जो विभिन्न प्रकार के अद्भुत वित्तीय उत्पादों का समर्थन करता है।

    यदि यह मददगार लगता है, तो मैं सुझाव देता हूं कि आप इस लेख के लेखक माइकल नीलसन को टिप दें, जिसका पता 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ है, आप उसे ट्विटर पर भी फॉलो कर सकते हैं। या उसके न्यूरल नेटवर्क और डीप लर्निंग पर प्रकाशित होने वाले नए पुस्तक के पहले अध्याय को फॉलो कर सकते हैं।

    अनुवादक के वीब्लॉग पर भी आपका स्वागत है: 1015 यदि कोई समस्या है तो क्षमा करें।

यह लेख एक पत्रिका से लिया गया है।


अधिक