Orodha ya maudhui:

ESP8266 Bitcoin Miner: 3 Hatua
ESP8266 Bitcoin Miner: 3 Hatua

Video: ESP8266 Bitcoin Miner: 3 Hatua

Video: ESP8266 Bitcoin Miner: 3 Hatua
Video: Сроки окупаемости Arduino в майнинге #mining 2024, Novemba
Anonim
ESP8266 Mchimbaji wa Bitcoin
ESP8266 Mchimbaji wa Bitcoin

Pamoja na bei ya Bitcoin kuendelea kupanda na kwa aina kadhaa za ESP8266 siku zote zimeingia lakini sio kufanya sana nilifikiri kwanini usijaribu kutekeleza Solo Bitcoin Miner. Baada ya kujaribu kidogo nikapata ESP8266 hadi ~ 1200 hashes / sec na mnamo Desemba 2017 mtandao wa Bitcoin ulikuwa ukifanya karibu 12, 000, 000 tera hashes kwa sekunde (unaweza kuangalia blockchaininfo kwa nambari za hivi karibuni).

Kwa hivyo kulingana na nambari hizo tutakuwa na nafasi 1 kwa 1e16 ya kufanikiwa kuchimba kizuizi kila dakika kumi ambapo kizuizi kwa sasa kina thamani ya $ 212, 000. Hakika ni kama kununua tikiti ya lotto, tu na nafasi ndogo sana ya kushinda, lakini unajua msemo wa zamani, lazima mtu kushinda. Pamoja na miradi ya Gate Mate na Super Squirter ESP8266 mara nyingi haifanyi kazi yoyote, wameingizwa tu na kusubiri ombi au pembejeo, kwa nini usiweke kwa hiyo na labda ushinde pesa. Hatua ya kwanza ilikuwa kujaribu kujua ikiwa inawezekana kufanya SHA256 mara mbili kwenye Blockheader kwenye ESP8266. Katika ulimwengu wa Bitcoin 'hash' ni SHA256 mara mbili, lakini tutaiita tu kama hash. Wakati wowote baada ya kuzunguka kidogo nikapata kurasa hizi mbili ambazo zilitoa habari zote zinazohitajika kupata hashing.

1. Zuia Hashing algorithm

2. Uchimbaji wa Bitcoin kwa njia ngumu: algorithms, itifaki na ka

Ni muhimu kutambua kwamba itifaki ya kupata kazi, kama ilivyoelezewa kwenye viungo hapo juu, imekataliwa. Imebadilishwa na itifaki ya getblocktemplate ambayo inafanya kuwa ngumu zaidi kujenga kichwa cha kuzuia, haswa lazima ujenge mzizi wako wa merkle. Kwa ujanja wote nitty angalia getblocktemplate wiki.

Hatua ya 1: Algorithm

Algorithm
Algorithm

Wacha tuingie ndani, nambari ya ESP8266 iko kwenye repoti ya ESP8266BitcoinMiner GitHub. Sitabadilisha habari zote kutoka kwa viungo hapo juu lakini nionyeshe tu alama kuu.

char header_hex = "0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122bc7f5d74df2b9441a42a14695";

char header_hex ni kichwa cha vizuizi na imejengwa kutoka kwa sehemu sita, Toleo, hashPrevBlock, hashMerkleRoot, Muda, Bits na Nonce zote zimekusanywa pamoja kama maadili kidogo ya endian katika nukuu ya hex. Hiyo ilinakiliwa tu kutoka kwa kiunga hapo juu lakini katika mchimbaji kamili kabisa utapokea kila uwanja huo kwa kitu cha json na kisha utalazimika kutatua uvumilivu na kuiweka juu ya nzi kila dakika 10.

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

unsigned int i, mg, ng, rg; kwa (mg = 0, i = 0; i '9'? katika - 'a' + 10: in - '0'; rg = in [i + 1]> '9'? in [i + 1] - 'a' + 10: in [i + 1] - '0'; nje [mg] = (ng << 4) | rg;} kurudi nje;}

hex_decode inachukua kichwa cha kichwa_hex, ambacho kina wahusika wa hexadecimal ascii, na hujaza hashtby_t uht8_t [80] na maadili yao ya baiti tayari kwa hasher ya SHA256.

