विषयसूची:

ESP8266 बिटकॉइन माइनर: 3 चरण
ESP8266 बिटकॉइन माइनर: 3 चरण

वीडियो: ESP8266 बिटकॉइन माइनर: 3 चरण

वीडियो: ESP8266 बिटकॉइन माइनर: 3 चरण
वीडियो: Bikin Penambang Koin Kripto Mini dengan NodeMCU ESP8266 2024, जुलाई
Anonim
ESP8266 बिटकॉइन माइनर
ESP8266 बिटकॉइन माइनर

बिटकॉइन की कीमत लगातार चढ़ती जा रही है और कुछ ESP8266 के साथ हमेशा प्लग इन किया जाता है, लेकिन वास्तव में बहुत कुछ नहीं किया जाता है, मैंने सोचा कि क्यों न एक सोलो बिटकॉइन माइनर को आजमाएं और लागू करें। थोड़े से प्रयोग के बाद मुझे ESP8266 ~ 1200 हैश/सेकंड तक मिला और दिसंबर 2017 तक बिटकॉइन नेटवर्क लगभग 12,000, 000 टेरा हैश प्रति सेकंड (आप नवीनतम नंबरों के लिए ब्लॉकचेनइन्फो की जांच कर सकते हैं) का प्रदर्शन कर रहे थे।

तो उन नंबरों के आधार पर हमारे पास हर दस मिनट में एक ब्लॉक को सफलतापूर्वक खनन करने का एक 1e16 मौका होगा जहां एक ब्लॉक वर्तमान में $ 212, 000 के लायक है। निश्चित रूप से यह लोट्टो टिकट खरीदने जैसा है, केवल जीतने की बहुत कम संभावना के साथ, लेकिन आप पुरानी कहावत जानते हैं, किसी को इसे जीतना है। गेट मेट और सुपर स्क्वर्टर ESP8266 दोनों परियोजनाओं के साथ अधिकांश समय वे कोई काम नहीं कर रहे हैं, वे बस प्लग इन हैं और अनुरोधों या इनपुट पर प्रतीक्षा कर रहे हैं, तो क्यों न उन्हें इसमें रखा जाए और शायद कुछ सिक्का जीतें। पहला कदम यह पता लगाने की कोशिश करना था कि क्या ईएसपी8266 पर ब्लॉकहेडर पर डबल SHA256 करना संभव है। बिटकॉइन की दुनिया में 'हैश' वास्तव में एक डबल SHA256 है, लेकिन हम इसे केवल हैश के रूप में संदर्भित करेंगे। वैसे भी थोड़ी सी गुगली करने के बाद मुझे ये दो पृष्ठ मिले जो हैशिंग प्राप्त करने के लिए आवश्यक सभी जानकारी प्रदान करते हैं।

1. ब्लॉक हैशिंग एल्गोरिथम

2. बिटकॉइन माइनिंग द हार्ड वे: एल्गोरिदम, प्रोटोकॉल और बाइट्स

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

चरण 1: एल्गोरिथ्म

एल्गोरिथ्म
एल्गोरिथ्म

आइए सीधे चलते हैं, ESP8266 कोड ESP8266BitcoinMiner GitHub रेपो पर है। मैं उपरोक्त लिंक्स से सभी सूचनाओं को दोबारा नहीं दोहराऊंगा, बल्कि केवल मुख्य बिंदुओं पर प्रकाश डालूंगा।

चार हैडर_हेक्स = 0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122bc7f42bc7f42b74d74df2

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

uint8_t* hex_decode(const char *in, size_t len, uint8_t *out){

अहस्ताक्षरित इंट मैं, मिलीग्राम, एनजी, आरजी; के लिए (मिलीग्राम = 0, मैं = 0; मैं '9'? में - 'ए' + 10: - '0' में; आरजी = में [i + 1]> '9'? में [i+1] - 'ए' + 10: में [i+1] - '0'; बाहर [मिलीग्राम] = (एनजी << 4) | आरजी; } वापसी; }

hex_decode हेडर_हेक्स स्ट्रिंग लेता है, जिसमें हेक्साडेसिमल ascii वर्ण होते हैं, और uint8_t हैशबाइट्स [80] को उनके संबंधित बाइट मानों के साथ SHA256 हैशर के लिए तैयार करता है।

शून्य हैश () {

hex_decode(header_hex, strlen(header_hex), हैशबाइट्स); अहस्ताक्षरित लंबी शुरुआत = माइक्रो (); हैशर.डूअपडेट (हैशबाइट्स, साइज़ोफ़ (हैशबाइट्स)); बाइट हैश [SHA256_SIZE]; हैशर.डोफ़ाइनल (हैश); हैशगैन.डूअपडेट (हैश, आकार (हैश)); बाइट हैश2 [SHA256_SIZE]; हैशगैन.डोफाइनल (हैश 2); अहस्ताक्षरित लंबे समय से समाप्त = माइक्रो (); अहस्ताक्षरित लंबा डेल्टा = समाप्त - प्रारंभ; Serial.println (डेल्टा); सीरियल.प्रिंट ("बिग एंडियन:"); के लिए (बाइट i=32; i > 0; i--){ if (hash2[i-1]<0x10) { Serial.print('0'); } सीरियल.प्रिंट (हैश2[i-1], हेक्स); } सीरियल.प्रिंट्लन (); सीरियल.प्रिंट ("लिटिल एंडियन:"); के लिए (बाइट i=0; i <SHA256_SIZE; i++){ अगर (हैश2<0x10) { सीरियल.प्रिंट ('0'); } सीरियल.प्रिंट (हैश2, हेक्स); } }

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

चरण 2: एक दीवार और वास्तव में एक बड़ा ब्लॉक मारना

एक दीवार और वास्तव में एक बड़ा ब्लॉक मारना
एक दीवार और वास्तव में एक बड़ा ब्लॉक मारना

तो अगर एक हैश करने में 832 यूसेकंड लगते हैं तो हम 1/0.000834 = 1201 हैश/सेकेंड कर सकते हैं।

बस स्पष्ट होने के लिए हमने ब्लॉक #१२५५५२ से जानकारी ली, जहां हम गैर को जानते थे, यह पहले से ही खनन किया गया है और यह सुनिश्चित करने के लिए कि हम ईएसपी ८२६६ के साथ एक ही हैश प्राप्त कर सकते हैं, यह सुनिश्चित करने के लिए एक परीक्षण मामले के रूप में उस जानकारी का उपयोग किया। तो एक बार पूरी तरह से बाहर की खान के साथ लाभ प्राप्त करने के बाद आप बेतरतीब ढंग से गैर पर अनुमान लगाएंगे, इसके साथ ब्लॉकहेडर हैश करें और फिर उस ब्लॉक के लिए कठिनाई के परिणाम की तुलना करें। यदि हैश कठिनाई को पूरा करता है, तो इसे सत्यापन के लिए नेटवर्क में जमा किया जाता है।

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

इसलिए यदि आप आरेख को देखते हैं तो आप देख सकते हैं कि बिटकॉइन डेमॉन जो कि बिटकॉइन कोर का एक हिस्सा है, नेटवर्क और माइनर के बीच संचार का ख्याल रखता है। इसका वास्तव में मतलब यह है कि आपको एक सर्वर पर बिटकॉइन कोर चलाने की आवश्यकता है ताकि ESP8266 हर 10 मिनट में एक नया ब्लॉकहेडर प्राप्त कर सके और फिर नेटवर्क पर वापस सबमिट कर सके।

मैंने इसकी कोशिश नहीं की है, लेकिन ऐसा लगता है कि नेटवर्क के साथ ठीक से संचार करने से पहले आपको पूरे ब्लॉकचेन को लगभग 130 गिग्स पर सिंक करना होगा, विकी में वे उल्लेख करते हैं कि सभी कार्यक्षमता उपलब्ध होने से पहले कुछ चरणों को पूरा करना होगा, इसलिए बहुत निश्चित है उनका यही मतलब है।

तो इसने मुझे वहाँ खींच लिया, एक शोध के दृष्टिकोण से यह सब बहुत दिलचस्प था और यह देखने के लिए बहुत अच्छा था कि थोड़ा ESP8266 सफलतापूर्वक परीक्षण के मामले को हैश कर रहा है, लेकिन व्यावहारिक रूप से मैं बहुत से लोगों को कोर डाउनलोड करते हुए नहीं देखता, पूरे को सिंक करता हूं ब्लॉकचैन, सब कुछ अप टू डेट रखते हुए, सुरक्षा मुद्दों को ध्यान में रखते हुए, ब्लॉक जीतने का 1e16 में से 1 मौका। मेरे लिए दूर का पुल।

शुरू से ही मुझे पता था कि हैश रेट भयानक होगा लेकिन जिज्ञासा ने मुझे बेहतर कर दिया और मुझे इसे छोड़ना पड़ा। एकल खनन के बजाय वहाँ एक खनन पूल हो सकता है जिसे बिना किसी बड़े प्रयास के सीधे ESP8266 से जोड़ा जा सकता है या कोई अन्य क्रिप्टोकरेंसी हो सकती है जो अधिक उपयुक्त हो। अगर आपको कोई मिल जाए तो कृपया मुझे बताएं।

चरण 3: संदर्भ

1. ESP8266 बिटकॉइन माइनर GitHub रिपोजिटरी

2. ESP8266 क्रिप्टो गिटहब रिपोजिटरी

3. बिटकॉइन कठिन तरीके से खनन करता है: एल्गोरिदम, प्रोटोकॉल और बाइट्स

4. ब्लॉक हैशिंग एल्गोरिथम

5. ब्लॉक 125552

सिफारिश की: