Բովանդակություն:

ESP8266 Bitcoin Miner: 3 քայլ
ESP8266 Bitcoin Miner: 3 քայլ

Video: ESP8266 Bitcoin Miner: 3 քայլ

Video: ESP8266 Bitcoin Miner: 3 քայլ
Video: Duinocoin mining 2024, Նոյեմբեր
Anonim
ESP8266 Bitcoin Miner
ESP8266 Bitcoin Miner

Երբ Bitcoin- ի գինը շարունակում է բարձրանալ, և մի քանի ESP8266- ը միշտ միացված էին, բայց իրականում շատ բան չէին անում, ես մտածեցի, թե ինչու չփորձել և իրականացնել Solo Bitcoin Miner- ը: Մի փոքր փորձարկելուց հետո ես ESP8266- ը ստացա մինչև 1200 ֆունտ հեշ/վրկ, իսկ 2017 -ի դեկտեմբեր ամսվա դրությամբ Bitcoin ցանցը կատարում էր վայրկյանում մոտ 12,000,000 tera հեշ (վերջին թվերի համար կարող եք ստուգել blockchaininfo- ն):

Այդ թվերի հիման վրա մենք կունենանք 1 -ից 1e16 հնարավորություն յուրաքանչյուր տասը րոպեն մեկ հաջողությամբ արդյունահանելու բլոկ, որտեղ բլոկն այժմ արժե 212 000 դոլար: Իհարկե, դա շատ նման է լոտոյի տոմս գնելուն, միայն հաղթելու շատ ավելի փոքր հնարավորությամբ:, բայց դուք գիտեք հին ասացվածքը ՝ ինչ -որ մեկը պետք է շահի այն: Ինչպես Gate Mate- ի, այնպես էլ Super Squirter ESP8266 նախագծերի հետ, նրանք մեծ մասամբ որևէ աշխատանք չեն կատարում, նրանք պարզապես միացված են ցանցին և սպասում են խնդրանքներին կամ մուտքերին, ուստի ինչու դրանք չդնել դրա վրա և գուցե շահել մետաղադրամ: Առաջին քայլը փորձելն ու պարզելն էր, թե արդյոք հնարավոր էր նույնիսկ կրկնակի SHA256 կատարել Blockheader- ի վրա ESP8266- ով: Բիթքոինի աշխարհում «հեշը» իրականում կրկնակի SHA256 է, բայց մենք այն պարզապես կնշենք որպես հաշ: Համենայն դեպս, մի փոքր գուգլ անելուց հետո ես գտա այս երկու էջերը, որոնք տրամադրում էին հաշիշ ստանալու համար անհրաժեշտ բոլոր տեղեկությունները:

1. Արգելափակել հեշինգի ալգորիթմը

2. Bitcoin Mining- ը դժվար ճանապարհով. Ալգորիթմներ, արձանագրություններ և բայթեր

Հարկ է նշել, որ getwork արձանագրությունը, ինչպես նկարագրված է վերը նշված հղումներում, հնացել է: Այն փոխարինվել է getblocktemplate արձանագրությամբ, ինչը մի փոքր ավելի է բարդացնում բլոկի վերնագրի կառուցումը, մասնավորապես `դուք պետք է կառուցեք ձեր սեփական merkle արմատը: Բոլոր անհանգիստ մանրախնդիրների համար այցելեք getblocktemplate վիքիը:

Քայլ 1: Ալգորիթմ

Ալգորիթմը
Ալգորիթմը

Եկեք անմիջապես անցնենք, ESP8266 ծածկագիրը ESP8266BitcoinMiner GitHub ռեպոում է: Ես մտադիր չեմ վերափոխել վերը նշված հղումներից ստացված ամբողջ տեղեկատվությունը, այլ պարզապես կարևորել հիմնական կետերը:

char header_hex = 0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122bc7f5d74df2b9441a42a14695».

char header_hex- ը բլոկի վերնագիրն է և կառուցված է վեց դաշտերից ՝ Version, hashPrevBlock, hashMerkleRoot, Time, Bits and the Nonce բոլորը միավորված են որպես վեցանկյուն նշման փոքր էնդիան արժեքներ: Դա պարզապես պատճենված էր վերը նշված հղումից, բայց իրական լիարժեք հանքափորի մեջ դուք կստանաք այդ դաշտերից յուրաքանչյուրը json օբյեկտի մեջ, այնուհետև պետք է լուծեք էնդիանությունը և ամեն 10 րոպեն մեկ դրանք համատեղեք:

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

անստորագիր int i, mg, ng, rg; (mg = 0, i = 0; i '9'? - 'a' + 10: in - '0'; rg = in [i + 1]> '9'? in [in i+1] - 'a'+10: in [i+1] - '0'; դուրս [mg] = (ng << 4) | rg;} վերադառնալ դուրս;}

hex_decode- ն վերցնում է header_hex տողը, որը պարունակում է տասնվեցերորդ ascii նիշեր և լրացնում է uint8_t hashbytes [80] ՝ իրենց համապատասխան բայթային արժեքներով ՝ պատրաստ SHA256 հեշերի համար:

դատարկ հեշ () {

hex_decode (header_hex, strlen (header_hex), hashbytes); անստորագիր երկար մեկնարկ = micros (); hasher.doUpdate (hashbytes, sizeof (hashbytes)); բայթ հաշ [SHA256_SIZE]; hasher.doFinal (հաշ); hashagain.doUpdate (hash, sizeof (hash)); բայթ hash2 [SHA256_SIZE]; hashagain.do Վերջնական (hash2); անստորագիր երկար ավարտ = micros (); անստորագիր երկար դելտա = ավարտված - սկիզբ; Serial.println (դելտա); Serial.print ("Big Endian:"); համար (բայթ 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:"); համար (բայթ i = 0; i <SHA256_SIZE; i ++) {if (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}

hash- ը պարզապես երկու անգամ հեշբայթ է հեշշբայթում (կրկնակի SHA256), տպում է դրա օգտագործման անհրաժեշտ կապերը և տպում է արդյունքում ստացված հեշը որպես մեծ էնդիան և փոքր էնդիան: Եթե հաշերը տեղադրված լինեին միայն մեկ SHA256 հեշի մեջ, ապա դա, հավանաբար, մի փոքր ավելի արագ կլիներ, բայց, ամեն դեպքում, վերը նշված կոդով կրկնակի հեշը կատարելու համար պահանջվում է 832 վայրկյան, և սքրինշոթից կարող եք տեսնել, որ մենք ստանում ենք ճիշտ հեշը:

Քայլ 2. Պատին և իսկապես մեծ բլոկին հարվածելը

Պատի հարված և իսկապես մեծ բլոկ
Պատի հարված և իսկապես մեծ բլոկ

Այսպիսով, եթե մեկ հեշ անելու համար պահանջվում է 832 օգտագործման վայրկյան, մենք կարող ենք կատարել 1 /0.000834 = 1201 հեշ /վրկ:

Պարզապես պարզ լինելու համար մենք վերցրեցինք տեղեկատվությունը #125552 բլոկից, որտեղ մենք գիտեինք ոչ -ը, այն արդեն արդյունահանված է և օգտագործվում է այդ տեղեկատվությունը որպես փորձնական դեպք `համոզվելու համար, որ մենք կարող ենք նույն հեշը ստանալ ESP8266- ի հետ: Այսպիսով, միանգամայն մսագործ հանքափորի շահույթ ստանալուց հետո դուք պատահականորեն կռահում եք ոչ -ի մասին, դրանում հեշ -բլոկը դնում, իսկ հետո արդյունքը համեմատում այդ բլոկի դժվարության հետ: Եթե հաշը բավարարում է դժվարությունը, ապա այն ներկայացվում է ցանցին ՝ ստուգման:

Լավ, հիանալի է, որ մենք կարող ենք հաշը կատարել, անշուշտ, տոկոսադրույքն ահավոր է, բայց վիճակախաղին նայելիս կռահելը գուշակություն է: Ահա, բայց, ավելի մանրակրկիտ ուսումնասիրելուց հետո շուտով պարզ կդառնա, որ ցանցի հետ հաղորդակցվելու կարողություն ունենալու համար պետք է լիարժեք հանգույց վարել, մի տեսակ ակնհայտ է, երբ կանգ ես առնում և մտածում, թե ինչ է իրականում հանքարդյունաբերությունը:

Այսպիսով, եթե նայեք գծապատկերին, կարող եք տեսնել, որ բիթքոին դեյմոնը, որը բիթքոինի միջուկի մի մասն է, հոգում է ցանցի և հանքագործի միջև հաղորդակցության մասին: Սա իսկապես նշանակում է, որ դուք պետք է Bitcoin- ի միջուկը գործարկեք սերվերի վրա, որպեսզի ESP8266- ը յուրաքանչյուր 10 րոպեն մեկ կարողանա նոր բլոկ գլխարկ ստանալ, այնուհետև կարողանա նորից ներկայացնել ցանցին:

Ես չեմ փորձել այն, բայց թվում է, որ դուք պետք է համաժամեցնեք ամբողջ բլոկչեյնը մոտ 130 Գիգ մոտ, նախքան այն պատշաճ կերպով հաղորդակցվի ցանցի հետ, վիքիում նրանք նշում են, որ որոշակի քայլեր պետք է ավարտվեն նախքան բոլոր գործառույթների հասանելի լինելը, այնքան վստահ դա նկատի ունեն:

Հետևաբար, դա ինձ քաշեց այնտեղ, հետազոտական տեսանկյունից ամեն ինչ շատ հետաքրքիր էր և բավականին զվարճալի էր տեսնել փոքրիկ ESP8266- ը, որը հաջողությամբ հեշ թեստ է պահում, բայց գործնականում ասած, ես չեմ տեսնում, որ շատերը բեռնում են միջուկը ՝ համաժամեցնելով ամբողջը: բլոկչեյն, ամեն ինչ արդիական պահելը, անվտանգության խնդիրներին հետևելը ՝ բլոկը շահելու 1 -ից 1e16 հավանականության համար: Ինձ համար կամուրջ դեպի հեռու:

Հենց սկզբից ես գիտեի, որ հեշի տոկոսադրույքը սարսափելի կլինի, բայց հետաքրքրասիրությունն ինձ ավելի լավը դարձրեց, և ես ստիպված եղա այն թույլ տալ: Մենակ հանքարդյունաբերության փոխարեն, այնտեղ կարող է լինել հանքարդյունաբերական ավազան, որը կարող է միացվել անմիջապես ESP8266- ից ՝ առանց մոնումենտալ ջանքերի, կամ կարող է լինել մեկ այլ ծպտյալ արժույթ, որն ավելի հարմար է: Եթե գտնեք որևէ մեկը, խնդրում եմ ինձ տեղյակ պահեք:

Քայլ 3: Հղումներ

1. ESP8266 Bitcoin Miner GitHub շտեմարան

2. ESP8266 Crypto GitHub շտեմարան

3. Բիթքոինի արդյունահանում դժվար ճանապարհով. Ալգորիթմներ, արձանագրություններ և բայթեր

4. Արգելափակել հեշինգի ալգորիթմը

5. Արգելափակել 125552

Խորհուրդ ենք տալիս: