मुख्य सामग्री पर जाएं

ब्लॉकचेन — ETH.BUILD

ब्लॉकचेन खनन कैसे काम करता है, इसका एक प्रदर्शन, जिसमें ब्लॉक को एक साथ कैसे जोड़ा जाता है, प्रूफ-ऑफ-वर्क (PoW) ब्लॉकचेन को कैसे सुरक्षित करता है, और जब कोई डेटा के साथ छेड़छाड़ करने की कोशिश करता है तो क्या होता है।

Date published: 14 जनवरी 2021

ऑस्टिन ग्रिफिथ द्वारा एक ट्यूटोरियल जो ETH.BUILD विज़ुअल प्रोग्रामिंग टूल का उपयोग करके प्रदर्शित करता है कि ब्लॉकचेन खनन कैसे काम करता है। ऑस्टिन प्रूफ-ऑफ-वर्क (PoW) सर्वसम्मति, ब्लॉक चेनिंग, खनन कठिनाई, ब्लॉक इनाम और चेन की अपरिवर्तनीयता को कवर करते हैं।

यह ट्रांसक्रिप्ट ऑस्टिन ग्रिफिथ द्वारा प्रकाशित मूल वीडियो ट्रांसक्रिप्ट (opens in a new tab) की एक सुलभ प्रति है। इसे पढ़ने में आसानी के लिए थोड़ा संपादित किया गया है।

समन्वय की समस्या (0:00)

सुप्रभात, हैप्पी बो-टाई फ्राइडे! यह ETH.BUILD ब्लॉकचेन पर केंद्रित है — वास्तव में बहुत बढ़िया चीज़। हम इस क्लाउन बोट में हैं, इसके लिए हमारी बिटकॉइन बो-टाई है। तो चलिए शुरू करते हैं।

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

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

ब्लॉक और नॉन्स (1:04)

तो इस लेजर के साथ, हम नेटवर्क से लेन-देन डाल रहे हैं। प्रत्येक व्यक्तिगत उपयोगकर्ता को अपना काम साबित करने के बजाय, हम प्रूफ-ऑफ-वर्क को लेन-देन के एक ब्लॉक में एब्स्ट्रैक्ट करने जा रहे हैं और एक खनिक को उस पर काम करने देंगे।

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

हम यहां कुछ काम कर रहे हैं — हमारे पास लेन-देन का एक यादृच्छिक सेट है, और हम नॉन्स को तब तक बदल रहे हैं जब तक कि हैश में एक अग्रणी शून्य (leading zero) न आ जाए। यदि आपने बीजान्टिन जनरलों के बारे में साइड क्वेस्ट देखा है, तो हमने इस अग्रणी शून्य को साबित करने के लिए काम की एक मनमानी मात्रा के रूप में चुना था। तो नॉन्स बस हर संख्या — 1, 2, 3, 4 — से होकर गुजरता है और जब हमें एक अग्रणी शून्य मिलता है, तो हम कहते हैं: यह एक वैध ब्लॉक है।

प्रूफ-ऑफ-वर्क कार्रवाई में (3:00)

यदि हम एक खनन किए गए ब्लॉक को लेते हैं, हैश निकालते हैं, और इसे एक हैश फ़ंक्शन में डालते हैं, तो हम साबित कर सकते हैं कि इसमें एक अग्रणी शून्य है — हम साबित कर सकते हैं कि इस ब्लॉक पर काम किया गया है।

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

ब्लॉक को एक साथ जोड़ना (3:56)

यहाँ तरकीब यह है: हम पुराने ब्लॉक को लेते हैं और इसे नए ब्लॉक से जोड़ते हैं। यदि हम संरचना को देखें, तो नए ब्लॉक में कोई लेन-देन नहीं है और एक खाली नॉन्स है, लेकिन इसमें लेन-देन के साथ एक पैरेंट है। पिछला ब्लॉक अगले ब्लॉक का हिस्सा होने जा रहा है, इसलिए हमारे पास एक पूरी चेन होगी।

