Агуулгын хүснэгт:

ESP8266 Bitcoin олборлогч: 3 алхам
ESP8266 Bitcoin олборлогч: 3 алхам

Видео: ESP8266 Bitcoin олборлогч: 3 алхам

Видео: ESP8266 Bitcoin олборлогч: 3 алхам
Видео: CPU Mining Paling Profit Menambang Bamboo BMB Coin 2024, Арваннэгдүгээр
Anonim
ESP8266 Bitcoin олборлогч
ESP8266 Bitcoin олборлогч

Биткойны үнэ өссөөр байгаа бөгөөд ESP8266 -ийг байнга залгаж байгаа боловч тийм ч сайн зүйл хийхгүй байгаа тул би яагаад ганцаарчилсан Bitcoin олборлогч ашиглаж болохгүй гэж бодсон юм. Бага зэрэг туршилт хийсний дараа би ESP8266 -ийг ~ 1200 хэш/сек хүртэл авсан бөгөөд 2017 оны 12 -р сарын байдлаар Bitcoin сүлжээ секундэд ойролцоогоор 12 000 000 тера хэш гүйцэтгэж байсан (та blockchaininfo -ийг хамгийн сүүлийн үеийн тоогоор шалгаж болно).

Тиймээс эдгээр тоон дээр үндэслэн бид 10 минут тутамд блокыг амжилттай олборлох 1 -ээс 16 хүртэлх магадлалтай байх болно. Дараа нь блок нь 212,000 долларын үнэтэй байдаг. Мэдээж энэ нь сугалааны тасалбар худалдаж авахтай адил юм., гэхдээ та эртний хэллэгийг мэддэг, хэн нэгэн үүнийг ялах ёстой. Gate Mate болон Super Squirter ESP8266 хоёулаа ихэнхдээ ямар ч ажил хийдэггүй, тэд зүгээр л залгаад, хүсэлт эсвэл оролтыг хүлээж байдаг тул үүнийг яагаад тавьж болохгүй, магадгүй зоос хожиж магадгүй юм. Эхний алхам бол ESP8266 дээр Blockheader дээр давхар SHA256 хийх боломжтой эсэхийг олж мэдэх явдал байв. Биткойн ертөнцөд 'hash' нь үнэндээ давхар SHA256 боловч бид үүнийг хэш гэж нэрлэх болно. Ямар ч байсан жаахан эргэлдэж байгаад хэш хийхэд шаардлагатай бүх мэдээллийг агуулсан эдгээр хоёр хуудсыг оллоо.

1. Хэш хийх алгоритмыг блоклох

2. Bitcoin Mining хэцүү арга: алгоритм, протокол ба байт

Дээрх линкүүдэд дэлгэрэнгүй бичсэн getwork протоколыг хуучирсан болохыг тэмдэглэх нь зүйтэй. Үүнийг getblocktemplate протоколоор сольсон бөгөөд энэ нь блок толгойг бүтээхэд илүү төвөгтэй болгодог, ялангуяа та өөрийн merkle root -ийг бий болгох ёстой. Бүх нарийн ширхэгтэй хүмүүсийн хувьд getblocktemplate вики -г үзээрэй.

Алхам 1: Алгоритм

Алгоритм
Алгоритм

ESP8266 код нь ESP8266BitcoinMiner GitHub репо дээр байна. Дээрх линкүүдээс авсан бүх мэдээллийг би дахин давтахгүй, харин гол санааг онцлон хэлье.

char header_hex = 0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942a772f877f8f7f4f7f8f7f9f8f7f9f7f9f9

char header_hex нь блок толгой бөгөөд Version, hashPrevBlock, hashMerkleRoot, Time, Bits, Nonce гэсэн зургаан талбараас бүрдэх бөгөөд тэдгээр нь hex тэмдэглэгээн дэх жижиг утгууд юм. Үүнийг зүгээр л дээрх линкээс хуулж авсан боловч жинхэнэ уурхайчин дээр та эдгээр талбар бүрийг json объект руу авч, дараа нь одоо байгаа байдлыг нь цэгцэлж, 10 минут тутамд нэг дор байрлуулах хэрэгтэй болно.

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

гарын үсэггүй 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' дотор; гарсан [mg] = (ng << 4) | rg;} буцах;}

hex_decode нь арван зургаан оронтой ascii тэмдэгт агуулсан header_hex мөрийг авч, SHA256 hasher -д бэлэн байт утгуудаар uint8_t hashbytes [80] -ийг дүүргэдэг.

