সুচিপত্র:

ESP8266 বিটকয়েন মাইনার: 3 ধাপ
ESP8266 বিটকয়েন মাইনার: 3 ধাপ

ভিডিও: ESP8266 বিটকয়েন মাইনার: 3 ধাপ

ভিডিও: ESP8266 বিটকয়েন মাইনার: 3 ধাপ
ভিডিও: Duino Mining Rig with Esp8266 2024, জুলাই
Anonim
ESP8266 বিটকয়েন মাইনার
ESP8266 বিটকয়েন মাইনার

বিটকয়েনের দাম ক্রমাগত বৃদ্ধি পাচ্ছে এবং ESP8266 এর একটি দম্পতির সাথে সর্বদা প্লাগ ইন করা হয়েছে কিন্তু সত্যিই খুব বেশি কিছু করছে না আমি ভেবেছিলাম কেন একটি সোলো বিটকয়েন মাইনারের চেষ্টা এবং বাস্তবায়ন করব না। একটু পরীক্ষা -নিরীক্ষার পর আমি ESP8266 পেয়েছি ~ 1200 হ্যাশ/সেকেন্ড পর্যন্ত এবং ডিসেম্বর 2017 পর্যন্ত বিটকয়েন নেটওয়ার্ক প্রতি সেকেন্ডে প্রায় 12, 000, 000 টেরা হ্যাশ করছে (আপনি সর্বশেষ সংখ্যার জন্য blockchaininfo চেক করতে পারেন)।

সুতরাং সেই সংখ্যার উপর ভিত্তি করে আমাদের প্রতি দশ মিনিটে একটি ব্লক সফলভাবে খনন করার 1e16 এর মধ্যে 1 টি সুযোগ থাকবে যেখানে বর্তমানে একটি ব্লকের মূল্য 212,000 ডলার।, কিন্তু আপনি পুরাতন প্রবাদ জানেন, কেউ এটা জিততে হবে। গেট মেট এবং সুপার স্কুইটার ESP8266 উভয় প্রকল্পের সাথেই বেশিরভাগ সময় তারা কোন কাজ করছে না, তারা কেবল প্লাগ ইন করে এবং অনুরোধ বা ইনপুটগুলির জন্য অপেক্ষা করছে, তাই কেন তাদের কাছে এটি রাখবেন না এবং হয়তো কিছু মুদ্রা জিতবেন। ESP8266 এ ব্লকহেডারে ডবল SHA256 করা সম্ভব কিনা তা খুঁজে বের করার প্রথম ধাপ ছিল। বিটকয়েন বিশ্বে 'হ্যাশ' আসলে একটি দ্বৈত SHA256, কিন্তু আমরা শুধু এটিকে হ্যাশ হিসেবে উল্লেখ করব। যাইহোক চারপাশে একটু গুগল করার পরে আমি এই দুটি পৃষ্ঠা খুঁজে পেয়েছি যা হ্যাশিং পাওয়ার জন্য প্রয়োজনীয় সমস্ত তথ্য সরবরাহ করেছে।

1. ব্লক হ্যাশিং অ্যালগরিদম

2. বিটকয়েন মাইনিং কঠিন উপায়: অ্যালগরিদম, প্রোটোকল এবং বাইট

এটি লক্ষণীয় যে উপরের লিঙ্কগুলিতে বিশদ হিসাবে গেটওয়ার্ক প্রোটোকলটি বাতিল করা হয়েছে। এটি getblocktemplate প্রোটোকল দ্বারা প্রতিস্থাপিত হয়েছে যা একটি ব্লক হেডার নির্মাণের জন্য এটি আরও জটিল করে তোলে, বিশেষ করে আপনাকে আপনার নিজস্ব মার্কেল রুট তৈরি করতে হবে। সব নাইট ক্রিটির জন্য getblocktemplate উইকি দেখুন।

ধাপ 1: অ্যালগরিদম

অ্যালগরিদম
অ্যালগরিদম

আসুন ডানদিকে ঝাঁপ দাও, ESP8266 কোডটি ESP8266BitcoinMiner GitHub রেপোতে রয়েছে। আমি উপরের লিঙ্কগুলি থেকে সমস্ত তথ্য পুনর্বিবেচনা করতে যাচ্ছি না বরং কেবল মূল বিষয়গুলি তুলে ধরছি।

চার শিরোনাম_হেক্স