utupu hash () {

hex_decode (kichwa_hex, strlen (kichwa_hex), hashbytes); kuanza kusainiwa kwa muda mrefu = micros (); hasher.doUpdate (hashbytes, sizeof (hashbytes)); baiti hashi [SHA256_SIZE]; hasher.do Mwisho (hash); hashagain.doUpdate (hash, sizeof (hash)); byte hash2 [SHA256_SIZE]; hashagain.do Mwisho (hash2); unsigned long ending = micros (); delta ndefu isiyosainiwa = kumalizika - kuanza; Serial.println (delta); Serial.print ("Big Endian:"); kwa (byte i = 32; i> 0; i -) {ikiwa (hash2 [i-1] <0x10) {Serial.print ('0'); } Serial.print (hash2 [i-1], HEX); } Serial.println (); Serial.print ("Endian mdogo:"); kwa (byte i = 0; i <SHA256_SIZE; i ++) {if (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}

hash inasafisha hashbytes mara mbili (mara mbili SHA256), inachapisha matumizi ambayo ilichukua na kuchapisha hash inayosababisha kama mpishi mkubwa na mdogo. Ikiwa hashes zingewekwa katika moja tu ya SHA256 hasher labda ingekuwa wepesi kidogo lakini kwa vyovyote na nambari iliyo hapo juu inachukua utumiaji wa 832 kufanya hash mara mbili na unaona kutoka kwenye skrini tunapata hash sahihi.

Hatua ya 2: Kupiga Ukuta na Kizuizi Kubwa kabisa

Kupiga Ukuta na Kizuizi Kikubwa Kweli
Kupiga Ukuta na Kizuizi Kikubwa Kweli

Kwa hivyo ikiwa inachukua sekunde 832 kufanya hashi moja tunaweza kufanya 1 / 0.000834 = 1201 hashes / sec.

Ili kuwa wazi tu tulichukua habari kutoka kwa block # 125552 ambapo tulijua nonce, tayari imechimbwa na ilitumia habari hiyo kama kesi ya kujaribu kuhakikisha tunaweza kupata hash sawa na ESP8266. Kwa hivyo mara tu kupata faida na mchimbaji wa nyama kamili utachukua nadhani kwa nonce, hashi kichwa cha habari na kisha kulinganisha matokeo na ugumu wa kizuizi hicho. Ikiwa hashi inakidhi ugumu, basi huwasilishwa kwa mtandao ili uthibitishwe.

Ok hivyo hiyo ni nzuri tunaweza kufanya hash, hakika kiwango ni mbaya lakini wakati wa kukiangalia kama bahati nasibu ni nadhani. Hapa kuna, lakini ukichunguzwa kwa karibu hivi karibuni inakuwa wazi unahitaji kuwa na nodi kamili ili kuweza kuwasiliana na mtandao, ikiwa wazi wakati unasimama na kufikiria juu ya madini ni nini.

Kwa hivyo ukiangalia mchoro unaweza kuona kwamba daemon ya bitcoin ambayo ni sehemu ya msingi wa bitcoin hutunza mawasiliano kati ya mtandao na mchimba madini. Hii inamaanisha nini unahitaji kutumia msingi wa Bitcoin kwenye seva ili ESP8266 iweze kupata kichwa kipya cha kichwa kila dakika 10 na kisha uweze kurudisha kwenye mtandao.

Sijaijaribu lakini inaonekana kama utalazimika kusawazisha kizuizi kizima karibu na Gigs 130 kabla ya kuwasiliana vizuri na mtandao, katika wiki wanataja hatua kadhaa zinapaswa kukamilika kabla ya utendaji wote kupatikana, hakika kabisa ndio maana yao.

Kwa hivyo hiyo ilinivuta huko juu, kutoka kwa maoni ya utafiti ilikuwa ya kupendeza sana na ilikuwa nzuri kuona ESP8266 ndogo ikifanikiwa kumaliza kesi ya jaribio lakini kwa kweli niongelea sioni watu wengi wakipakua msingi, ikisawazisha yote blockchain, kuweka kila kitu hadi sasa, kuendelea na maswala ya usalama kwa nafasi 1 kwa 1e16 ya kushinda block. Daraja la mbali kwangu.

Kutoka kwa kwenda nilijua kiwango cha hash kitakuwa kibaya lakini udadisi ulinizidi na ilibidi niende. Badala ya uchimbaji wa solo kunaweza kuwa na dimbwi la madini huko nje ambalo linaweza kuunganishwa moja kwa moja kutoka kwa ESP8266 bila juhudi kubwa au kunaweza kuwa na cryptocurrency nyingine inayofaa zaidi. Ukipata ama tafadhali nijulishe.

Hatua ya 3: Marejeleo

1. ESP8266 Bitcoin Mchimba GitHub Repository

2. ESP8266 Hifadhi ya GitHub ya Ept8266

3. Uchimbaji wa Bitcoin kwa njia ngumu: algorithms, itifaki, na ka

4. Zuia Hashing algorithm

5. Zuia 125552

Ilipendekeza: