Përmbajtje:

ESP8266 Minator Bitcoin: 3 hapa
ESP8266 Minator Bitcoin: 3 hapa

Video: ESP8266 Minator Bitcoin: 3 hapa

Video: ESP8266 Minator Bitcoin: 3 hapa
Video: This is the largest USB Bitcoin Mining Setup in the world! |#Shorts | How Much? 2024, Korrik
Anonim
ESP8266 Minator Bitcoin
ESP8266 Minator Bitcoin

Me çmimin e Bitcoin që vazhdon të rritet dhe me një çift të ESP8266 gjithmonë të kyçur, por duke mos bërë shumë, unë mendova pse të mos provoja dhe të zbatoja një Minator Solo Bitcoin. Pas pak eksperimentesh mora ESP8266 deri në 1200 has hash/sek dhe në dhjetor 2017 rrjeti Bitcoin po performonte rreth 12, 000, 000 tera hash në sekondë (mund të kontrolloni blockchaininfo për numrat e fundit).

Në bazë të atyre numrave ne do të kishim një shans 1 në 1e16 për të nxjerrë me sukses një bllok çdo dhjetë minuta ku një bllok aktualisht vlen 212,000 dollarë. Sigurisht që është shumë si të blesh një biletë loto, vetëm me një shans shumë më të vogël për të fituar, por ju e dini thënien e vjetër, dikush duhet ta fitojë atë. Me të dy projektet Gate Mate dhe Super Squirter ESP8266 shumicën e kohës ata nuk janë duke bërë asnjë punë, ata janë thjesht të kyçur dhe presin për kërkesat ose inputet, kështu që pse të mos i vendosni ato dhe ndoshta të fitoni ndonjë monedhë. Hapi i parë ishte të provosh dhe të kuptosh nëse ishte madje e mundur të kryesh një SHA256 të dyfishtë në Blockheader në një ESP8266. Në botën e Bitcoin, 'hash' është në fakt një SHA256 i dyfishtë, por ne thjesht do t'i referohemi atij si hash. Gjithsesi, pas një kërkimi të vogël në Google, gjeta këto dy faqe të cilat siguronin të gjitha informacionet e nevojshme për të marrë hashing.

1. Algoritmi i Block Hashing

2. Minierat e Bitcoin në mënyrën më të vështirë: algoritmet, protokollet dhe bajtët

Vlen të përmendet se protokolli i punës, siç është detajuar në lidhjet e mësipërme, është zhvlerësuar. It'sshtë zëvendësuar me protokollin getblocktemplate i cili e bën pak më të komplikuar ndërtimin e një header bllok, veçanërisht ju duhet të ndërtoni rrënjën tuaj merkle. Për të gjitha gjërat e zymta, shikoni wiki getblocktemplate.

Hapi 1: Algoritmi

Algoritmi
Algoritmi

Le të hyjmë menjëherë, kodi ESP8266 është në repon ESP8266BitcoinMiner GitHub. Unë nuk do të rishikoj të gjithë informacionin nga lidhjet e mësipërme, por përkundrazi thjesht do të theksoj pikat kryesore.

char header_hex = "0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122bc7f5d74df2b9441a42a14695";

char header_hex është titulli i bllokut dhe është ndërtuar nga gjashtë fusha, Version, hashPrevBlock, hashMerkleRoot, Time, Bits dhe Nonce të gjitha të bashkuara së bashku si vlera të vogla endiane në shënimin gjashtëkëndësh. Kjo sapo u kopjua nga lidhja e mësipërme, por në një minator aktual plotësisht të plotë ju do të merrni secilën nga ato fusha në një objekt json dhe më pas do të duhet të zgjidhni endianitetin dhe ta vendosni atë së bashku në fluturim çdo 10 minuta.

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

pa shenjë int i, mg, ng, rg; për (mg = 0, i = 0; i '9'? në - 'a' + 10: në - '0'; rg = në [i + 1]> '9'? në [i+1] - 'a'+10: në [i+1] - '0'; jashtë [mg] = (ng << 4) | rg;} kthehu jashtë;}

hex_decode merr vargun header_hex, i cili përmban karaktere ascii heksadecimal dhe mbush popullatën e hashbytes uint8_t [80] me vlerat e tyre përkatëse të bajtit gati për hasher SHA256.

