Სარჩევი:

ESP8266 ბიტკოინის მაღაროელი: 3 ნაბიჯი
ESP8266 ბიტკოინის მაღაროელი: 3 ნაბიჯი

ვიდეო: ESP8266 ბიტკოინის მაღაროელი: 3 ნაბიჯი

ვიდეო: ESP8266 ბიტკოინის მაღაროელი: 3 ნაბიჯი
ვიდეო: Duino Mining Rig with Esp8266 2024, ივლისი
Anonim
ESP8266 ბიტკოინის მაღაროელი
ESP8266 ბიტკოინის მაღაროელი

ბიტკოინის ფასი აგრძელებს ზრდას და რამდენიმე ESP8266 ყოველთვის ჩართულია, მაგრამ ნამდვილად არ აკეთებს ბევრს, ვიფიქრე რატომ არ ვცადო და განვახორციელო სოლო ბიტკოინის მაღაროელი. მცირეოდენი ექსპერიმენტის შემდეგ მივიღე ESP8266 ~ 1200 ჰეშ/წმ -მდე და 2017 წლის დეკემბრის მდგომარეობით ბიტკოინის ქსელი ასრულებდა წამში დაახლოებით 12, 000, 000 ტერა ჰეშს (შეგიძლიათ შეამოწმოთ ბლოკჩინინფო უახლესი ნომრებისთვის).

ამ რიცხვებზე დაყრდნობით ჩვენ გვექნება 1 1 in 16 შანსი წარმატებით მოვიპოვოთ ბლოკი ყოველ ათ წუთში, სადაც ბლოკი ამჟამად $ 212, 000 ღირს. რა თქმა უნდა, ეს ძალიან ჰგავს ლოტოს ბილეთის ყიდვას, მხოლოდ მოგების გაცილებით მცირე შანსს. მაგრამ თქვენ იცით ძველი გამონათქვამი, ვიღაცამ უნდა მოიგოს იგი. ორივე Gate Mate და Super Squirter ESP8266 პროექტებით უმეტეს დროს ისინი არ აკეთებენ რაიმე სამუშაოს, ისინი უბრალოდ ჩართულნი არიან და ელოდება მოთხოვნას ან შეყვანას. პირველი ნაბიჯი იყო მცდელობა და გაერკვია, შესაძლებელია თუ არა ორმაგი SHA256 შესრულება Blockheader– ზე ESP8266– ზე. ბიტკოინის სამყაროში 'ჰაში' რეალურად არის ორმაგი SHA256, მაგრამ ჩვენ მას უბრალოდ მოვიხსენიებთ როგორც ჰეშს. ყოველ შემთხვევაში, ცოტაოდენი გუგლის შემდეგ, აღმოვაჩინე ეს ორი გვერდი, რომელიც შეიცავს ყველა ინფორმაციას, რაც საჭიროა ჰაშინის მისაღებად.

1. ბლოკ ჰეშინგის ალგორითმი

2. ბიტკოინის მოპოვება რთული გზით: ალგორითმები, პროტოკოლები და ბაიტები

აღსანიშნავია, რომ getwork პროტოკოლი, როგორც ეს მოცემულია ზემოთ მოცემულ ბმულებში, მოძველებულია. ის შეიცვალა getblocktemplate პროტოკოლით, რაც ართულებს ბლოკის სათაურის შექმნას, კერძოდ თქვენ უნდა ააწყოთ თქვენი საკუთარი მერკლის ფესვი. ყველა საზიზღარი გრიპისთვის გადახედეთ getblocktemplate ვიკი.

ნაბიჯი 1: ალგორითმი

ალგორითმი
ალგორითმი

მოდით გადავიდეთ პირდაპირ, ESP8266 კოდი არის ESP8266BitcoinMiner GitHub repo– ში. მე არ ვაპირებ ყველა ინფორმაციის გადახედვას ზემოაღნიშნული ბმულებიდან, არამედ უბრალოდ გამოვყოფ ძირითად პუნქტებს.

char header_hex = "0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122bc7f5d74df2b9441a42a14695";

