लेखों की इस श्रृंखला में, हम एक सरलीकृत क्रिप्टोकरेंसी का निर्माण करेंगे जो 5 मिनट से भी कम समय में गोलांग में सरल ब्लॉकचेन कार्यान्वयन पर आधारित है। इस प्रोजेक्ट को बनाने के लिए आपको पहले गोलांग इंस्टॉल करना होगा। टेक्स्ट एडिटर के लिए आप कुछ भी उपयोग कर सकते हैं, यहां मैं विज़ुअल स्टूडियो कोड का उपयोग करता हूं।
क्या आपने इसे स्थापित किया? ठीक है, चलो यह करते हैं!
यदि आपने प्रोजेक्ट बनाया है तो एक फ़ाइल बनाएं mऐन.गो. ओके कोड की सुविधा देता है, सबसे पहले हम main.go से शुरू करेंगे आइए "ब्लॉकचेन" के स्ट्रक्चर ब्लॉक भाग से शुरू करें। ब्लॉकचेन में, यह बहुमूल्य जानकारी संग्रहीत करने वाले को ब्लॉक कर देता है। उदाहरण के लिए, बिटकॉइन स्टोर लेनदेन को ब्लॉक करता है, जो किसी भी क्रिप्टोकरेंसी का सार है। इसके अलावा, एक ब्लॉक में कुछ तकनीकी जानकारी होती है, जैसे उसका संस्करण, वर्तमान टाइमस्टैम्प और पिछले ब्लॉक का हैश। इस लेख में हम ब्लॉक को लागू नहीं करने जा रहे हैं जैसा कि ब्लॉकचेन या बिटकॉइन विनिर्देशों में वर्णित है, इसके बजाय, हम इसके सरलीकृत संस्करण का उपयोग करेंगे, जिसमें केवल महत्वपूर्ण जानकारी शामिल है। यह इस तरह दिखता है। यहां हमारे पास एक स्ट्रक्चर ब्लॉक है:
प्रकार ब्लॉक संरचना {टाइमस्टैम्प समय.समयलेन-देन []स्ट्रिंगप्रीव्हाश []बाइटहैश []बाइट}
Timestamp
वर्तमान टाइमस्टैम्प है (जब ब्लॉक बनाया जाता है), transactions
ब्लॉक में निहित वास्तविक मूल्यवान जानकारी है, prevhas
पिछले ब्लॉक के हैश को संग्रहीत करता है, और Hash
ब्लॉक का हैश है. बिटकॉइन विनिर्देशन में Timestamp
, prevhash
, तथा Hash
ब्लॉक हेडर हैं, जो एक अलग डेटा संरचना बनाते हैं, और लेनदेन (transaction
हमारे मामले में) एक अलग डेटा संरचना है। इसलिए हम उन्हें सरलता के लिए यहां मिश्रित कर रहे हैं।
तो हम हैश की गणना कैसे करते हैं? जिस तरह से हैश की गणना की जाती है वह ब्लॉकचेन की एक बहुत ही महत्वपूर्ण विशेषता है, और यह वह सुविधा है जो ब्लॉकचेन को सुरक्षित बनाती है। बात यह है कि हैश की गणना करना एक कम्प्यूटेशनल रूप से कठिन ऑपरेशन है, तेज़ कंप्यूटर पर भी इसमें कुछ समय लगता है (यही कारण है कि लोग बिटकॉइन माइन करने के लिए शक्तिशाली जीपीयू खरीदते हैं)। यह एक जानबूझकर किया गया वास्तुशिल्प डिज़ाइन है, जो नए ब्लॉकों को जोड़ना कठिन बना देता है, इस प्रकार उन्हें जोड़ने के बाद उनमें संशोधन को रोका जाता है। हम भविष्य के लेख में इस तंत्र पर चर्चा करेंगे और इसे लागू करेंगे।
अभी के लिए, हम केवल ब्लॉक फ़ील्ड लेंगे, उन्हें संयोजित करेंगे, और संयोजित संयोजन पर SHA-256 हैश की गणना करेंगे। आइए इसे अंदर करें Newhash
तरीका:
func न्यूहैश(समय समय.समय, लेन-देन []स्ट्रिंग, प्रीव्हाश []बाइट) []बाइट {इनपुट := संलग्न करें(प्रीव्हाश, समय.स्ट्रिंग()...)लेन-देन के लिए := श्रेणी लेन-देन {इनपुट = संलग्न करें (इनपुट, स्ट्रिंग (रूण (लेन-देन))...)}हैश := sha256.Sum256(इनपुट)रिटर्न हैश[:]}
इसके बाद, गोलांग सम्मेलन के बाद, हम एक फ़ंक्शन लागू करेंगे जो ब्लॉक के निर्माण और समापन को सरल बना देगा:
func ब्लॉक(लेनदेन []स्ट्रिंग, प्रीव्हाश []बाइट) *ब्लॉक {वर्तमान समय := समय.अभी()वापसी &ब्लॉक करें{टाइमस्टैम्प: समय.समय{},लेनदेन: लेनदेन,प्रीव्हाश: प्रीव्हाश,हैश: न्यूहैश (वर्तमान समय, लेनदेन, प्रीव्हाश),}}
हम एक प्रिंट फ़ंक्शन बनाना जारी रखते हैं। प्रिंट फ़ंक्शन लेनदेन करने वाले प्रत्येक ब्लॉक की सामग्री को प्रिंट करने के लिए उपयोगी है। यहाँ कोड है:
func प्रिंट(ब्लॉक *ब्लॉक) {fmt.Printf('ttime: %sn', ब्लॉक.टाइमस्टैम्प.स्ट्रिंग())fmt.Printf('tprevhash: %xn', ब्लॉक.prevhash)fmt.Printf('thash: %xn', ब्लॉक.हैश)}
और प्रिंट लेनदेन के लिए फ़ंक्शन लेनदेन:
func लेनदेन(ब्लॉक *ब्लॉक) {fmt.Println("tTransactions:")i के लिए, लेनदेन := रेंज ब्लॉक.लेनदेन {fmt.Printf('tt%v: %qn', i, transaction)}}
सभी आवश्यक कार्य पूरे हो जाने के बाद हम इसका उपयोग मुख्य कार्य में करेंगे:
func मुख्य () {रयान := []स्ट्रिंग{"रयांडी ने रेजा को 50 बीटीसी भेजा"}ब्लॉक_1 := ब्लॉक(रयान, []बाइट{})fmt.Println('यह हमारा पहला ब्लॉक है')प्रिंट(ब्लॉक_1)लेन-देन(ब्लॉक_1)जैक := []स्ट्रिंग{"जैक रेनॉल्ड को 20 बीटीसी भेजें"}ब्लॉक_2 := ब्लॉक(जैक, ब्लॉक_1.हैश)fmt.Println('यह हमारा दूसरा ब्लॉक है')प्रिंट(ब्लॉक_2)लेन-देन(ब्लॉक_2)}
ठीक है हमने सारा कोड लिखना समाप्त कर लिया है। आइए टर्मिनल में go run main.go टाइप करके इसे चलाएं। आउटपुट :
निष्कर्ष
हमने एक बहुत ही सरल ब्लॉकचेन प्रोटोटाइप बनाया: यह सिर्फ ब्लॉकों की एक श्रृंखला है, जिसमें प्रत्येक ब्लॉक का पिछले ब्लॉक से कनेक्शन होता है। हालाँकि वास्तविक ब्लॉकचेन बहुत अधिक जटिल है। हमारे ब्लॉकचेन में नए ब्लॉक जोड़ना आसान और तेज़ है, लेकिन वास्तविक ब्लॉकचेन में नए ब्लॉक जोड़ने के लिए कुछ काम की आवश्यकता होती है: ब्लॉक जोड़ने की अनुमति प्राप्त करने से पहले कुछ भारी गणना करनी होती है (इस तंत्र को प्रूफ़-ऑफ़-वर्क कहा जाता है)। इसके अलावा, ब्लॉकचेन एक वितरित डेटाबेस है जिसमें कोई भी निर्णय लेने वाला नहीं होता है। इस प्रकार, नेटवर्क के अन्य प्रतिभागियों द्वारा एक नए ब्लॉक की पुष्टि और अनुमोदन किया जाना चाहिए (इस तंत्र को सर्वसम्मति कहा जाता है)। और हमारे ब्लॉकचेन में अभी तक कोई लेन-देन नहीं हुआ है!
- "
- सब
- लेख
- लेख
- Bitcoin
- blockchain
- BTC
- निर्माण
- खरीदने के लिए
- कोड
- कंप्यूटर्स
- संबंध
- आम राय
- अंतर्वस्तु
- जारी रखने के
- cryptocurrency
- वर्तमान
- तिथि
- डाटाबेस
- डिज़ाइन
- संपादक
- फास्ट
- Feature
- फ़ील्ड
- प्रथम
- का पालन करें
- प्रपत्र
- समारोह
- भविष्य
- GV
- हैश
- यहाँ उत्पन्न करें
- कैसे
- hr
- HTTPS
- ia
- करें-
- IP
- IT
- मध्यम
- नेटवर्क
- अन्य
- स्टाफ़
- रोकने
- परियोजना
- सबूत के-कार्य
- रेंज
- रन
- कई
- सरल
- So
- प्रारंभ
- की दुकान
- भंडार
- तकनीकी
- पहर
- ट्रांजेक्शन
- लेनदेन
- W
- काम
- लिख रहे हैं