【完全版】coinhiveの使い方

このエントリーをはてなブックマークに追加

coinhiveとは

coinhiveとは、マイニングを中央集権的なハイスペックなリソース(GPUやCPU)のPCで行うものではなく、自分のサイト(ブログ等)を閲覧しているユーザのCPUでマイニングすることを可能にするサービスです。

仕組みとしては、下記の通りです。

  1. サイト運用者がサイトに自分のSite Keyを埋め込んだJavaScriptのコードをHTMLファイルに仕込み、ユーザ側で実行できるように。

  2. ユーザがサイトをブラウザで閲覧すると、バックグラウンドでマイニング開始

  3. サイト運用者がXMRを獲得

coinhiveの仕組み

どの程度儲かるのか

coinhiveを開始してから、12日程度経ちますが、43.25円ほど獲得しているようです。(2017/10/17のレートで)

ダッシュボード

自分のWebページにScriptタグを埋め込む

下記のどちらかのJavaScriptを仕込めば、マイニングが始まります。(coinhiveに登録し、site-keyを取得しておく必要があります。)

ユーザを指定する場合

<script src="https://coinhive.com/lib/coinhive.min.js"></script>
<script>
var miner = new CoinHive.User('<site_key>', 'john-doe', {
	threads: 4,
	autoThreads: false,
	throttle: 0.4,
	forceASMJS: false
});
	miner.start();
</script>

ユーザを指定しない場合

<script src="https://coinhive.com/lib/coinhive.min.js"></script>
<script>
var miner = new CoinHive.Anonymous('<site_key>', {
	threads: 4,
	autoThreads: false,
	throttle: 0.4,
	forceASMJS: false
});
	miner.start();
</script>

ユーザを指定した場合、[Dashboard]の[New Users]という箇所で、ユーザ別のマイニング情報が取得できます。

私は、PC用のコードには、

var miner = new CoinHive.User('1234567890', 'PC', {
	threads: 4,
	autoThreads: false,
	throttle: 0.4,
	forceASMJS: false
});

Smart Phone用のコードには

var miner = new CoinHive.User('1234567890', 'SP', {
	threads: 4,
	autoThreads: false,
	throttle: 0.4,
	forceASMJS: false
});

な感じで設定して、PCとSPとで、マイニング情報を整理しています。

また、autoThreadsをtrueにすると使用するthreadsが自動で設定され、forceASMJSをfalseにすると、より速いアルゴリズムを使用するそうです。

threadsとthrottleについては、次項を参照ください。

マイニングをシミュレーションしてみる。

下記のスタートボタンをクリックしてみてください。 クリックすると、スレッドが1つで10%のスピードでマイニングが開始されます。

threadsやthrottle(SPEED)を変更するとハッシュを生成する速度に変化が見られます。なお、throttleが0.9の場合は10%で0.8の場合は20%となります。

<em>マイナーUIのロード中です・・・</em>

Opt-Inメッセージを使用する方法

このようなOpt-Inのメッセージを表示させることも可能となります。

Opt-In

<script src="https://coinhive.com/lib/coinhive.min.js"></script>

の代わりに

<script src="https://authedmine.com/lib/authedmine.min.js"></script>

こちらを使えば可能です。

Opt-Inメッセージの再表示時間を制御するには

Opt-Inメッセージを表示させるようにした場合に、ユーザが一度キャンセルしても、他のページに遷移するとまたOpt-Inメッセージが表示されます。
もし、一度キャンセルされた場合に次回の再表示を遅らせたい場合は、didOptOutメソッドを使うと良いです。miner.start();を下記のようにif文の中に入れてあげましょう。

// 最初のキャンセルから60秒経つと再表示する
if (!miner.didOptOut(60)) {
	miner.start();
}

よく使うAPI(HTTPメソッド: GET編)

APIを使うと様々な情報を取得することができます。ここでは、使用頻度が高そうなGETのAPIを3つ紹介します。
コード例ではcurlコマンド(Linuxコマンドの一つ)を使用していますが、PHPのGuzzle等を使っても可能です。
使用している言語のHTTPクライアントライブラリを使って、色々な情報を取得してみてください。
GET系のAPIは何回実行しても、問題ないので深く考えず実行してみるといいと思います。
※環境としてはmac,Linuxを想定しています。Windowsであれば、適宜curlコマンドのインストールが必要です。

/user/balance

  • ユーザ名・指定したユーザのハッシュ生成数・引き出したハッシュ・ハッシュ残高の取得
    curl "https://api.coinhive.com/user/balance?name=<user's name>&secret=<your private secret-key>"
    

/user/top

  • ハッシュの生成順にユーザ毎のハッシュ生成数・引き出したハッシュ・ハッシュ残高の取得
    curl "https://api.coinhive.com/user/top?secret=<your private secret-key>"
    

/stats/site

  • 現在のハッシュレート・総ハッシュ生成数・未払いXMR・支払い済みXMR・サイト名・総ハッシュ生成数とハッシュレートの履歴の取得
    curl "https://api.coinhive.com/stats/site?secret=<your private secret-key>"
    

jqコマンドを使って出力を加工する

プログラミング言語を使って、API実行後の値を加工することは簡単です。(プログラミングに詳しいのであれば)
ただ、普段プログラミングをしない人にはハードルが高いと思います。 その場合jqコマンドを使用すると楽に加工することが可能です。 (jqコマンドはデフォルトではインストールされていないと思うので適宜インストールしてみてください。)

ハッシュレートと総ハッシュ生成数を取得

// とりえあえず、整理して出力
curl "https://api.coinhive.com/stats/site?secret=<your private secret-key>" | jq .

// ハッシュレートと総ハッシュ生成数のみ取得するように
curl "https://api.coinhive.com/stats/site?secret=<your private secret-key>" | jq  '. | [.hashesPerSecond, .hashesTotal]'

// csv形式に
curl "https://api.coinhive.com/stats/site?secret=<your private secret-key>" | jq '. | [.hashesPerSecond, .hashesTotal] | @csv'

// ダブルクォーテーションを除く
curl "https://api.coinhive.com/stats/site?secret=<your private secret-key>" | jq -r '. | [.hashesPerSecond, .hashesTotal] | @csv'

参考URL

https://coinhive.com/


おすすめ記事
© 2016-2017 Fridles All Rights Reserved.