char header_hex არის ბლოკის სათაური და აგებულია ექვსი ველიდან, Version, hashPrevBlock, hashMerkleRoot, Time, Bits and the Nonce ყველა ერთმანეთთან შეხამებული, როგორც პატარა ენდიური მნიშვნელობები hex აღნიშვნებში. ეს უბრალოდ გადაწერილია ზემოთ მოცემული ბმულიდან, მაგრამ რეალურად სრულფასოვან მაღაროელში თქვენ მიიღებთ თითოეულ ველს json ობიექტში და შემდეგ უნდა დაალაგოთ ენდიანობა და ააწყოთ იგი ყოველ 10 წუთში.

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

ხელმოუწერელი int i, მგ, ng, rg; for (mg = 0, i = 0; i '9'? in - 'a' + 10: in - '0'; rg = in [i + 1]> '9'? in [i+1] - 'a'+10: in [i+1] - '0'; out [mg] = (ng << 4) | rg;} დაბრუნება გარეთ;}

hex_decode იღებს header_hex სტრიქონს, რომელიც შეიცავს თექვსმეტობით ასციუმის სიმბოლოებს და ავსებს uint8_t ჰეშბიტებს [80] მათი შესაბამისი ბაიტის მნიშვნელობებით, რომლებიც მზად არის SHA256 ჰეშისთვის.