हम लेन-देन पूल से नवीनतम लेन-देन डालते हैं और एक नॉन्स खोजने पर काम करते हैं। ब्लॉक नंबर 2 का खनन हो गया है — इन लेन-देन को वैध बनाने के लिए हमें 10 के नॉन्स की आवश्यकता थी। फिर हम वही काम करते हैं: पुराने ब्लॉक को जोड़ते हैं, नया लाते हैं, जो भी नवीनतम लेन-देन हैं उन्हें डालते हैं, और उस पर फिर से काम करते हैं। पर्याप्त प्रयासों के बाद हमें ब्लॉक 3 के लिए एक नॉन्स मिल गया। ब्लॉक 4 — वही प्रक्रिया, और हम आगे बढ़ते रहते हैं।

खनन कठिनाई (5:02)

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

अब हमारे पास 5 ब्लॉक की यह ब्लॉकचेन है। उन ब्लॉक में लेन-देन होते हैं और प्रत्येक पिछले वाले को संदर्भित करता है। प्रत्येक ब्लॉक को बनाने में कुछ मनमानी मात्रा में काम लगा, और काम की मात्रा कठिनाई द्वारा नियंत्रित होती है।

खनिक (6:46)

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

मुझे एक खनिक लाने दें और इसे थोड़ा तेज़ी से करने दें। खनिक हमारे ब्लॉक के लिए भी वही काम करने जा रहा है — यह पूल से आने वाले लेन-देन को लेता है, उन्हें ब्लॉक में डालता है, और बस उस पर तब तक काम करता है जब तक कि उसे एक वैध हैश नहीं मिल जाता।

खनिक थोड़ा अधिक कुशल है। वह खनन पर अधिक केंद्रित है। वह बेतरतीब ढंग से हैश फेंक रहा है — ठीक यही हमारा खनिक पहले कर रहा था, बस एब्स्ट्रैक्ट कर दिया गया था। हम इसे पृष्ठभूमि में चलते हुए देख सकते हैं, बस हैश पर काम कर रहा है। इसे मिल गया — ब्लॉक 6 का खनन हो गया है।

डबल स्पेंड और नेटवर्क प्रसार (10:00)

अब हमने डबल स्पेंडिंग (दोहरे खर्च) के इस मुद्दे और यहां तक कि नेटवर्क प्रसार के इस मुद्दे के बारे में बात की। जब हमारे पास एक लेजर और एक वितरित नेटवर्क होता है और कोई लेन-देन भेजता है, तो यह अलग-अलग लोगों तक अलग-अलग समय पर पहुंचता है। इसलिए, हमारे पास नेटवर्क पर दो खनिक हो सकते हैं जो दोनों एक ही समय पर एक ब्लॉक का खनन करते हैं, और उनमें अलग-अलग लेन-देन होते हैं।

उस समय प्रत्येक वैध होता है — दोनों ने प्रूफ-ऑफ-वर्क किया, दोनों में अग्रणी शून्य हैं। लेकिन वे दोनों कैनोनिकल (प्रामाणिक) नहीं हो सकते। वे दोनों सच नहीं हो सकते। इसलिए हमें नेटवर्क के लिए सर्वसम्मति पर पहुंचने के एक तरीके की आवश्यकता है कि कौन सी असली चेन है।

कई खनिक और सर्वसम्मति (12:27)

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

तो मैलोरी को पहले एक ब्लॉक मिल गया! बहुत बढ़िया। अब क्या होता है — क्योंकि हम एक वितरित नेटवर्क पर हैं, माइक को शायद अभी तक मैलोरी के ब्लॉक के बारे में पता भी न हो। वह अभी भी अपने संस्करण पर काम कर रहा हो सकता है। और अब माइक को भी एक मिल गया। तो हमारे पास दो वैध रास्ते हैं।

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

कॉइनबेस और ब्लॉक इनाम (15:33)

जब कोई खनिक किसी ब्लॉक का खनन करता है, तो हम कहते हैं: यहाँ वे सभी लेन-देन हैं जो हम चाहते हैं, यहाँ नॉन्स है, यहाँ पैरेंट है — लेकिन हम यह भी कहने जा रहे हैं कि यहाँ वह व्यक्ति है जिसने उस ब्लॉक का खनन किया है। इसे कॉइनबेस कहा जाता है — मुझे लगता है कि अब इस नाम की एक कंपनी है, लेकिन यह अलग है। हम इसे बस "खनिक" कहने जा रहे हैं। तो हमारे ब्लॉक को अब एक खनिक फ़ील्ड की आवश्यकता है।

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

