Sisukord:
Video: ESP8266 Bitcoin Miner: 3 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
Kuna Bitcoini hind jätkuvalt tõusis ja paar ESP8266 -d oli alati ühendatud, kuid ei teinud tegelikult palju, mõtlesin, miks mitte proovida rakendada Solo Bitcoin Miner. Pärast väikest katsetamist sain ESP8266 kuni ~ 1200 räsi sekundis ja 2017. aasta detsembri seisuga töötas Bitcoini võrk umbes 12 000 000 tera räsi sekundis (viimaste numbrite kohta saate vaadata blockchaininfo).
Nii et nende numbrite põhjal oleks meil 1: 1e16 võimalus iga kümne minuti tagant plokki edukalt kaevandada, kus ploki väärtus on praegu 212 000 dollarit. Muidugi on see palju nagu lotopileti ostmine, ainult palju väiksema võiduvõimalusega, aga teate vana ütlust, keegi peab selle võitma. Nii Gate Mate'i kui ka Super Squirter ESP8266 projektide puhul ei tee nad enamasti tööd, vaid on lihtsalt vooluvõrku ühendatud ja ootavad taotlusi või sisendeid. Esimene samm oli proovida välja selgitada, kas ESP8266 -l on Blockheaderil võimalik isegi topelt SHA256 esitada. Bitcoini maailmas on räsi tegelikult kahekordne SHA256, kuid me nimetame seda lihtsalt räsiks. Igatahes pärast väikest guugeldamist leidsin need kaks lehte, kus oli kogu räsimise saamiseks vajalik teave.
1. Blokeeri räsimise algoritm
2. Bitcoin Mining hard way: algoritmid, protokollid ja baidid
Väärib märkimist, et ülaltoodud linkidel kirjeldatud getwork -protokoll on aegunud. See on asendatud protokolliga getblocktemplate, mis muudab ploki päise koostamise natuke keerulisemaks, eriti peate looma oma merkle root. Vaadake kõigi nõmedate asjade jaoks wiki getblocktemplate.
Samm: algoritm
Hüppame kohe sisse, ESP8266 kood on ESP8266BitcoinMiner GitHubi repos. Ma ei kavatse kogu teavet ülaltoodud linkidelt uuesti esile tõsta, vaid toon lihtsalt välja peamised punktid.
char header_hex = "0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed797ffb" f97b7b07b07b7b7b7b
char header_hex on ploki päis ja see koosneb kuuest väljast Versioon, hashPrevBlock, hashMerkleRoot, Time, Bits ja Nonce, mis on omavahel ühendatud heksikujuliste märkidena. See kopeeriti just ülaltoodud lingilt, kuid tegelikul täieõiguslikul kaevuril võtaksite kõik need väljad json -objekti sisse ja seejärel peate lõplikkuse lahendama ja iga 10 minuti järel lennult kokku panema.
uint8_t *hex_decode (const char *in, size_t len, uint8_t *out) {
allkirjastamata int i, mg, ng, rg; jaoks (mg = 0, i = 0; i '9'? in - 'a' + 10: in - '0'; rg = in [i + 1]> '9'? in [i+1] - 'a'+10: [i+1] - '0'; väljas [mg] = (ng << 4) | rg;} tagasitulek;}
hex_decode võtab stringi header_hex, mis sisaldab kuueteistkümnendsüsteemi ascii märke, ja täidab uint8_t hashbyytes [80] nende baitväärtustega, mis on SHA256 räsimiseks valmis.
tühine räsi () {
hex_decode (päise_heks, strlen (päise_heks), räsimärgid); allkirjata pikk algus = micros (); hasher.doUpdate (hashbyte, sizeof (hashbyte)); baitide räsimine [SHA256_SIZE]; hasher.doFinal (hash); hashagain.doUpdate (hash, sizeof (hash)); baitide räsi2 [SHA256_SIZE]; hashagain.doFinal (hash2); allkirjastamata pika otsaga = micros (); allkirjata pikk delta = lõppenud - algus; Serial.println (delta); Serial.print ("Big Endian:"); jaoks (bait i = 32; i> 0; i-) {kui (räsi2 [i-1] <0x10) {Serial.print ('0'); } Serial.print (räsi2 [i-1], HEX); } Serial.println (); Serial.print ("Väike Endian:"); jaoks (bait i = 0; i <SHA256_SIZE; i ++) {if (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}
hash lihtsalt räsib hashbyte kaks korda (topelt SHA256), prindib kasutatud kasutustingimused ja prindib saadud räsi välja suure ja väikese endiaanina. Kui räsid oleks pesastatud ainult ühte SHA256 räsi, oleks see tõenäoliselt veidi kiirem, kuid igal juhul kulub ülaltoodud koodiga topelträssi tegemiseks 832 kasutusaega ja ekraanipildilt näeme, et saame õige räsi.
2. samm: löömine seinale ja tõeliselt suur plokk
Seega, kui ühe räsi tegemiseks kulub 832 kasutusaega, saame teostada 1 /0,000834 = 1201 räsi sekundis.
Selguse huvides võtsime teabe plokist #125552, kus teadsime nonce'i, see on juba kaevandatud ja kasutasime seda teavet testjuhtumina, et veenduda, kas saame ESP8266 -ga sama räsi. Nii et kui olete täielikult välja töötatud kaevuriga võitnud, arvate juhuslikult nonce'i, räsite sellega plokipea ja võrdlete tulemust selle ploki raskustega. Kui räsi vastab raskustele, esitatakse see seejärel võrgule kontrollimiseks.
Ok, nii et see on suurepärane, saame räsi teha, muidugi on see määr kohutav, kuid kui vaadata seda loteriina, on oletus oletus. Siin on, kuid lähemal vaatlusel selgub peagi, et võrguga suhtlemiseks peab teil olema täielik sõlm, mis on ilmselge, kui peatute ja mõtlete, mis kaevandamine tegelikult on.
Seega, kui vaatate diagrammi, näete, et bitcoini deemon, mis on osa bitcoini tuumast, hoolitseb võrgu ja kaevuri vahelise suhtlemise eest. See tähendab tegelikult seda, et peate Bitcoini tuuma serveris käitama, et ESP8266 saaks iga 10 minuti järel uue plokipea ja saaks seejärel võrku tagasi saata.
Ma pole seda proovinud, kuid tundub, et enne plokkide ahela sünkroonimist peaks see olema umbes 130 kontserti, enne kui see võrguga korralikult suhelda saab. Vikis mainitakse, et teatud toimingud tuleb enne kõigi funktsioonide kättesaadavust lõpule viia, nii et päris kindel seda nad tähendavad.
Nii et see tõmbas mind sinna, oli uurimistöö seisukohalt kõik väga huvitav ja päris lahe oli näha, kuidas väike ESP8266 testjuhtumit edukalt räsis, kuid praktiliselt ei näe ma, et paljud inimesed tuuma alla laadiksid, sünkroonides kogu blockchain, hoides kõike ajakohasena, pidades turvaküsimustega kursis 1 in 1e16 ploki võitmise võimalusega. Sild minu jaoks kaugele.
Algusest peale teadsin, et räsimäär on kohutav, kuid uudishimu võitis mind ja ma pidin seda proovima. Soolokaevandamise asemel võib seal olla kaevandusbassein, millega saab ilma monumentaalsete pingutusteta otse ESP8266 -ga ühenduse luua, või võib olla mõni muu sobivam krüptovaluuta. Kui leiate kummagi, palun andke mulle sellest teada.
3. samm: viited
1. ESP8266 Bitcoin Mineri GitHubi hoidla
2. ESP8266 krüpto GitHubi hoidla
3. Bitcoini kaevandamine raskel viisil: algoritmid, protokollid ja baidid
4. Blokeeri räsimise algoritm
5. Plokk 125552
Soovitan:
Kuidas ESP8266 AT püsivara välgutada või programmeerida, kasutades ESP8266 vilkurit ja programmeerijat, IOT Wifi moodulit: 6 sammu
Kuidas ESP8266 AT püsivara välgutada või programmeerida, kasutades ESP8266 välklampi ja programmeerijat, IOT Wifi moodulit: Kirjeldus: see moodul on USB-adapter /programmeerija ESP-01 või ESP-01S tüüpi ESP8266 moodulite jaoks. ESP01 ühendamiseks on see mugavalt varustatud 2x4P 2,54 mm emasega. Samuti purustab see kõik ESP-01 tihvtid läbi 2x4P 2,54 mm isase h
ESP8266 - Aia kastmine taimeriga ja kaugjuhtimispuldiga Interneti kaudu / ESP8266: 7 sammu (piltidega)
ESP8266 - Aia kastmine taimeriga ja kaugjuhtimispuldiga Interneti kaudu / ESP8266: ESP8266 - Niisutamine kaugjuhtimisega ja ajastusega köögiviljaaedade, lilleaedade ja muruplatside jaoks. See kasutab ESP-8266 vooluringi ja niisutusseadme etteandmiseks hüdraulilist / elektrilist ventiili. Eelised: odav (~ 30,00 USA dollarit) kiire juurdepääsuga käsud
ESP8266 - Ukse- ja aknasensorid - ESP8266. Eakate abi (unustamine): 5 sammu
ESP8266 - Ukse- ja aknasensorid - ESP8266. Eakate abi (unustamine): ESP8266 - Ukse- / aknasensorid, kasutades GPIO 0 ja GPIO 2 (IOT). Seda saab vaadata veebis või brauseritega kohalikus võrgus. Nähtav ka " HelpIdoso Vxapp " rakendus. Kasutab 110/220 VAC toiteallikat 5Vdc, 1 relee / pinge jaoks
Internetist aja saamine ESP8266 abil - NTP kellaprojekt ESP8266 -ga Nodemcu: 5 sammu
Internetist aja saamine ESP8266 abil | NTP kellaprojekt ESP8266 Nodemcu abil: Selles õpetuses näeme, kuidas saada aega, kasutades ESP8266/nodemcu koos Arduino IDE -ga. Aja saamine on eriti kasulik andmete logimisel, et oma näidud ajatempliga tähistada. Kui teie projektil ESP8266 on juurdepääs Internetile, saate võrgu T abil aega
ESP8266 NODEMCU BLYNK IOT Õpetus - Esp8266 IOT kasutades Blunk ja Arduino IDE - LED -ide juhtimine Interneti kaudu: 6 sammu
ESP8266 NODEMCU BLYNK IOT Õpetus | Esp8266 IOT kasutades Blunk ja Arduino IDE | LED -ide juhtimine Interneti kaudu: Tere juhid, selles juhendis olevad poisid, õpime kasutama IOT -i koos meie ESP8266 või Nodemcu -ga. Me kasutame selleks rakendust blynk. Nii et me kasutame meie esp8266/nodemcu LED -ide juhtimiseks Interneti kaudu. Nii et rakendus Blynk ühendatakse meie esp8266 või Nodemcu -ga