Monero miner v JavaScriptu

Od října do konce listopadu roku 2017 jsem na Českém Tuňákovi spustil experimentálně těžební script algoritmu cryptonight, lépe řečeno MONERO – XMR. Jedná se o kryptoměnu, jejíž těžba na CPU je možna skrze JavaScriptové asynchronní API WebWorkers.

Proč těžba kryptoměn?

Český Tuňák odmítá zapojit web do reklamní infrastruktury a vydělávat tak na pochybných impresích, manipulacích a sdílení dat. Web je z principu nevýdělečný, nezávislý a tvořený čistě pro radost z toho, že je. Zároveň jsem si hrál s myšlenkou, že po dobu čtení článků na Tuňákovi by mohla drobná část nadbytečného výpočetního výkonu čtenářova CPU pracovat pro propočítávání hashů.

Teorie za tím zní:

Lze zaplatit provoz webu jinak, než reklamou? Tedy těžbou kryptoměny?

Coin-hive.com

Vytvořil jsem si účet u služby https://coinhive.com, která poskytuje JavaScriptové knihovny a distribuční API, které jsou schopné těžit MONERO. Coin-hive si z každé vytěžené jednotky bere 30%. Což není málo, ale je to zajím jediná mě známá služba, která něco podobného nabízí, tudíž jsem to prostě chtěl zkusit.

Dokumentace: https://coinhive.com/documentation/miner

User: wm0qtb5OmADLM2Qr4FVArFdRi8xJihrF

Proof-of-concept

Když jsem pustil miner bez úprav parametrů, celkem to začalo smažit CPU, takže první jasná konfigurace je snížení výkonu mineru. K tomu lze použít kombinaci dvou ze tří dostupných parametrů.

  • cores – číslo určující počet jader, na kterých se má těžit. Zkoušel jsem přes core-estimator a dělit 2, to celé zaokrouhleno nahoru, tedy aby polovina z vašich jader byla použitelná k těžbě.
  • autoThreads – nad API navigator.getHardwareConcurrency (které v mém případě modifikuji přes core-estimator) automaticky odhaduje volné prostředky. Ve výsledku efektivnější, než moje varianta s cores.
  • thottle – nastavuje interrupce, tudíž hodnota 0.7 říká, že 70% času bude miner NEAKTIVNÍ.

Dále jsem si k tomu dopsal debugger (Notify) a přidal asynchronní loader.

Celková konfigurace by tedy měla žrát cca 15-20% výkonu vašeho CPU. Což jsem usoudil, že by nemělo být obtěžující a pro tento experiment dostačující. BTW: spousta reklam na netu žere mnohem více zdrojů.

Trakař

Výsledky za týden

Za týden se skrze tento script spočítalo 2,5 milionu hashů, což odpovídá mému zisku 75 haléřů. Pokud by mě to mělo živit, asi bych brzy zhebnul. Pokud bych však 15 000 krát zvýšil návštěvnost webu, už by to mohlo být zajímavé a bylo by i na kaviárové toasty. 

 

Strejda Google

Celý script jsem na web umístil přes Google Tag Manager.

Po týdnu se mi v administraci GTM objevila zajímavá hláška.

Tak nějak jsem hned tušil, která bije, takže script je nyní odstavený a budu jej muset předělat přímo do kódu ČeskéhoTuňáka. Neshledávám totiž službu coin-hive.com za kyberkriminální. Navíc jsem dělal základní analýzu scriptů mineru a i analýzu trafficu a krom hashů se neposílalo nic závadného.

Psal jsme tedy feedback do Google, jak to vlastně s tou těžbou a umístěním obdobných tagů v GTM je. Čekám na případné vyjádření. Kdyžtak doplním. Asi nedoplním, jsou to dva měsíce a Google mlčí.

 

End of experiment

2. prosince jsem experiment ukončil. Celkový výsledek je, že za dva měsíce script na webu vytěžil Monero za 11 Korun českých. Moc krásné. Ale měsíčně to vydělá sotva na lahváče z Lidlu.

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

This site uses Akismet to reduce spam. Learn how your comment data is processed.