ब्लॉक इनाम और प्रोत्साहन (16:52)

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

माइक अपने ब्लॉक को पैरेंट के रूप में सेट करने जा रहा है और अगले ब्लॉक पर काम करना शुरू कर देगा। मैलोरी भी यही करने जा रही है। और यह इस बात पर निर्भर करता है कि नेटवर्क पर और कौन किसका पक्ष लेता है। चूंकि हम खराब नेटवर्क वाले लोगों को दंडित नहीं करना चाहते हैं, मुझे पूरा यकीन है कि इथेरियम में हम अंकल ब्लॉक (uncle blocks) — वैध ब्लॉक जो सबसे लंबी चेन में जगह नहीं बना पाए — का भुगतान करते हैं क्योंकि वे अभी भी नेटवर्क को सुरक्षित करने में मदद कर रहे हैं।

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

ब्लॉकचेन को क्वेरी करना (18:30)

हम जो भी सबसे लंबी चेन है उससे बात कर सकते हैं। माइक अभी तक 7 पर नहीं गया है, इसलिए हम देख सकते हैं कि ऊंचाई अभी भी यहां 6 है। और हम लोगों के लिए बैलेंस की क्वेरी करने जैसे काम कर सकते हैं। तो हम बैलेंस पर हिट करते हैं — हमें क्या मिलता है? 524। तो हेइडी 524 या इस चेन के लिए जो भी मूल टोकन है, उस पर बैठी है। हम उसका नॉन्स देख सकते हैं, हम वह सब कुछ कर सकते हैं जो हम लेजर के साथ कर सकते थे, लेकिन अब हम ब्लॉक को स्टैक कर रहे हैं और वे ब्लॉक लेन-देन को होल्ड कर रहे हैं।

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

चेन की अपरिवर्तनीयता (19:51)

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

ठीक है अंत में, यदि हम ब्लॉक 3 पर वापस जाते हैं और कुछ बदलते हैं — कोई भी छोटा विवरण बदलते हैं — मैं यहाँ अंदर जाने वाला हूँ। फ्रैंक को कुछ लेन-देन है। मान लीजिए कि फ्रैंक के बजाय हम इसे ईव में बदल देते हैं। अब देखिए क्या होता है जब मैं ओके दबाता हूँ: उसे देखिए। मैंने ब्लॉक 3 का एक छोटा सा हिस्सा बदल दिया और अचानक पूरी चेन टूट जाती है। यह अब वैध नहीं है। अगर मैं इसे नेटवर्क पर प्रसारित करूँ, तो लोग मुझ पर हँसेंगे।

एक बार ब्लॉक का खनन हो जाने के बाद आप कुछ भी नहीं बदल सकते जब तक कि आप वापस न जाएं और जैसे-जैसे चीजें बदलती हैं, उन्हें फिर से माइन न करें। मुझे मूल रूप से खनिक को वापस यहाँ जोड़ना होगा और 7 ब्लॉक के साथ यहाँ तक माइक को पकड़ने के लिए पर्याप्त शक्ति रखने की कोशिश करनी होगी। यह बहुत, बहुत कठिन होगा। एक ब्लॉक जितना गहरा होता है, उससे वापस आना उतना ही कठिन होता है। तथ्य यह है कि यह ब्लॉक 3 यहाँ जहाँ कार्लोस ने बॉब को 84 भेजे — बॉब यह जानकर काफी सुरक्षित हो सकता है कि, कई ब्लॉक गहरे, वह पैसा निश्चित रूप से वहाँ है। ऐसा कोई तरीका नहीं है कि यहाँ कोई विवादास्पद फ़ोर्क होने वाला है — मैं ठोस हूँ। इसे ही हम अंतिमता कहते हैं।

सारांश (22:00)

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

ठीक है, हैप्पी बो-टाई फ्राइडे! यह ETH.BUILD पर ब्लॉकचेन था। मैं इसे सहेज लूंगा और इसे वहां रख दूंगा ताकि आप बस "लोड" दबा सकें और खेलने के लिए एक चेन प्राप्त कर सकें। हैप्पी फ्राइडे!

क्या यह पेज उपयोगी था?