char header_hex হল ব্লক হেডার এবং ছয়টি ক্ষেত্র থেকে তৈরি করা হয়েছে, Version, hashPrevBlock, hashMerkleRoot, Time, Bits এবং Nonce সবগুলিকে সংযোজিত টগথার হেক্স নোটেশনে সামান্য এন্ডিয়ান মান হিসাবে। এটি কেবল উপরের লিঙ্ক থেকে অনুলিপি করা হয়েছিল কিন্তু প্রকৃতপক্ষে একটি সম্পূর্ণ খনিজ খনিতে আপনি সেই প্রতিটি ক্ষেত্রকে একটি জসন বস্তুর মধ্যে পাবেন এবং তারপরে এন্ডিয়ানেন্সটি বাছাই করতে হবে এবং প্রতি 10 মিনিটে এটিকে একসঙ্গে রাখতে হবে।

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

স্বাক্ষরবিহীন int i, mg, ng, rg; জন্য (mg = 0, i = 0; i '9'? - 'a' + 10: in - '0'; rg = in [i + 1]> '9'? in [i+1] - 'a'+10: [i+1] - '0'; out [mg] = (ng << 4) | rg;} ফিরে আসুন;}

hex_decode শিরোনাম_হেক্স স্ট্রিং নেয়, যার মধ্যে হেক্সাডেসিমাল অ্যাসিআই অক্ষর থাকে এবং SHA256 হ্যাশারের জন্য প্রস্তুত তাদের নিজ নিজ বাইট মান দিয়ে uint8_t হ্যাশবাইট [80] পপুলেট করে।