void hash () {

hex_decode (header_hex, strlen (header_hex), ჰეშბიტები); ხელმოუწერელი გრძელი დაწყება = მიკრო (); hasher.doUpdate (ჰეშბიტები, ზომა (ჰეშბიტები)); ბაიტი ჰაში [SHA256_SIZE]; hasher.doFinal (ჰაში); hashagain.doUpdate (hash, sizeof (hash)); ბაიტი hash2 [SHA256_SIZE]; hashagain.do საბოლოო (hash2); ხელმოუწერელი გრძელვადიანი = micros (); ხელმოუწერელი გრძელი დელტა = დასრულდა - დაწყება; Serial.println (დელტა); Serial.print ("დიდი ენდიანი:"); for (byte i = 32; i> 0; i-) {if (hash2 [i-1] <0x10) {Serial.print ('0'); } Serial.print (hash2 [i-1], HEX); } Serial.println (); Serial.print ("პატარა ენდიანი:"); for (byte i = 0; i <SHA256_SIZE; i ++) {if (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}

hash უბრალოდ hashes ჰაიბაიტი ორჯერ (ორმაგი SHA256), ბეჭდავს useconds დასჭირდა და ამობეჭდავს შედეგად hash როგორც დიდი endian და პატარა endian. თუ ჰეშები განთავსებული იქნებოდა მხოლოდ ერთ SHA256 ჰეშში, ის ალბათ ცოტა უფრო სწრაფი იქნებოდა, მაგრამ ყოველ შემთხვევაში ზემოხსენებული კოდით ორმაგი ჰეშის შესასრულებლად 832 წამი სჭირდება და თქვენ შეგიძლიათ ნახოთ ეკრანის სურათიდან ჩვენ ვიღებთ სწორ ჰეშს.

ნაბიჯი 2: კედელზე დარტყმა და მართლაც დიდი ბლოკი

კედელზე დარტყმა და მართლაც დიდი ბლოკი
კედელზე დარტყმა და მართლაც დიდი ბლოკი

ასე რომ, თუ ერთი ჰეშის გაკეთებას 832 წამი სჭირდება, ჩვენ შეგვიძლია შევასრულოთ 1 /0.000834 = 1201 ჰეშ /წამი.

გასაგებად რომ ვთქვათ, ჩვენ ავიღეთ ინფორმაცია ბლოკიდან #125552, სადაც ჩვენ ვიცოდით არაფრისმთქმელი, ის უკვე დანაღმულია და გამოვიყენეთ ეს ინფორმაცია საცდელად, რათა დავრწმუნდეთ, რომ ჩვენ შეგვიძლია იგივე ჰაში მივიღოთ ESP8266– ით. ასე რომ, მას შემდეგ რაც სრულად ხორცშესხმული მომპოვებელი მოიპოვებს თქვენ შემთხვევით გამოიცანით არაფრისმთქმელი, მიაყენეთ მას ბლოკერი და შემდეგ შეადარეთ შედეგი ამ ბლოკის სირთულეს. თუ ჰაში აკმაყოფილებს სირთულეს, ის გადაეცემა ქსელს გადამოწმებისთვის.

კარგია, რომ ჩვენ შეგვიძლია შევასრულოთ ჰაში, რა თქმა უნდა, მაჩვენებელი საშინელია, მაგრამ როდესაც ლატარიას ვუყურებთ, ვარაუდი ვარაუდია. აქ არის მაგრამ, უფრო მჭიდრო შემოწმებისთანავე ცხადი ხდება, რომ თქვენ უნდა გაუშვათ სრული კვანძი, რომ შეძლოთ ქსელთან კომუნიკაცია, რაც აშკარაა, როდესაც გაჩერდებით და ფიქრობთ იმაზე, თუ რა არის რეალურად მაინინგი.

ასე რომ, თუ დიაგრამას გადახედავთ, ხედავთ, რომ ბიტკოინის დემონი, რომელიც არის ბიტკოინის ბირთვის ნაწილი, ზრუნავს ქსელსა და მაინერს შორის კომუნიკაციაზე. ეს ნამდვილად ნიშნავს იმას, რომ თქვენ უნდა გაუშვათ ბიტკოინის ბირთვი სერვერზე, რათა ESP8266- მა მიიღოს ახალი ბლოკდერი ყოველ 10 წუთში და შემდეგ შეძლოს ქსელში დაბრუნება.

მე არ მიცდია, მაგრამ, როგორც ჩანს, თქვენ მოგიწევთ მთელი ბლოკის ქსელის სინქრონიზაცია დაახლოებით 130 გიგაზე, სანამ ის სწორად დაუკავშირდება ქსელს, ვიკიში ისინი აღნიშნავენ, რომ გარკვეული ნაბიჯები უნდა დასრულდეს, სანამ ყველა ფუნქცია ხელმისაწვდომი იქნება, ასე რომ, დარწმუნებული ვარ ეს რას ნიშნავს

ასე რომ გამომიყვანა იქ, კვლევის თვალსაზრისით ეს ყველაფერი იყო ძალიან საინტერესო და საკმაოდ მაგარი იყო, რომ პატარა ESP8266 წარმატებით გააჩნდა საცდელ საქმეს, მაგრამ პრაქტიკულად რომ ვთქვა, მე ვერ ვხედავ ბევრ ადამიანს, ვინც გადმოწერს ბირთვს, მთლიანი სინქრონიზაციისას ბლოკჩეინი, ყველაფრის განახლება, უსაფრთხოების საკითხების დაცვა, ბლოკში მოგების 1 1-16 შანსი. ხიდი ჩემთვის შორს.

თავიდანვე ვიცოდი, რომ ჰაშის მაჩვენებელი საშინელი იქნებოდა, მაგრამ ცნობისმოყვარეობამ დამიარა და მომიწია წასვლა. სოლო მაინინგის ნაცვლად შეიძლება არსებობდეს სამთო აუზი, რომელიც შეიძლება დაუკავშირდეს პირდაპირ ESP8266– დან მონუმენტური ძალისხმევის გარეშე, ან შეიძლება იყოს სხვა კრიპტოვალუტა, რომელიც უფრო შესაფერისია. თუ რომელიმე იპოვით გთხოვთ შემატყობინოთ.

ნაბიჯი 3: მითითებები

1. ESP8266 Bitcoin Miner GitHub საცავი

2. ESP8266 კრიპტო GitHub საცავი

3. ბიტკოინის მოპოვება რთული გზით: ალგორითმები, პროტოკოლები და ბაიტები

4. დაბლოკვის Hashing ალგორითმი

5. ბლოკი 125552

გირჩევთ: