Tartalomjegyzék:
Videó: ESP8266 Bitcoin Miner: 3 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Mivel a Bitcoin ára tovább emelkedett, és néhány ESP8266 mindig csatlakoztatva van, de nem igazán tesz sokat, gondoltam, miért nem próbálom meg megvalósítani a Solo Bitcoin Miner -t. Egy kis kísérletezés után megkaptam az ESP8266 -ot ~ 1200 hash/sec -ig, és 2017 decemberében a Bitcoin hálózat másodpercenként körülbelül 12 000 000 tera hash -t teljesített (a blockchaininfo oldalon ellenőrizheti a legújabb számokat).
Tehát ezen számok alapján 1 az 1e16 esélyünk lenne arra, hogy tízpercenként sikeresen kitermeljünk egy blokkot, ahol egy blokk jelenleg 212 000 dollárt ér. Persze ez olyan, mint egy lottójegy vásárlása, csak sokkal kisebb esélye van a nyerésre, de ismered a régi mondást: valakinek meg kell nyernie. Mind a Gate Mate, mind a Super Squirter ESP8266 projektek legtöbbször nem végeznek semmilyen munkát, csak csatlakoztatva vannak, és várják a kéréseket vagy bemeneteket, miért ne tegye rá őket, és nyerjen némi pénzverést. Az első lépés az volt, hogy megpróbáljuk kitalálni, hogy egyáltalán lehetséges -e dupla SHA256 végrehajtása a Blockheaderen ESP8266 -on. A Bitcoin világában a „hash” valójában dupla SHA256, de csak hash -ként hivatkozunk rá. Mindenesetre egy kis googling után találtam ezt a két oldalt, amelyek minden információt tartalmaztak a hash eléréséhez.
1. Blokk hash algoritmus
2. A Bitcoin bányászása a nehéz úton: az algoritmusok, protokollok és bájtok
Érdemes megjegyezni, hogy a getwork protokoll, amint azt a fenti linkek részletezik, elavult. Ezt a getblocktemplate protokoll váltotta fel, ami egy kicsit bonyolultabbá teszi a blokkfejléc létrehozását, különösen a saját merkle gyökér létrehozását. Ha minden rosszra kíváncsi, nézze meg a getblocktemplate wikit.
1. lépés: Az algoritmus
Ugorjunk bele, az ESP8266 kód az ESP8266BitcoinMiner GitHub repóban található. Nem fogom újból összefoglalni a fenti linkekből származó információkat, hanem csak kiemelni a főbb pontokat.
char header_hex = "0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed79f4ffb" f7bfbfbbbbdb3b7b7b7b7b7b7b7b7b3b3b7b3b7b3b7b3b7b3b3b3b3b3b3b3b1b1c1c1c3a5a3a5a5a5a2a7a5a5a5a5a5a5a5a7a7a7a - - -
A char header_hex a blokkfejléc, és hat mezőből épül fel: Version, hashPrevBlock, hashMerkleRoot, Time, Bits és a Nonce. Ezt csak a fenti linkről másolták le, de egy teljes értékű bányászban ezeket a mezőket egy json objektumban kapná meg, majd rendeznie kell a végleteket, és 10 percenként menet közben össze kell raknia.
uint8_t *hex_decode (const char *in, size_t len, uint8_t *out) {
előjel nélküli int i, mg, ng, rg; for (mg = 0, i = 0; i '9'? in - 'a' + 10: in - '0'; rg = in [i + 1]> '9'? in [i+1] - 'a'+10: [i+1] - '0'; ki [mg] = (ng << 4) | rg;} visszatér;}
A hex_decode felveszi a header_hex karakterláncot, amely hexadecimális ascii karaktereket tartalmaz, és feltölti az uint8_t hashbyte -kat [80] a megfelelő bájtértékekkel az SHA256 hasher számára.
void hash () {
hex_decode (header_hex, strlen (header_hex), hashbyte); előjel nélküli hosszú kezdés = micros (); hasher.doUpdate (hashbyte, sizeof (hashbytes)); bájt hash [SHA256_SIZE]; hasher.doFinal (hash); hashagain.doUpdate (hash, sizeof (hash)); bájt hash2 [SHA256_SIZE]; hashagain.doFinal (hash2); előjel nélküli hosszú végű = micros (); előjel nélküli hosszú delta = véget ért - kezdés; Soros.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); } Sorozat.println (); Serial.print ("Little Endian:"); for (byte i = 0; i <SHA256_SIZE; i ++) {if (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}
a hash egyszerűen kétszer kivonatolja a hashbyte -ot (dupla SHA256), kinyomtatja a felhasznált köteteket, és kinyomtatja a kapott hash -t nagy endiánként és kis endiánként. Ha a kivonatokat csak egy SHA256 -os hash -be ágyazták be, akkor valószínűleg egy kicsit gyorsabb lenne, de a fenti kóddal mégis 832 használati másodperc szükséges a kettős kivonat végrehajtásához, és a képernyőképen láthatjuk, hogy a megfelelő kivonatot kapjuk.
2. lépés: Falnak ütés és egy igazán nagy blokk
Tehát ha egy hash elvégzéséhez 832 használati másodpercre van szükség, akkor 1 /0,000834 = 1201 kivonatot /sec hajthatunk végre.
Az egyértelműség kedvéért az információkat a 125552 -es blokkból vettük, ahol ismertük a nonce -t, azt már kitermeltük, és ezt az információt tesztesetként használtuk annak biztosítására, hogy ugyanazt a hash -t kapjuk az ESP8266 -tal. Tehát ha egy nyereség egy teljesen kiteljesedett bányásznál, akkor véletlenszerűen találgat egy nonce -t, kivonja vele a blokkfejlécet, majd összehasonlítja az eredményt az adott blokk nehézségével. Ha a hash megfelel a nehézségnek, akkor azt a hálózathoz küldjük ellenőrzésre.
Rendben, tehát nagyszerű, hogy végrehajthatjuk a hash -t, persze az arány szörnyű, de ha lottónak tekintjük, a találgatás csak találgatás. Itt van, de ha alaposabban megvizsgáljuk, hamar kiderül, hogy teljes csomópontot kell futtatnia ahhoz, hogy kommunikálni tudjon a hálózattal, ami nyilvánvaló, amikor megáll, és elgondolkodik azon, mi is valójában a bányászat.
Tehát, ha megnézi a diagramot, láthatja, hogy a bitcoin démon, amely a bitcoin mag része, gondoskodik a hálózat és a bányász közötti kommunikációról. Ez valójában azt jelenti, hogy futtatnia kell a Bitcoin magját egy kiszolgálón, hogy az ESP8266 10 percenként új blokkfejlécet kaphasson, majd vissza tudjon küldeni a hálózatnak.
Még nem próbáltam, de úgy tűnik, hogy a teljes blokkláncot szinkronizálnia kell körülbelül 130 koncerten, mielőtt megfelelően kommunikálna a hálózattal, a wikiben megemlítik, hogy bizonyos lépéseket el kell végezni, mielőtt minden funkció elérhetővé válik. ezt jelentik.
Kutatási szempontból ez az egész nagyon érdekes volt, és nagyon jó volt látni, hogy a kis ESP8266 sikeresen kivonatolja a tesztesetet, de gyakorlatilag nem látom, hogy sokan letöltenék a magot, szinkronizálva az egészet blokklánc, mindent naprakészen tartva, lépést tartva a biztonsági kérdésekkel, hogy 1 az 1e16 -ban megnyerje a blokkot. Híd a messzi számomra.
Kezdettől fogva tudtam, hogy a hash arány szörnyű lesz, de a kíváncsiság úrrá lett rajtam, és muszáj volt kipróbálnom. Az egyéni bányászat helyett lehet, hogy van egy bányászati medence, amelyhez monumentális erőfeszítés nélkül közvetlenül az ESP8266 -ról lehet csatlakozni, vagy lehet egy másik megfelelőbb kriptovaluta. Ha megtalálja bármelyiket, kérem jelezze.
3. lépés: Hivatkozások
1. ESP8266 Bitcoin Miner GitHub adattár
2. ESP8266 Crypto GitHub adattár
3. A bitcoin bányászása kemény úton: az algoritmusok, protokollok és bájtok
4. Blokk hash algoritmus
5. 125552 blokk
Ajánlott:
ÉLŐ BITCOIN ÁRT SZERINT TTGO ESP32: 10 lépés
BETCOIN ÉLŐ ÁR SZERZÉSE TTGO ESP32: Ebben az oktatóanyagban megtanuljuk, hogyan szerezhet meg aktuális Bitcoin -árat dollárban és euróban egy TTGO ESP32 és Visuino segítségével. Nézze meg a videót. (Új frissített fájl letölthető alább!)
Bitcoin Ticker grafikonnal: 8 lépés
Bitcoin Ticker grafikonnal: Ezt egy BTC árjelző projekt alapján készítettem, amely árinformációkat szerez a coinmarketcap.com webhelyről, amelyet eredetileg Brian Lough írt. Az ESP8266 -ot használta, amely egy Arduino -kompatibilis tábla, beépített WiFi -vel. Ahogy leírja
Bitcoin-szerű titkosítás a Raspberry Pi-n: 5 lépés
Bitcoin-szerű kriptográfia a Raspberry Pi-n: Utasítások egy csomópont futtatásához. Az US-OS operációs rendszer az us-cryptoplatform csomagot futtató raspbianból készült. Nem kell engedélyt kérnie a csatlakozáshoz. Kövesse ezeket az egyszerű utasításokat és futtasson csomópontot, amely percenként kriptovalutát keres
Vizualizálja Bitcoin nyereségét és veszteségét az Arduino és Python segítségével: 6 lépés
Vizualizálja Bitcoin nyereségét és veszteségét az Arduino & Python segítségével: Alapötlet Személy szerint kriptovaluta befektető vagyok. De emellett rengeteg munka vár rám. Tehát nem tudom folyamatosan nyomon követni a bitcoin árát, mint percenként 10 -szer. Mindazonáltal szeretném tudni, hogy keresek vagy veszítek pénzt. És így
Rekt-O-Matic Turbo S: Single Board Bitcoin Ticker: 12 lépés
Rekt-O-Matic Turbo S: Single Board Bitcoin Ticker: Hiányzott a Bitcoin árának egyik napról a másikra történő emelkedése 7500 dollárról 10300 dollárra 2019. október 25-én? Hát megtettem. Ilyen dolgok történnek a kriptográfiai világban. Amire szüksége van az embereknek, az a Rekt-O-Matic Turbo S Ez egy Bitcoin árjelző, szép OLED-del