অকার্যকর হ্যাশ () {

hex_decode (header_hex, strlen (header_hex), hashbytes); স্বাক্ষরবিহীন দীর্ঘ শুরু = মাইক্রো (); hasher.doUpdate (হ্যাশবাইট, sizeof (হ্যাশবাইট)); বাইট হ্যাশ [SHA256_SIZE]; hasher.do ফাইনাল (হ্যাশ); hashagain.doUpdate (হ্যাশ, sizeof (হ্যাশ)); বাইট হ্যাশ 2 [SHA256_SIZE]; hashagain.do ফাইনাল (হ্যাশ 2); স্বাক্ষরবিহীন দীর্ঘ শেষ = মাইক্রো (); স্বাক্ষরবিহীন দীর্ঘ বদ্বীপ = সমাপ্ত - শুরু; Serial.println (বদ্বীপ); সিরিয়াল.প্রিন্ট ("বিগ এন্ডিয়ান:"); জন্য (বাইট i = 32; i> 0; i-) {if (hash2 [i-1] <0x10) {Serial.print ('0'); } সিরিয়াল.প্রিন্ট (হ্যাশ 2 [আই -1], হেক্স); } Serial.println (); Serial.print ("Little Endian:"); জন্য (বাইট i = 0; i <SHA256_SIZE; i ++) {যদি (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}

হ্যাশ কেবল হ্যাশবাইট দুবার হ্যাশ করে যদি হ্যাশগুলি শুধুমাত্র একটি SHA256 হ্যাশারে বাসা বাঁধা থাকে তবে এটি সম্ভবত কিছুটা দ্রুত হবে কিন্তু যাইহোক উপরের কোডটি দিয়ে ডাবল হ্যাশ করতে 832 ইউজকেন্ড লাগে এবং আপনি স্ক্রিনশট থেকে দেখতে পাবেন আমরা সঠিক হ্যাশ পেয়েছি।

ধাপ 2: একটি প্রাচীর এবং একটি সত্যিই বড় ব্লক আঘাত

একটি প্রাচীর এবং একটি সত্যিই বড় ব্লক আঘাত
একটি প্রাচীর এবং একটি সত্যিই বড় ব্লক আঘাত

সুতরাং যদি একটি হ্যাশ করতে 832 ইউজকেন্ড লাগে তবে আমরা 1 /0.000834 = 1201 হ্যাশ /সেকেন্ড করতে পারি।

শুধু স্পষ্ট করার জন্য আমরা ব্লক #125552 থেকে তথ্য নিয়েছি যেখানে আমরা ননস জানতাম, এটি ইতিমধ্যেই খনন করা হয়েছে এবং সেই তথ্যটি একটি পরীক্ষা কেস হিসাবে ব্যবহার করা হয়েছে যাতে আমরা ESP8266 এর সাথে একই হ্যাশ পেতে পারি। তাই একবার একটি সম্পূর্ণরূপে fleshed আউট খনির সঙ্গে একটি লাভ আপনি এলোমেলোভাবে nonce এ একটি অনুমান নিতে হবে, এর সাথে ব্লকহেডার হ্যাশ করুন এবং তারপর ফলাফলটি সেই ব্লকের অসুবিধার সাথে তুলনা করুন। যদি হ্যাশ অসুবিধা পূরণ করে, তবে এটি যাচাইকরণের জন্য নেটওয়ার্কে জমা দেওয়া হয়।

ঠিক আছে তাই খুব ভাল আমরা হ্যাশ করতে পারি, নিশ্চিত হার হার ভয়াবহ কিন্তু এটিকে লটারি হিসেবে দেখার সময় একটি অনুমান একটি অনুমান। এখানে কিন্তু, ঘনিষ্ঠ পরিদর্শন করার পরে এটি শীঘ্রই স্পষ্ট হয়ে যায় যে আপনি নেটওয়ার্কের সাথে যোগাযোগ করতে সক্ষম হওয়ার জন্য একটি সম্পূর্ণ নোড চালাতে হবে, যখন আপনি থামবেন এবং চিন্তা করবেন যে খনির আসলে কি।

সুতরাং যদি আপনি ডায়াগ্রামটি দেখেন তবে আপনি দেখতে পাবেন যে বিটকয়েন ডিমন যা বিটকয়েন কোরের একটি অংশ নেটওয়ার্ক এবং খনির মধ্যে যোগাযোগের যত্ন নেয়। এর প্রকৃত অর্থ হল আপনার একটি সার্ভারে বিটকয়েন কোর চালানো দরকার যাতে ESP8266 প্রতি 10 মিনিটে একটি নতুন ব্লকহেডার পেতে পারে এবং তারপর নেটওয়ার্কে জমা দিতে সক্ষম হয়।

আমি এটা চেষ্টা করিনি কিন্তু মনে হচ্ছে আপনাকে পুরো ব্লকচেইনটিকে সিঙ্ক্র করতে হবে প্রায় 130 গিগের আগে এটি নেটওয়ার্কের সাথে সঠিকভাবে যোগাযোগ করার আগে, উইকিতে তারা উল্লেখ করে যে সমস্ত কার্যকারিতা উপলব্ধ হওয়ার আগে কিছু পদক্ষেপ সম্পন্ন করতে হবে, তাই বেশ নিশ্চিত তারা এটাই বোঝাতে চায়।

তাই এটি আমাকে সেখানে টেনে নিয়ে গেল, একটি গবেষণার দৃষ্টিকোণ থেকে এটি সবই খুব আকর্ষণীয় ছিল এবং ছোট্ট ESP8266 কে সফলভাবে পরীক্ষার কেসটি দেখতে খুব ভাল লাগছিল কিন্তু কার্যত বলতে গেলে আমি অনেক লোককে কোর ডাউনলোড করতে দেখছি না, সম্পূর্ণ সিঙ্ক করছে ব্লকচেইন, সবকিছু আপ -টু -ডেট রাখা, নিরাপত্তা ইস্যুগুলির সাথে মিল রেখে ব্লক জেতার 1e16 -এর 1 টি সুযোগ। আমার জন্য অনেক দূরে একটি সেতু।

যাওয়ার আগে থেকে আমি জানতাম হ্যাশের হার ভয়ঙ্কর হবে কিন্তু কৌতূহল আমার থেকে আরও ভাল হয়েছে এবং আমাকে এটি দিতে হবে। একক খনির পরিবর্তে সেখানে একটি খনির পুল থাকতে পারে যা ইএসপি 8266 থেকে সরাসরি স্মারক প্রচেষ্টা ছাড়াই সংযুক্ত করা যেতে পারে বা আরও উপযুক্ত ক্রিপ্টোকারেন্সি থাকতে পারে। যদি আপনি খুঁজে পান তবে দয়া করে আমাকে জানান।

ধাপ 3: রেফারেন্স

1. ESP8266 বিটকয়েন মাইনার গিটহাব রিপোজিটরি

2. ESP8266 Crypto GitHub সংগ্রহস্থল

3. বিটকয়েন খনন কঠিন উপায়: অ্যালগরিদম, প্রোটোকল এবং বাইট

4. ব্লক হ্যাশিং অ্যালগরিদম

5. ব্লক 125552

প্রস্তাবিত: