जर आपण मागील काही वर्षांच्या ट्रेंडवर नजर टाकली तर, आम्ही ब्लॉकचेनबद्दल नेहमीच ऐकले आहे, परंतु विशिष्ट गोष्टींबद्दल जास्त नाही.
बिटकॉइन, इथरियम, डोगेकॉइन, मॅटिक आणि इतर यासारख्या क्रिप्टोकरन्सी ब्लॉकचेन तंत्रज्ञानावर अवलंबून असतात याची आम्हाला सर्वांना जाणीव आहे. ब्लॉकचेनने 2021 मध्ये असंख्य उद्योगांमध्ये क्रांती घडवून आणलेल्या महत्त्वपूर्ण घटनांचे नेतृत्व केले आणि नवीन यशाचा मार्ग मोकळा केला.
ब्लॉकचेन हे अशा प्रकारे डेटा साठवण्याचे साधन आहे जे संपादित करणे, हॅक करणे किंवा फसवणे कठीण किंवा अशक्य आहे. हे व्यवहारांचे डिजिटल लेजर आहे जे डुप्लिकेट केले जाते आणि ब्लॉकचेनच्या संपूर्ण संगणक प्रणाली नेटवर्कमध्ये पसरलेले असते.
हे ग्राउंड ब्रेकिंग डेटाबेस तंत्रज्ञान आहे जे व्यावहारिकपणे सर्व क्रिप्टोकरन्सींना सामर्थ्य देते. ब्लॉकचेन संपूर्ण नेटवर्कवर डेटाबेसच्या समान प्रती पसरवून सिस्टम हॅक करणे किंवा फसवणूक करणे आश्चर्यकारकपणे कठीण करते.
Bitcoin हा आता ब्लॉकचेनसाठी सर्वात प्रमुख वापर होत असताना, तंत्रज्ञान खूप विस्तृत ऍप्लिकेशन्स देऊ शकते.
अलिकडच्या वर्षांत क्रिप्टोकरन्सी आणि ब्लॉकचेन वाढत्या प्रमाणात लोकप्रिय होत आहेत आणि हा ट्रेंड सुरू राहण्याची अपेक्षा आहे.
या ट्यूटोरियलमध्ये आपण JavaScript सह एक साधी ब्लॉकचेन बनवू. हे तुम्हाला ब्लॉकचेन कसे कार्य करते याची मूलभूत माहिती देईल.
चला याला MelodyCoin म्हणूया आणि कृतीत सहभागी होऊ या!
ब्लॉक तयार करणे
सुरू करण्यासाठी, आम्ही एक नवीन JavaScript फाइल तयार करू ज्यामध्ये आम्ही आमचे सर्व कोड ठेवू.
चला याला main.js म्हणू या आणि ब्लॉकचेन आणि ब्लॉक्स कसे दिसावेत याच्या वर्णनाने सुरुवात करू.
एक ब्लॉक क्लास तयार करा आणि त्यास प्रारंभ करण्यासाठी ऑब्जेक्ट() { [नेटिव्ह कोड] } फंक्शन द्या.
नवीन ब्लॉक तयार करताना तुम्हाला तारीख आणि मागील ब्लॉकचा हॅश देणे आवश्यक आहे:
प्रत्येक मालमत्तेसाठी येथे व्याख्या आहेत:
- टाइमस्टॅम्प हे सूचित करते की ब्लॉक कधी बनवला गेला. तुम्ही जे फॉर्मेट निवडता ते तुम्ही वापरू शकता (या प्रकरणात, UNIX टाइमस्टॅम्प).
- तुम्ही या ब्लॉकशी कनेक्ट करू इच्छित असलेला कोणताही डेटा डेटा पॅरामीटरमध्ये समाविष्ट केला जाऊ शकतो. जर तुम्हाला क्रिप्टोकरन्सी तयार करायची असेल, तर तुम्ही व्यवहार डेटा जसे की प्रेषक/प्राप्तकर्ता आणि रक्कम येथे हलवू शकता.
- मागील हॅश ही एक स्ट्रिंग आहे जी आधीच्या ब्लॉकचा हॅश धारण करते. यातूनच ब्लॉक्सची साखळी निर्माण होईल, जी नंतर आमच्या ब्लॉकचेनची अखंडता प्रदान करण्यात महत्त्वाची ठरेल.
हॅश तयार करणे
प्रत्येक ब्लॉक आधीच्या ब्लॉकला जोडतो (अशा प्रकारे मागील हॅश गुणधर्म). म्हणजेच, प्रत्येक ब्लॉकला हॅश आवश्यक आहे. हॅश हे फिंगरप्रिंटसारखेच असते. प्रत्येक ब्लॉकसाठी ते वेगळे आहे.
ब्लॉकच्या हॅशची गणना हॅश फंक्शनद्वारे त्यातील सर्व सामग्री पास करून केली जाऊ शकते.
तर, सध्याच्या ब्लॉकच्या हॅशची गणना करणारे फंक्शन लागू करून सुरुवात करूया.
तर, ब्लॉक क्लास अंतर्गत, आम्ही calculateHash फंक्शन परिभाषित करतो:
तथापि, SHA256 हॅश JavaScript द्वारे समर्थित नाही आणि बाह्य लायब्ररीतून प्राप्त करणे आवश्यक आहे.
क्रिप्टो-जेएस हे एक विलक्षण पॅकेज आहे ज्यामध्ये अनेक हॅश अल्गोरिदमची सुरक्षित अंमलबजावणी समाविष्ट आहे.
मग आपण ते आपल्या main.js कोडमध्ये आयात करू शकतो.
आता आमच्याकडे आमचे calculateHash() फंक्शन आहे, ते आमच्या ब्लॉकच्या फंक्शनमध्ये वापरण्यासाठी ठेवूया:
ब्लॉक कसा दिसतो याचे वर्णन केल्यानंतर, ब्लॉकचेन कसा दिसावा हे आपण परिभाषित करू शकतो. चला तर मग नवीन वर्ग तयार करूया.
या परिस्थितीत, ब्लॉकचेन ही एक अतिशय साधी वस्तू आहे ज्यामध्ये प्रॉपर्टी चेन आहे. ही साखळीवरील सर्व ब्लॉक्स धारण करणारी अॅरे आहे.
आम्ही ब्लॉक्स जोडण्याआधी, आम्ही प्रथम "जेनेसिस ब्लॉक" म्हणून ओळखले जाणारे तयार केले पाहिजे. हा साखळीतील पहिला ब्लॉक आहे, आणि तो अद्वितीय आहे कारण तो आधीच्या ब्लॉककडे निर्देश करू शकत नाही (तो पहिला आहे!).
तर, जेनेसिस ब्लॉक तयार करण्यासाठी, मी आमच्या क्लासमध्ये createGenesisBlock () नावाचे फंक्शन जोडेन. आमच्या ब्लॉकचेन क्लासच्या ऑब्जेक्ट() { [नेटिव्ह कोड] } फंक्शनमध्ये परत.
आता आम्ही नवीन ब्लॉकचेन उदाहरण तयार केल्यावर जेनेसिस ब्लॉक समाविष्ट करू शकतो:
ब्लॉकचेन पद्धती
आता, आमच्या ब्लॉकचेन क्लासमध्ये पद्धती जोडू या ज्यामुळे आम्हाला नवीन ब्लॉक्स जोडणे आणि सर्वात अलीकडील ब्लॉक आणणे यासारख्या गोष्टी करता येतील.
getLatestBlock फंक्शन सर्वात मूलभूत आहे. हे फक्त साखळी अॅरेचे अंतिम सदस्य परत करते:
अॅडब्लॉक तंत्र थोडे अधिक गुंतलेले आहे.
आम्ही आमच्या साखळीमध्ये नवीन ब्लॉक जोडण्यापूर्वी, आम्ही प्रथम त्या ब्लॉकचे पूर्वीचे हॅश फील्ड योग्यरित्या सेट केले पाहिजे.
आमच्या साखळीत सर्वात अलीकडे जोडलेल्या ब्लॉकच्या हॅशवर सेट करणे आवश्यक आहे. आम्हाला नवीन ब्लॉकच्या हॅशची गणना करणे देखील आवश्यक आहे:
चाचणी
चला पाहुया आमचा MelodyCoin कसा बाहेर आला आहे.
हे पूर्ण करण्यासाठी ब्लॉकचेन उदाहरण तयार करा. चला आणखी काही ब्लॉक्स जोडूया:
आम्ही तिथे दोन नवीन ब्लॉक बनवले आहेत. आमचे ब्लॉकचेन सध्या कसे दिसते ते पाहू या.
MelodyCoin चार स्पेससह स्ट्रिंगिफाइड आणि फॉरमॅट केले जाईल:
ब्लॉकचेनची अखंडता सत्यापित करा
ब्लॉकचेन विलक्षण आहेत कारण एकदा ब्लॉक जोडल्यानंतर, उर्वरित साखळी अवैध केल्याशिवाय त्यात सुधारणा करता येत नाही.
तथापि, या अंमलबजावणीसह आमच्या ब्लॉकचेनची अखंडता तपासण्याची माझ्यासाठी कोणतीही पद्धत नाही.
आमच्या ब्लॉकचेनमध्ये isChainValid फंक्शन सादर करू. जर साखळी कायदेशीर असेल तर ती खरी परत येईल; अन्यथा, ते खोटे परत येईल:
चाचणी सचोटी
आम्ही आता आमच्या ब्लॉकचेनच्या अखंडतेची चाचणी घेऊ शकतो. आम्ही आता ते कार्यान्वित केल्यास, आमची साखळी खरी असल्याची पुष्टी होईल.
आता आपल्या ब्लॉकचेनमध्ये छेडछाड करण्याचा प्रयत्न करूया. चला ब्लॉक 2 बदलू आणि त्यातील मजकूर ओव्हरराइट करू (समजा आपण चार ऐवजी 100 नाणी हस्तांतरित केली आहेत).
जेव्हा आम्ही हे कार्यान्वित करतो, तेव्हा आम्ही पाहू शकतो की साखळीशी छेडछाड करण्याचा आमचा प्रयत्न सॉफ्टवेअर ओळखतो.
तथापि, आपण यावर विश्वास ठेवू शकता की माझ्यासाठी यात हस्तक्षेप करण्याची दुसरी पद्धत आहे. मी ब्लॉकमधील सामग्री बदलली परंतु हॅशची पुनर्गणना केली नाही. त्यामुळे तुम्ही हुशार होण्याचा प्रयत्न करू शकता आणि त्याच ब्लॉकच्या हॅशची पुनर्गणना करू शकता.
आमच्या छोट्या ब्लॉकचेन सेटअपमध्ये एवढेच होते! हे आम्हाला नवीन ब्लॉक्स जोडण्यास आणि साखळीतील डेटाशी छेडछाड शोधण्यास सक्षम करते.
आमच्या लहान ब्लॉकचेनमध्ये दोन समस्या आहेत ज्यांचे निराकरण करणे आवश्यक आहे:
- आधुनिक संगणक अत्यंत वेगवान आहेत आणि काही सेकंदात आमच्या साखळीत हजारो ब्लॉक जोडू शकतात. आमच्या ब्लॉकचेनवर कोणीही स्पॅमिंग करू नये अशी आमची इच्छा आहे.
- आमची ब्लॉकचेन अजूनही छेडछाड करण्यासाठी असुरक्षित आहे. तुम्ही ब्लॉकची सामग्री अद्ययावत करू शकता आणि नंतर खालील सर्व ब्लॉक्ससाठी हॅश (आणि आधीच्या हॅश) पुन्हा मोजू शकता. जरी तुम्ही त्यात गोंधळ घातला तरीही, तुम्हाला कायदेशीर साखळी मिळेल.
या चिंतांचे निराकरण करण्यासाठी, ब्लॉकचेन "कामाचा पुरावा" म्हणून ओळखले जाणारे तंत्र वापरतात. हा दृष्टिकोन वापरून ब्लॉक तयार करण्यासाठी तुम्ही मोठ्या प्रमाणात संगणकीय संसाधने वापरली आहेत हे तुम्ही दाखवून दिले पाहिजे. हे देखील म्हणतात खाण.
प्रूफ-ऑफ-वर्कसाठी ब्लॉकचा हॅश विशिष्ट प्रमाणात शून्याने सुरू होणे आवश्यक आहे. पण तुमचा हॅश या नियमात बसतो की नाही हे तुम्हाला कसे कळेल?
ब्लॉकची सामग्री त्याची हॅश निर्धारित करते. त्यामुळे आम्ही नेहमी समान हॅश मिळवतो, जर आम्ही सामग्री सुधारली नाही.
समाधान म्हणून प्रत्येक ब्लॉकमध्ये नॉन्स व्हॅल्यू जोडली पाहिजे. हा मूलत: काही यादृच्छिक डेटा आहे जो आम्ही आमच्या ब्लॉकचा हॅश पुरेशा शून्याने सुरू होईपर्यंत अपडेट करू शकतो. कारण तुम्ही हॅश फंक्शनचे आउटपुट बदलू शकत नाही, तुम्हाला अनेक भिन्न संयोजनांची चाचणी घ्यावी लागेल आणि सर्वोत्तमची आशा करावी लागेल.
ब्लॉकचेनमध्ये खाणकामाचा परिचय द्या
आमच्या ब्लॉक वर्गात एक नन्स समाविष्ट करून सुरुवात करूया. नॉन्स हे आमच्या ब्लॉकमधील एकल मूल्य आहे जे आम्ही ब्लॉकच्या हॅशवर परिणाम करण्यासाठी सुधारित करू शकतो.
आम्ही टाइमस्टॅम्प किंवा डेटा बदलण्यात अक्षम आहोत.
पुढे, एक mineBlock() फंक्शन लिहू जे ब्लॉकचे खरे खनन करेल. हे फंक्शन पॅरामीटर म्हणून आवश्यक अडचण पाठवले जाईल आणि आमच्या ब्लॉकचा हॅश पुरेशा शून्यांसह सुरू होईपर्यंत कार्यान्वित करणे सुरू राहील.
मी फक्त एक बेसिक while लूप बनवला आहे जो आमचा हॅश पुरेशा शून्याने सुरू होईपर्यंत चालेल. किती शून्य आवश्यक आहेत हे निर्धारित करण्यासाठी आम्ही अडचण वापरतो. 5 च्या अडचणीसह, आमचा हॅश 5 शून्यांनी सुरू झाला पाहिजे.
जेव्हा आपल्या हॅशमध्ये पुरेसे शून्य नसतात तेव्हा आपण नॉन्सला एकाने वाढवतो आणि हॅशची पुनर्गणना करतो. आणि जर आम्हाला अडचणांशी संबंधित हॅश आढळला तर आम्ही ते कन्सोलवर लॉग करू.
आम्हाला आणखी एक गोष्ट करायची आहे. आम्ही आमच्या कॅल्क्युलेटहॅश पद्धतीमध्ये नॉन्स व्हेरिएबल विचारात घेत नाही, म्हणून ते येथे आहे:
ब्लॉकचेन वर्ग
चला हा नवीन दृष्टीकोन आमच्या ब्लॉकचेन वर्गात चाचणीसाठी ठेवू आणि ते कसे होते ते पाहू.
सुरुवात करण्यासाठी, मी ऑब्जेक्ट() फंक्शनमध्ये आमच्या ब्लॉकचेनची अडचण परिभाषित करेन. आम्ही ते येथे परिभाषित करतो कारण आम्ही ते नंतर कुठेतरी वापरू शकतो.
ऍडब्लॉक फंक्शन नंतर अशा प्रकारे सुधारित केले पाहिजे की ते आमच्या साखळीमध्ये जोडण्यापूर्वी ब्लॉकची खाण करते.
ब्लॉकचेन वापरा
आता, प्रूफ-ऑफ-वर्क अल्गोरिदम वापरण्यासाठी आमची नवीन ब्लॉकचेन ठेवू. येथे, दोन console.log विधाने जोडा.
जेव्हा आम्ही हा कोड अंमलात आणतो, तेव्हा खाणकामाची प्रक्रिया आता विशेष वेगवान होत नाही हे आम्ही पाहू शकतो.
अल्गोरिदमला हॅशसह ब्लॉक्स व्युत्पन्न करण्यासाठी काही वेळ लागतो जे तीन शून्यांपासून सुरू होतात (अडचणीनुसार कॉन्फिगर केलेले).
त्यामुळे आमच्या मूलभूत ब्लॉकचेन सेटअपचा शेवट झाला.
प्रूफ-ऑफ-वर्क मेकॅनिझममुळे आमच्या ब्लॉकचेनमध्ये नवीन ब्लॉक्स किती लवकर जोडले जातील याचे आम्ही नियमन करू शकतो.
हे ब्लॉकचेनवरील सर्वात महत्त्वाचे सुरक्षा वैशिष्ट्य आहे. आणि आता तुम्हाला ते कसे कार्य करते हे समजले आहे, तुमचे स्वतःचे तयार करा!
प्रत्युत्तर द्या