void hash () {

dexode hex (header_hex, strlen (header_hex), hashbytes); fillimi i gjatë i panënshkruar = mikros (); hasher.doUpdate (hashbytes, sizeof (hashbytes)); byte hash [SHA256_SIZE]; hasher.doFinal (hash); hashagain.doUpdate (hash, sizeof (hash)); byte hash2 [SHA256_SIZE]; hashagain.doFinal (hash2); i panënshkruar me fund të gjatë = mikros (); delta e gjatë e panënshkruar = përfundoi - fillimi; Serial.println (delta); Serial.print ("Big Endian:"); për (byte i = 32; i> 0; i-) {if (hash2 [i-1] <0x10) {Serial.print ('0'); } Serial.print (hash2 [i-1], HEX); } Serial.println (); Serial.print ("Endiani i Vogël:"); për (byte i = 0; i <SHA256_SIZE; i ++) {if (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}

hash thjesht i hash hasbytes dy herë (SHA256 të dyfishtë), printon lidhjet e përdorimit që u deshën dhe printon hashin rezultues si një endian të madh dhe një endian të vogël. Nëse hashet do të ishin të futura në vetëm një hasher SHA256, ndoshta do të ishte pak më e shpejtë, por gjithsesi me kodin e mësipërm duhen 832 sekonda përdorimi për të kryer hash -in e dyfishtë dhe ju mund të shihni nga pamja e ekranit që marrim hash -in e duhur.

Hapi 2: Goditja në një mur dhe një bllok vërtet i madh

Goditja në një mur dhe një bllok vërtet i madh
Goditja në një mur dhe një bllok vërtet i madh

Pra, nëse duhen 832 lidhje përdorimi për të bërë një hash, ne mund të kryejmë 1 /0.000834 = 1201 hashes /sek.

Vetëm për të qenë të qartë ne morëm informacionin nga blloku #125552 ku e njihnim nonce, ai tashmë është minuar dhe e përdorim atë informacion si një rast testimi për t'u siguruar që mund të marrim të njëjtin hash me ESP8266. Pra, një herë një fitim me një minator të mishit plotësisht ju do të merrni rastësisht një supozim për nonce, hash blockheader me të dhe pastaj krahasoni rezultatin me vështirësinë për atë bllok. Nëse hash plotëson vështirësinë, atëherë i paraqitet rrjetit për verifikim.

Ok pra është e mrekullueshme që ne mund të kryejmë hash, sigurisht që norma është e tmerrshme, por kur e shikoni atë si llotari një supozim është një supozim. Këtu është, por, pas një inspektimi më të afërt, së shpejti bëhet e qartë që ju duhet të drejtoni një nyje të plotë për të qenë në gjendje të komunikoni me rrjetin, diçka e qartë kur ndaloni dhe mendoni se çfarë është miniera në të vërtetë.

Pra, nëse shikoni diagramin mund të shihni se demoni i bitcoin i cili është pjesë e bërthamës së bitcoin kujdeset për komunikimin midis rrjetit dhe minatorit. Çfarë do të thotë kjo me të vërtetë është se ju duhet të drejtoni bërthamën Bitcoin në një server në mënyrë që ESP8266 të marrë një bllokues të ri çdo 10 minuta dhe më pas të jetë në gjendje të paraqitet përsëri në rrjet.

Unë nuk e kam provuar, por duket se do të duhej të sinkronizosh të gjithë blockchain -in në rreth 130 Gigs para se të komunikonte siç duhet me rrjetin, në wiki ata përmendin hapa të caktuar që duhet të përfundojnë para se të jetë i disponueshëm i gjithë funksionaliteti, pra mjaft i sigurt kjo është ajo që ata nënkuptojnë.

Kështu që më tërhoqi atje, nga pikëpamja e hulumtimit ishte gjithçka shumë interesante dhe ishte shumë mirë të shihje ESP8266 -in e vogël të ketë hash rastin e provës, por praktikisht nuk shoh shumë njerëz që shkarkojnë bërthamën, duke sinkronizuar të gjithë blockchain, duke mbajtur gjithçka të përditësuar, duke vazhduar me çështjet e sigurisë të gjitha për një shans 1 në 1e16 për të fituar bllokun. Një urë për larg për mua.

Që nga fillimi e dija se shkalla e hash -it do të ishte e tmerrshme, por kurioziteti më bëri më të mirë dhe më duhej ta lëshoja. Në vend të minierave solo mund të ketë një pishinë minierash që mund të lidhet drejtpërdrejt nga ESP8266 pa një përpjekje monumentale ose mund të ketë një kriptovalutë tjetër që është më e përshtatshme. Nëse gjeni njërën ose tjetrën, ju lutem më tregoni.

Hapi 3: Referencat

1. Depoja ESP8266 Bitcoin Miner GitHub

2. Depoja ESP8266 Crypto GitHub

3. Minierat e Bitcoin në rrugën e vështirë: algoritmet, protokollet dhe bajtët

4. Algoritmi i Block Hashing

5. Blloku 125552

Recommended: