आमच्या लेखांच्या अपडेट्स मिळवण्यासाठी आमच्या फेसबुक पेजला नक्की Like करा: facebook.com/InMarathi.page
===
लेखक जर्मनीमध्ये सॉफ्टवेअर कन्सल्टंट असून आर्टिफिशियल इंटेलिजन्स आणि IoT एक्स्पर्ट आहेत.
===
मागच्या भागात आपण बघितलं क्रिप्टोकरन्सीची सुरुवात कशी झाली आणि त्याच्या रस्त्यातला सगळ्यात मोठा प्रॉब्लेम अर्थात डबल स्पेंडिंग म्हणजे काय. (मागच्या भागाची लिंक: बिटकॉईन (आणि क्रिप्टोकरन्सी) मागचे तंत्रज्ञान – भाग १ )
या भागात आपण बघूया क्रिप्टोकरन्सी मागचे तंत्रज्ञान अर्थात ब्लॉकचेन नेमके डबल स्पेंडिंग कसे सोडवते.
मागच्या भागात म्हणल्याप्रमाणे डबल स्पेंडिंग क्रिप्टोकरन्सीच्या रस्त्यातला सगळ्यात मोठा अडथळा होता. सातोशी नाकोमोतो या व्यक्ती किंवा व्यक्ती समूहाने २००८ मध्ये याविषयी एक श्वेत पत्रिका (white paper) लिहून या प्रॉब्लेम वर पहिल्यांदा ठोस उपाय सुचवला. तो उपाय म्हणजे ब्लॉकचेन. पण ब्लॉकचेन म्हणजे नेमके काय? आपण आधीच बोलल्याप्रमाणे कुठल्याही डिजिटल व्यवहाराचा लेखाजोखा ठेवण्यासाठी नोंदवही वापरल्या जाते. क्रिप्टोकरन्सीचे व्यवहार दोन व्यक्तींमध्ये (peer to peer) होत असून त्याच्यावर नजर ठेवणारी कुठली केंद्रीय संस्था नसते त्यामुळे ही नोंदवही नेमकी ठेवणार कोण हा प्रश्न असतो.
नाकोमोतो ने यावर सुचवलेला उपाय म्हणजे विकेंद्रित जालावर (Decentralized network) प्रत्येक नोड ने हा व्यवहारांचा हिशोब ठेवायचा. म्हणजे तुमचा त्या व्यवहाराशी संबंध असो वा नसो तुम्ही त्या हिशोबाची नोंद स्वतःच्या वहीत करून घ्यायची.
नेटवर्कवर असलेल्या प्रत्येका नोड मध्ये ह्या व्यवहाराची नोंद झाल्यानंतरच हा व्यवहार पूर्ण होऊ शकेल. यातल्या एकही नोडवर ह्या व्यवहाराची नोंद नसेल तर हा व्यवहार ग्राह्य मानल्या जाणार नाही.
म्हणजे एखाद्या क्रिप्टोकरन्सीचे (आपण या करन्सीला उदाहरणार्थ होन म्हणूया) १०० लोकांचे नेटवर्क आहे. माझा मित्र राम पण या नेटवर्कवर १०० लोकांपैकी आहे. आता समजा मला रामला होन याच चलनात काही पैसे द्यायचे आहेत तर ते मी कसे देणार? सगळ्यात पहिले मला ह्या नेटवर्कचा १०१वा नोड व्हावे लागेल. तो नोड झाल्यानंतर मी १० होन रामला देतोय अशी नोंद माझ्या नोंदवहीत करेन. (हे १० होन माझ्याकडे कुठून आले हा प्रश्न आपण तूर्तास बाजूला ठेवूया).
ही नोंद काय असेल? तर माझ्या खात्यातून १० होन कमी झाले आणि रामच्या खात्यात १० होन वाढले. मग ही नोंद मी एक डेटा पॅकेटमध्ये टाकून मी नेटवर्कच्या प्रत्येक नोडला पाठवेन. आता इथे प्रश्न येतो कि समजा इंटरनेट वरून ही नोंद पाठवताना कोणी मधल्या मध्ये नेटवर्क हॅक करून त्यात फेरफार केली तर? तर ती तशी फेरफार करता येऊ नये म्हणून हे पॅकेट एका एन्क्रिप्शन की (encryption key) ने एन्क्रिप्ट करून पाठवल्या जातं.
हे पॅकेट म्हणजे मुळात एन्क्रिप्शन की + व्यवहाराची नोंद असं असतं. हे एन्क्रिप्शन करायला दोन चाव्या लागतात. पब्लिक की आणि प्रायव्हेट की.
नेमकं काय आहे पब्लिक आणि प्रायव्हेट की?
प्रत्येक नोड कडे त्याच्या खात्याच्या दोन चाव्या असतात. पब्लिक आणि प्रायव्हेट. माझ्या नोडची प्रायव्हेट की फक्त माझ्याकडे असते. आणि पब्लिक की नेटवर्कवर प्रत्येक नोडकडे. माझ्या खात्याच्या प्रायव्हेट की ने जर मी एखादा व्यवहार एन्क्रिप्ट केला तर तो माझ्या पब्लिक की ने उघडून बघता येतो आणि खात्री करून घेता येते कि तो व्यवहार माझ्याकडूनच झालेला आहे. पण त्यात बदल करून तो पब्लिक की ने परत एन्क्रिप्ट करता येत नाही.
त्यामुळे नेटवर्क वरच्या कोणालाही त्या व्यवहारात बदल करता येत नाही. पण तो व्यवहार अस्सल आहे का नाही याची खात्री करून घेता येते. हा व्यवहार नेटवर्क वरच्या प्रत्येकाला बघता येत असल्यामुळे ह्यात संपूर्ण पारदर्शिता असते आणि म्हणूनच ब्लॉकचेन तंत्रज्ञानाला काळ्या पैश्या विरोधातलं मोठं अस्त्र समजल्या जात आहे.
आता आपण आधीच्या प्रश्नाकडे वळूया. माझ्याकडे हे १० होन आहेत याची खात्री नेटवर्क कशी करणार? दुसऱ्या शब्दात सांगायचे झाल्यास मी डबल स्पेंड करतोय का नाही हे नेटवर्कला कसे कळणार? ब्लॉकचेन माझ्या balance ची काहीच माहिती ठेवत नाही. अर्थात माझ्याकडे किती पैसे आहेत हे नोड वरच्या कोणालाच माहिती नसतं. नेटवर्क फक्त व्यवहारांची माहिती साठवत. पण नेटवर्कच्या प्रत्येका नोडवर असलेल्या नोंदवहीत (ज्याला ब्लॉकचेनच्या भाषेत लेजर म्हणतात) नेटवर्क वर होणाऱ्या प्रत्येका व्यवहाराची नोंद असते.
त्यामुळे एखाद्या नोड वर व्यवहाराची नोंद आली कि तो नोड सर्वप्रथम त्या व्यवहार करणाऱ्या व्यक्तीच्या सगळ्या नोंदी तपासून ही खात्री करून घेतो कि त्या व्यक्ती कडे तेवढ्या चलनाचे व्यवहार इनपुट झालेले आहेत.
म्हणजे मी रामला १० होन देण्याचा व्यवहार नेटवर्क वर सगळ्यांना पाठवल्यावर प्रत्येक नोड माझ्याशी संबंधित सगळे व्यवहार तपासेल आणि खात्री करून घेईल कि मला आत्तापर्यंत मिळालेल्या पैश्याचे व्यवहार आणि मी आत्तापर्यंत पाठवलेल्या पैश्याचे व्यवहार यांची वजाबाकी १० किंवा १० पेक्षा जास्त आहे. आणि ते तसे असल्यासच प्रत्येक नोड हा व्यवहार आपल्या लेजर अर्थात नोंदवहीत लिहून घेईल.तांत्रिक दृष्ट्या सगळं बरोबर वाटत असलं तरी यात एक त्रुटी आहे.
समजा माझ्यात आणि राम मध्ये व्यवहार आहे कि तो मला १० होन घेऊन TV विकणार आहे. मी त्याला १० होन पाठवले अर्थात या व्यवहाराची नोंद मी नेटवर्कवर सगळ्या नोड्स ना पाठवली, राम ने ती नोंद प्रोसेस केली आणि मला TV पाठवून दिला. पण काही नोड्स होते ज्यांचे इंटरनेट तेव्हा चालत नव्हते त्यामुळे त्यांना ती नोंद तोपर्यंत मिळाली नाही. त्यादरम्यान राम ने TV पाठवल्या पाठवल्या मी अजून एक व्यवहाराची नोंद नेटवर्क वर पाठवली ज्यात १० होन अजून तिसऱ्यालाच देऊन टाकले.
रामला माहित आहे कि ही नोंद खोटी आहे कारण माझ्याकडे आता १० होनच नाहीएत. पण नेटवर्कवर काही काळ गायब असणाऱ्या नोडला हे कसं कळणार कि या दोन्ही व्यवहारांपैकी कुठला व्यवहार आधी घडला? नोड जेव्हा परत नेटवर्क वर येईल तेव्हा त्याच्याकडे दोन व्यवहार असतील आणि त्यातला कुठला व्यवहार आधी झाला हे कळायचा त्या नोडकडे काहीही मार्ग नसेल. तुम्ही म्हणू शकता कि तो नोड पॅकेट वरच्या timestamp वरून ठरवू शकतो. पण हे timestamp खूपच सहजतेने बदलता येतात.
ह्या प्रॉब्लेमवर उपाय करण्यासाठी ब्लॉकचेन nodes agreement वापरते. अर्थात कुठलाही व्यवहाराला एकटं दुकट नेटवर्क वर टाकल्या जात नाही. बऱ्याच व्यवहारांना एकत्र करून एका ब्लॉक मध्ये टाकल्या जातं.
आणि हा ब्लॉक + त्याच्या आधीच्या ब्लॉकची लिंक नेटवर्क वर टाकल्या जाते. एका ब्लॉक मध्ये असलेले सगळे व्यवहार एका वेळेस घडले असे मानल्या जाते. जे व्यवहार अजून एखाद्या ब्लॉक मध्ये नाहीएत ते अनिश्चित समजल्या जातात. आणि अश्याप्रकारे नेटवर्क व्यवहारांचे आयोजन समय आधारित शृंखलेत (Time based chain) होते. याच कारणाने या तंत्रज्ञानाला ब्लॉकचेन असे नाव दिलेले आहे. आपल्या उदाहरणात बघायचे झाल्यास
माझे दोन्ही व्यवहार दोन वेगवेगळ्या ब्लॉक्स मध्ये असतील आणि नंतरचा ब्लॉक आधीच्या ब्लॉकच्या लिंक शिवाय बनू शकणार नाही. त्यामुळे हे ब्लॉक्स कुठल्या नोड वर कधी पोचतात याने फरक पडणार नाही त्यांच्या लिंक ने कुठला व्यवहार आधी झाला हे लगेच कळेल.
नेटवर्कवरचा प्रत्येक नोड व्यवहारांना एकत्र करून ब्लॉक बनवू शकतो आणि नेटवर्कला सुचवू शकतो कि पुढचा ब्लॉक कुठला असावा. प्रत्येकच नोड हे सुचवू शकत असल्यामुळे परत हा प्रश्न आला कि कुठला ब्लॉक पुढचा असावा हे कोणी ठरवायचं. विकेंद्रित पद्धत असल्यामुळे हा निर्णय कोणी केंद्रीय संस्था घेणार नाही हे स्पष्टच आहे. त्यामुळे हा प्रश्न सोडवण्यासाठी परत गणिताकडे वळते.
नेमका कसा सुटतो हा प्रश्न? आणि ब्लॉकचेन तंत्रज्ञानात bitcoin सारख्या चलनाचा निर्माण कसा होतो? bitcoin mining म्हणजे नेमके काय? या सगळ्या प्रश्नांकडे बघूया पुढच्या भागात.
===
आमचे इतर लेख वाचण्यासाठी क्लिक करा: InMarathi.com तसेच, आमच्या लेखांच्या अपडेट्स मिळवण्यासाठी आमच्या फेसबुक पेजला नक्की Like करा: facebook.com/InMarathi.page । Copyright © InMarathi.com | All rights reserved.