Taula de continguts:
Vídeo: ESP8266 Bitcoin Miner: 3 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Amb el preu de Bitcoin continuant pujant i amb un parell d’ESP8266 sempre endollats, però realment sense fer molt, vaig pensar per què no intentar implementar un Solo Bitcoin Miner. Després d’experimentar una mica, he obtingut l’ESP8266 fins a uns 1200 hash / s i a partir de desembre de 2017 la xarxa Bitcoin funcionava al voltant de 12, 000, 000 tera hash per segon (podeu consultar blockchaininfo per obtenir els darrers números).
Per tant, basant-nos en aquests números, tindríem la possibilitat d'1 en 1e16 d'extreure amb èxit un bloc cada deu minuts, on un bloc val actualment 212.000 dòlars. És clar que és molt semblant a comprar un bitllet de loteria, només amb moltes més possibilitats de guanyar., però ja coneixeu el vell refrany: algú l’ha de guanyar. Tant amb els projectes Gate Mate com amb Super Squirter ESP8266 la majoria de les vegades no fan cap feina, només estan connectats i esperen sol·licituds o entrades, així que, per què no els hi dediqueu i potser guanyeu una moneda? El primer pas va ser intentar esbrinar si fins i tot era possible realitzar un doble SHA256 al Blockheader en un ESP8266. Al món Bitcoin, el "hash" és en realitat un doble SHA256, però només ens referirem a ell com a hash. De totes maneres, després de fer una mica de Google, vaig trobar aquestes dues pàgines que proporcionaven tota la informació necessària per obtenir hash.
1. Algorisme de hash de blocs
2. Bitcoin Mining de la manera més dura: els algoritmes, protocols i bytes
Val a dir que el protocol getwork, tal com es detalla als enllaços anteriors, ha quedat obsolet. S'ha substituït pel protocol getblocktemplate, cosa que fa que sigui una mica més complicat construir una capçalera de bloc, concretament heu de construir la vostra pròpia arrel merkle. Per a tots els descarnats, consulteu la wiki getblocktemplate.
Pas 1: l'algorisme
Saltem directament, el codi ESP8266 es troba al dipòsit GitHub ESP8266BitcoinMiner. No tornaré a revisar tota la informació dels enllaços anteriors, sinó que només destacaré els punts principals.
Char header_hex = "0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122bc7f5d74df2b9441a42a14695";
char header_hex és la capçalera del bloc i està construït a partir de sis camps, Version, hashPrevBlock, hashMerkleRoot, Time, Bits i Nonce, tots concatenats junts com a petits valors endians en notació hexadecimal. Això es va copiar de l’enllaç anterior, però en un miner realment complet rebíeu cadascun d’aquests camps en un objecte json i després havíeu d’ordenar l’endianisme i posar-lo junts sobre la marxa cada 10 minuts.
uint8_t * hex_decode (const char * in, size_t len, uint8_t * out) {
unsigned int i, mg, ng, rg; per a (mg = 0, i = 0; i '9'? a - 'a' + 10: a - '0'; rg = a [i + 1]> '9'? a [i + 1] - 'a' + 10: in [i + 1] - '0'; out [mg] = (ng << 4) | rg;} return out;}
hex_decode pren la cadena header_hex, que conté caràcters ascii hexadecimals, i omple els hashbytes uint8_t [80] amb els seus respectius valors de bytes preparats per a la hasher SHA256.
void hash () {
hex_decode (header_hex, strlen (header_hex), hashbytes); inici llarg sense signar = micros (); hasher.doUpdate (hashbytes, sizeof (hashbytes)); byte hash [SHA256_SIZE]; hasher.doFinal (hash); hashagain.doUpdate (hash, sizeof (hash)); byte hash2 [SHA256_SIZE]; hashagain.doFinal (hash2); unsigned long ended = micros (); unsigned long delta = acabat - inici; Serial.println (delta); Serial.print ("Big Endian:"); 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 ("Little Endian:"); for (byte i = 0; i <SHA256_SIZE; i ++) {if (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}
hash simplement hashbytes hashbytes dues vegades (doble SHA256), imprimeix els segons d'us que va prendre i imprimeix el hash resultant com a endian gran i petit endian. Si els hash estiguessin niats només en un hasher SHA256 probablement seria una mica més ràpid, però de totes maneres amb el codi anterior es necessiten 832 segons per realitzar el hash doble i es pot veure a la captura de pantalla obtenim el hash correcte.
Pas 2: colpejar un mur i un bloc realment gran
Per tant, si es necessiten 832 segons per fer un hash, podem realitzar 1 / 0,000834 = 1201 hash / seg.
Només per tenir clar, vam agafar la informació del bloc núm. 125552 on coneixíem el no, ja s’ha extret i vam utilitzar aquesta informació com a cas de prova per assegurar-nos que podríem obtenir el mateix hash amb l’ESP8266. Per tant, un cop obtingut un guanyador amb un miner completament concret, hauríeu d’endevinar aleatòriament el cas, escriviu-hi la capçalera i compararíeu el resultat amb la dificultat d’aquest bloc. Si el hash compleix la dificultat, es lliura a la xarxa per a la seva verificació.
D'acord, així que és fantàstic que puguem realitzar el hash, segur que el ritme és horrible, però quan el considerem com a loteria, una suposició és una suposició. Heus aquí el però, després d'una inspecció més propera, aviat es fa evident que cal que executeu un node complet per poder comunicar-vos amb la xarxa, cosa que és obvi quan us atureu a pensar què és realment la mineria.
Així que si mireu el diagrama podeu veure que el dimoni bitcoin que forma part del nucli bitcoin s’encarrega de la comunicació entre la xarxa i el miner. El que realment vol dir és que heu d’executar el nucli de Bitcoin en un servidor perquè l’ESP8266 pugui obtenir un nou capçalera cada 10 minuts i després poder tornar a enviar-lo a la xarxa.
No ho he provat, però sembla que hauríeu de sincronitzar tota la cadena de blocs a uns 130 concerts abans de comunicar-se correctament amb la xarxa. això és el que volen dir.
Per tant, això em va portar fins allà, des del punt de vista de la investigació, va ser tot molt interessant i va ser molt divertit veure que el petit ESP8266 hachava amb èxit el cas de prova, però, pràcticament parlant, no veig molta gent descarregant el nucli, sincronitzant el conjunt blockchain, mantenint-ho tot al dia, mantenint-se al dia amb els problemes de seguretat per tenir una possibilitat d'1 en 1e16 de guanyar el bloc. Un pont molt llunyà per a mi.
Des del primer moment vaig saber que el percentatge de hash seria terrible, però la curiositat va guanyar-me el cap i vaig haver de provar-ho. En lloc de la mineria en solitari, hi pot haver una piscina minera que es pugui connectar directament des de l’ESP8266 sense un esforç monumental o que hi pugui haver una altra criptomoneda que sigui més adequada. Si en trobeu qualsevol, feu-me-ho saber.
Pas 3: referències
1. Dipòsit GitHub de Bitcoin Miner ESP8266
2. Dipòsit ESP8266 Crypto GitHub
3. La mineria de Bitcoin de la manera més dura: els algoritmes, protocols i bytes
4. Algorisme de hash de blocs
5. Bloc 125552
Recomanat:
OBTÉ PREU EN DIRECTE DE BITCOIN TTGO ESP32: 10 passos
OBTENIU PREU EN DIRECTE BITCOIN TTGO ESP32: en aquest tutorial aprendrem com obtenir un preu actual de Bitcoin en dòlars i euros mitjançant un TTGO ESP32 i Visuino. Vegeu el vídeo. (Nou fitxer actualitzat per baixar-lo a continuació)
Bitcoin Ticker amb gràfic: 8 passos
Bitcoin Ticker With Graph: ho he fet basant-me en un projecte per a un ticker de preus BTC, que obté informació de preus de coinmarketcap.com escrita originalment per Brian Lough. Va utilitzar l’ESP8266, que és una placa compatible amb Arduino que inclou WiFi integrada. Com descriu
Cripto similar a Bitcoin funcionant a Raspberry Pi: 5 passos
Crypto com Bitcoin a Raspberry Pi: instruccions per executar un node. El sistema operatiu US-OS està format per raspbian que executa el paquet us-cryptoplatform. No cal que demaneu permís per unir-vos-hi. Simplement seguiu aquestes senzilles instruccions i executeu un node que guanyi criptocurrency cada minut
Visualitzeu el vostre guany i pèrdua de Bitcoin amb Arduino i Python: 6 passos
Visualitzeu el vostre guany i pèrdua de Bitcoin amb Arduino i Python: idea bàsica Personalment, sóc inversor de divises criptogràfiques. Però també tinc molta feina per atendre. Per tant, no sóc capaç de seguir el seguiment del preu de Bitcoin com 10 vegades al minut. Tot i això, encara vull saber si guanyo o perdo diners. Per tant
Miner's Pie - RoboPasty - Pasties: 4 passos
Miner's Pie - RoboPasty - Pasties: aquest tipus de pastes són de tipus Miner que excaven mineral, no aquestes pastes (els espectadors cauen), un pastís sense olla (i més espectadors cauen), un menjar complet de mà que es va desenvolupar per als miners per endur-se en el fons tot tipus de mines per tot arreu