12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LeveragesAdvent Calendar 2017

Day 22

CPUマイニング試してみた。

Last updated at Posted at 2017-12-22

書くことが思いつかなかったので、少し前に話題になったCoinhiveについて試してみた

Coinhiveが何かって言うと簡単に言うとJavascriptを使ってMoneroって言う仮想通貨を採掘するためのサービスです。
採掘出来るのはビットコインではなくMoneroって言う仮想通貨です。
Moneroは一般のコンピュータでもそこそこの速さで計算出来るように設計されたCryptonightというアルゴリズムを利用しているので、
簡単な話高額なGPUを買わなくてもCPUで採掘出来るよ。

ってことで試してみた。

image.png

Javascriptで採掘出来るのでもちろんブログやWebの訪問者が多ければ多いほど採掘出来る仕組みになっています。

CAATPCHAの変わりに!

用意されている採掘の仕組みが、アクセスしている時間に合わせて採掘するっていう仕組みの他にCAPTCHAの変わりに採掘させるって言う仕組みがあります。

image.png

こんな感じで、メーターがMAXになると認証完了になります。
実際使ってみた感じ。メーターがMAXになるまで1分ぐらいかかるし、正直導入されてるとイラッとすると思います。

考えとしてはすごい面白くていいと思うんですけどね。
何かしらのコンテンツをダウンロードさせる変わりにするって言うとかならありかもしれないですが、ログインの度に1分ぐらい待たされたらログインする気すら失せてしまうので、使い所が難しい。

実際に採掘させてみる。

  • サイトに貼り付けるタグ
<script src="https://coinhive.com/lib/coinhive.min.js"></script>
<script>
var miner = new CoinHive.User('< site-key >','username', [options]);
miner.start();
</script>
  • 10000PV + 10secでどれくらいになる?

image.png

マシン単体でも採掘する

  • Webサイトにタグを貼り付ける以外にもローカルマシン単体でも採掘できる

調べてみたところnodejsでやってるのがあった。
https://github.com/cazala/coin-hive

README.mdを見たら、dockerですぐ立てて試せるっぽいので、試してみた。

FROM node:8-slim

# Install latest chrome and puppeteer dependencies
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - &&\
sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' &&\
apt-get update &&\
apt-get install -y google-chrome-unstable gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget

# Install coin-hive
RUN npm i -g coin-hive --unsafe-perm=true --allow-root

# Run coin-hive
CMD coin-hive <site-key> --username=docker

まるっとパクって site-key のところとオプションでusername付けれるっぽいので、適当に付けて見た。

他のオプション
  --username        Set a username for the miner
  --interval        Interval between updates (logs)
  --port            Port for the miner server
  --host            Host for the miner server
  --threads         Number of threads for the miner
  --throttle        The fraction of time that threads should be idle
  --proxy           Proxy socket 5/4, for example: socks5://127.0.0.1:9050
  --puppeteer-url   URL where puppeteer will point to, by default is miner server (host:port)
  --miner-url       URL of CoinHive's JavaScript miner, can be set to use a proxy
  --dev-fee         A donation to the developer, the default is 0.001 (0.1%)
  --pool-host       A custom stratum pool host, it must be used in combination with --pool-port
  --pool-port       A custom stratum pool port, it must be used in combination with --pool-host
  --pool-pass       A custom stratum pool password, if not provided the default one is 'x'
  • 実際に実行したら今感じになった。

image.png

  • 実際に実行したらマシンのファンが最高潮になりました。自宅マシンで数時間(だいたい3時間ぐらい)実行して見て結果

image.png

501760Hashes採掘出来たらしい。

current payout 0.00007240XMR per 1M hashes

1M hashesで 0.00007240XMRらしいので、 24時間30日起動しっぱなしだとしたら、メンドイので500,000hashesで計算。
1日4Mhashs * 30日 = 120Mhashes
0.008688XMR採掘出来るらしい

1XMR = 46000円(投稿日現在) = 約400円!!!!!

マシンフル稼働して、このレベル。全然使えない。。。コア数の多いCPUで回せば、もう2〜3倍ぐらいまでは軽く行けると思うけども、それでもそんなもんですね。マシンが壊れてしまうリスクの方が圧倒的に高いと思います。

ちなみに同時100PVぐらいでは、700Hash/sぐらいでした。

先程の10000PVでの結果だと約1.2MHash 約4円 1万PVで4円 毎日それくらい来ると仮定すると、120円

GoogleAdsenseとかの広告と変わる収入として考えても安すぎて、全然ですね。

ちなみにJSの中身見てたら、こんな感じでズラーーーっと600〜700行書いてあったから読むのやめた。

CoinHive.CRYPTONIGHT_WORKER_BLOB = CoinHive.Res(
    " self.CoinHive=self.CoinHive||{};self.CoinHive.CONFIG={LIB_URL:\"https:\/\/coi" +
    "nhive.com\/lib\/\",ASMJS_NAME:\"worker-asmjs.min.js\",REQUIRES_AUTH:false,WEBS" +
    "OCKET_SHARDS:[[\"wss:\/\/ws001.coinhive.com\/proxy\",\"wss:\/\/ws002.coinhive." +
    "com\/proxy\",\"wss:\/\/ws003.coinhive.com\/proxy\",\"wss:\/\/ws004.coinhive.co" +
    "m\/proxy\",\"wss:\/\/ws005.coinhive.com\/proxy\",\"wss:\/\/ws006.coinhive.com" +
    "\/proxy\",\"wss:\/\/ws007.coinhive.com\/proxy\",\"wss:\/\/ws029.coinhive.com\/" +
    "proxy\"],[\"wss:\/\/ws008.coinhive.com\/proxy\",\"wss:\/\/ws009.coinhive.com\/" +
    "proxy\",\"wss:\/\/ws010.coinhive.com\/proxy\",\"wss:\/\/ws011.coinhive.com\/pr" +
    "oxy\",\"wss:\/\/ws012.coinhive.com\/proxy\",\"wss:\/\/ws013.coinhive.com\/prox" +
    "y\",\"wss:\/\/ws014.coinhive.com\/proxy\",\"wss:\/\/ws030.coinhive.com\/proxy" +
12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?