хүчингүй хэш () {

hex_decode (header_hex, strlen (header_hex), hashbytes); гарын үсэг зураагүй урт эхлэх = micros (); hasher.doUpdate (hashbytes, sizeof (hashbytes)); байтын хэш [SHA256_SIZE]; hasher.doFinal (хэш); hashagain.doUpdate (хэш, хэмжээ (хэш)); байт hash2 [SHA256_SIZE]; hashagain.doFinal (hash2); тэмдэггүй урт төгсгөлтэй = micros (); гарын үсэг зураагүй урт дельта = дууссан - эхлэх; Serial.println (дельта); 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 (байт i = 0; i <SHA256_SIZE; i ++) {if (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}

hash нь зүгээр л hashbytes -ийг хоёр удаа хусдаг (давхар SHA256), зарцуулсан секундыг хэвлэж, үүссэн хэшийг том одооан, бяцхан endian хэлбэрээр хэвлэнэ. Хэрэв хэшийг зөвхөн нэг SHA256 хэш дотор үүрлэсэн бол энэ нь арай хурдан байх болно, гэхдээ дээр дурдсан кодыг ашигласнаар давхар хэш хийхэд 832 секунд зарцуулагдах бөгөөд дэлгэцийн зургаас харахад бид зөв хэшийг олж авах болно.

Алхам 2: Хана ба үнэхээр том блокыг цохих

Хананд цохилт өгч, үнэхээр том блок
Хананд цохилт өгч, үнэхээр том блок

Тиймээс нэг хэш хийхэд 832 секунд зарцуулбал 1 /0.000834 = 1201 хэш /сек хийж болно.

Тодорхой байхын тулд бид nonce -ийг мэддэг 125552 дугаар блокоос авсан мэдээллийг аль хэдийн олборлосон бөгөөд ESP8266 -тэй ижил хэш авах боломжтой эсэхийг шалгахын тулд уг мэдээллийг туршилтын жишээ болгон ашигласан болно. Бүрэн олборлосон уурхайчинтай болсноор та санамсаргүй байдлаар nonce -ийг таамаглаж, блок толгойг нь хэшлээд үр дүнг нь тухайн блокны хүндрэлтэй харьцуулж үзэх болно. Хэрэв хэш нь бэрхшээлтэй тулгарвал түүнийг сүлжээнд баталгаажуулахаар илгээнэ.

За, энэ бол гайхалтай юм, бид хэш хийж чадна, ханш нь үнэхээр аймшигтай байгаа ч үүнийг сугалаа гэж үзвэл таамаглал бол таамаглал юм. Энд байна, гэхдээ нарийвчлан судалсны дараа та сүлжээгээр харилцах бүрэн зангилааг ажиллуулах шаардлагатай байгаа нь удалгүй зогсоход уул уурхай гэж юу болохыг бодож үзэх нь тодорхой болно.

Хэрэв та диаграмыг үзвэл биткойн цөмийн нэг хэсэг болох битоин демон нь сүлжээ болон олборлогчийн хоорондох харилцааг хариуцдаг болохыг харж болно. Энэ нь юу гэсэн үг вэ гэвэл та Bitcoin цөмийг сервер дээр ажиллуулж байх ёстой бөгөөд ингэснээр ESP8266 нь 10 минут тутамд шинэ блок толгой авч, дараа нь сүлжээнд буцааж илгээх боломжтой болно.

Би үүнийг туршиж үзээгүй боловч сүлжээнд зөв холбогдохын тулд та блокийн сүлжээг бүхэлд нь 130 Gigs орчим синхрончлох ёстой юм шиг байна, вики дээр бүх функц бэлэн болохоос өмнө тодорхой алхмуудыг хийх ёстой гэж дурдсан байдаг. үүнийг л тэд хэлж байгаа юм.

Судалгааны үүднээс авч үзвэл бүх зүйл маш сонирхолтой байсан бөгөөд бяцхан ESP8266 нь туршилтын хавтасыг амжилттай хийснийг харахад үнэхээр сайхан байсан, гэвч бараг бүх хүмүүс синхрончлохдоо цөмийг татаж аваад байгаа хүмүүсийг би олж харахгүй байна. блокчэйн, бүх зүйлийг цаг тухайд нь шинэчлэх, аюулгүй байдлын асуудлуудыг дагаж мөрдөх нь 1 -ээс 1 -ийг 16 -д авах боломжийг олгодог. Миний хувьд алс холын гүүр.

Эхлэхээсээ эхлэн хэшийн хэмжээ аймшигтай болохыг би мэдэж байсан ч сониуч зан намайг улам бүр сайжруулж, би үүнийг өгөх хэрэгтэй болсон. Ганцаар олборлохын оронд ESP8266 -аас асар их хүчин чармайлт гаргахгүйгээр шууд холбож болох уул уурхайн бассейн байж болох юмуу эсвэл өөр cryptocurrency илүү тохиромжтой байж магадгүй юм. Хэрэв та олох юм бол надад мэдэгдээрэй.

Алхам 3: Ашигласан материал

1. ESP8266 Bitcoin Miner GitHub репозитор

2. ESP8266 Crypto GitHub репозитор

3. Биткойн олборлолт нь маш хэцүү: алгоритм, протокол, байт

4. Хэш хийх алгоритмыг блоклох

5. Блок 125552

Зөвлөмж болгож буй: