विषयसूची:
वीडियो: ESP8266 बिटकॉइन माइनर: 3 चरण
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:23
बिटकॉइन की कीमत लगातार चढ़ती जा रही है और कुछ 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
सिफारिश की:
बिटकॉइन की लाइव कीमत TTGO ESP32 प्राप्त करें: 10 कदम
बिटकॉइन लाइव मूल्य प्राप्त करें TTGO ESP32: इस ट्यूटोरियल में हम सीखेंगे कि TTGO ESP32 और Visuino का उपयोग करके USD और EUR में बिटकॉइन की वर्तमान कीमत कैसे प्राप्त करें। वीडियो देखें। (नीचे डाउनलोड करने के लिए नई अपडेट की गई फ़ाइल!)
ग्राफ के साथ बिटकॉइन टिकर: 8 कदम
ग्राफ के साथ बिटकॉइन टिकर: मैंने इसे बीटीसी मूल्य टिकर के लिए एक परियोजना के आधार पर बनाया है, जो मूल रूप से ब्रायन लफ द्वारा लिखित Coinmarketcap.com से मूल्य की जानकारी प्राप्त करता है। उन्होंने ESP8266 का उपयोग किया, जो एक Arduino संगत बोर्ड है जो बिल्ट इन वाईफाई के साथ आता है। जैसा कि उन्होंने वर्णन किया है
Arduino Uno के साथ ध्वनिक उत्तोलन चरण-दर-चरण (8-चरण): 8 चरण
Arduino Uno के साथ ध्वनिक उत्तोलन चरण-दर-चरण (8-चरण): अल्ट्रासोनिक ध्वनि ट्रांसड्यूसर L298N डीसी महिला एडाप्टर बिजली की आपूर्ति एक पुरुष डीसी पिन के साथ Arduino UNOBreadboardयह कैसे काम करता है: सबसे पहले, आप Arduino Uno पर कोड अपलोड करते हैं (यह डिजिटल से लैस एक माइक्रोकंट्रोलर है और कोड (C++) कन्वर्ट करने के लिए एनालॉग पोर्ट
रास्पबेरी पाई पर चल रहा बिटकॉइन जैसा क्रिप्टो: 5 कदम
रास्पबेरी पाई पर चल रही बिटकॉइन जैसी क्रिप्टोकरंसी: नोड चलाने के निर्देश। यूएस-ओएस ऑपरेटिंग सिस्टम रास्पियन से बना है जो यूएस-क्रिप्टोप्लेटफॉर्म पैकेज चला रहा है। आपको शामिल होने के लिए अनुमति मांगने की जरूरत नहीं है। बस इन सरल निर्देशों का पालन करें और हर मिनट क्रिप्टोक्यूरेंसी कमाने वाला एक नोड चलाएं
डेल डाइमेंशन 4300 - 5000 सीरीज के साथ एक माइनर डिज़ाइन फॉल्ट को ठीक करना: 5 कदम
डेल डाइमेंशन 4300 - 5000 सीरीज़ के साथ एक माइनर डिज़ाइन फॉल्ट को ठीक करना: इसलिए मैं अपने डेल डाइमेंशन 5000 के अंदर घूम रहा हूं, यह तय करते हुए कि मुझे रैम अपग्रेड के लिए क्या करना चाहिए, क्योंकि प्रोसेसर तेज है और डेल्स मोबोस नहीं हैं ओवरक्लॉक करने योग्य या वह परिवर्तनशील। मैंने सीपीयू और आर के लिए बड़े पैमाने पर हीट सिंक पर अपना हाथ जला दिया