Բովանդակություն:
Video: ESP8266 Bitcoin Miner: 3 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Երբ 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
Խորհուրդ ենք տալիս:
Ստացեք BITCOIN ՈIԻ ԳԻՆ TTGO ESP32: 10 քայլ
GIT BITCOIN LIVE PRICE TTGO ESP32. Այս ձեռնարկում մենք կսովորենք, թե ինչպես ստանալ Bitcoin- ի ընթացիկ գինը ԱՄՆ դոլարով և Եվրոյով ՝ օգտագործելով TTGO ESP32 և Visuino: Դիտեք տեսանյութը: (Նոր թարմացված ֆայլ ՝ ներբեռնման համար ստորև!)
Bitcoin Ticker գրաֆիկով `8 քայլ
Bitcoin Ticker With Graph. Ես դա արել եմ ՝ հիմնվելով ԲԹTC գների տիկերի նախագծի վրա, որը գների մասին տեղեկատվություն է ստանում coinmarketcap.com- ից ՝ ի սկզբանե գրված Բրայան Լոֆի կողմից: Նա օգտագործեց ESP8266- ը, որը Arduino- ի հետ համատեղելի տախտակ է, որն ունի ներկառուցված WiFi: Ինչպես նա նկարագրեց
Պատկերացրեք ձեր Bitcoin- ի շահույթն ու կորուստը Arduino- ի և Python- ի միջոցով. 6 քայլ
Պատկերացրեք ձեր Bitcoin- ի ձեռքբերումն ու կորուստը Arduino- ի և Python- ի հետ. Հիմնական գաղափար Անձամբ ես ծպտյալ արժույթի ներդրող եմ: Բայց ես նաև աշխատանք ունեմ, որին պետք է մասնակցեմ: Այսպիսով, ես ի վիճակի չեմ հետևել բիթքոինի գներին, ինչպես րոպեում 10 անգամ: Այնուամենայնիվ, ես դեռ ուզում եմ իմանալ ՝ ես փող եմ վաստակում, թե կորցնում: Այսպիսով
Rekt-O-Matic Turbo S: Մեկ տախտակ Bitcoin Ticker: 12 քայլ
Rekt-O-Matic Turbo S: Single Board Bitcoin Ticker. Բաց թողե՞լ եք Bitcoin- ի գնի մեկ գիշերվա աճը $ 7500-ից $ 10300-ի 2019 թվականի հոկտեմբերի 25-ին: Դե ես արեցի: Նման բան տեղի է ունենում ծպտյալ աշխարհում: Այն, ինչ ձեզ հարկավոր է, մարդիկ են theRekt-O-Matic Turbo S: Սա Bitcoin- ի գնի տիկեր է ՝ գեղեցիկ OLED- ով
Bitcoin հանքարդյունաբերություն ձեր ազնվամորի Pi- ի վրա. 6 քայլ
Bitcoin Mining on Your Raspberry Pi. Bitcoin- ը կրիպտոարժույթ է, էլեկտրոնային կանխիկի ձև: Դա ապակենտրոնացված թվային արժույթ է ՝ առանց կենտրոնական բանկի կամ մեկ ադմինիստրատորի, որը կարող է օգտագործողից օգտվողին ուղարկվել bitcoin ցանցի միջոցով: Bitcoin- ի ձեռքբերման երկու հիմնական եղանակ կա