書くことが思いつかなかったので、少し前に話題になったCoinhiveについて試してみた
Coinhiveが何かって言うと簡単に言うとJavascriptを使ってMoneroって言う仮想通貨を採掘するためのサービスです。
採掘出来るのはビットコインではなくMoneroって言う仮想通貨です。
Moneroは一般のコンピュータでもそこそこの速さで計算出来るように設計されたCryptonightというアルゴリズムを利用しているので、
簡単な話高額なGPUを買わなくてもCPUで採掘出来るよ。
ってことで試してみた。
Javascriptで採掘出来るのでもちろんブログやWebの訪問者が多ければ多いほど採掘出来る仕組みになっています。
CAATPCHAの変わりに!
用意されている採掘の仕組みが、アクセスしている時間に合わせて採掘するっていう仕組みの他にCAPTCHAの変わりに採掘させるって言う仕組みがあります。
こんな感じで、メーターが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でどれくらいになる?
マシン単体でも採掘する
- 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'
- 実際に実行したら今感じになった。
- 実際に実行したらマシンのファンが最高潮になりました。自宅マシンで数時間(だいたい3時間ぐらい)実行して見て結果
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" +