GPUに全く縁のない素人がCPUマイニングを構築してみた


ブロックチェーンのAdvent Calendar 2017が空いてたので
飛び入りで参加さしてもらいました。

私の前提としては、GPUを使う人生をそもそも歩んでこなかったし、
グラフィックなんてCPUの内蔵グラフィックス
あるんやからそれ使えればええんや!と思ってる人でした。

確かにそう思ってました。

ました。。。

しかし、世は大GPU時代。機械学習での画像処理はGPUがないと回せないし、HMDで未来を体験したくてもオンボードグラフィックでは無理。もちろんマイニングなんて以ての外。

そして、Youtuberになるた(ry

途方に暮れていたひねくれ者の私はCPUマイニングという僥倖に出会ったのであった。

という長い前置きは置いといて、中身に入りましょう。

今回はWindowsに限って話します。

実行ファイルのダウンロード

まずはBitzenyの公式サイトから自身のOSに
合った実行ファイルをダウンロードして下さい。殆どの方がSSE4.1をダウンロード
して問題はないとは思いますが、気になる方はこちらを確認するとよいでしょう。

注意していただきたい点が、minerd.exeにウイルスが混入していた事が過去にあり、殆どのアンチウイルスソフトでminerd.exeがウイルス判定されます。1
したがって、アンチウイルスソフトの設定でminerd.exeをホワイトリストに登録して下さい。

また、ホワイトリストに入れてもソフトによってはアプリケーションレベルでのファイアウォールに引っかかり、通信できない場合もあるので、そうなった際も、別個ホワイトリストに入れて頂けたらと思います。

プールマイニング

次にマイニングプールでは、個別に掘るのは厳しくなっている現状もあり、マイニングプールを行う前提で話を進めます。2

マイニングプールは多数あり、以下に一部抜粋させていただきます。
(worker数は本エントリ記載時点)
その他のプールはBitzenyWikiをご覧ください。
詳しい登録方法などはここでは省略します。

ハッシュレートに自信のある方(最低5Hz/s必要)は
招待制にはなりますが、選民プールが個人的におすすめです。
運営している方が、TwitterやBitzenyフォーラムにおり、
連絡が付きやすいという点でも安心できると思います。

また、 サーバによっては非常に不安定なところもあるので、マイニングプール変更に備えて以下に記載するworker設定は同様にしておいた方がいいと思います。

ログイン後、それぞれのサイトのMy Account>My Workersでworkerを登録をします。
次にワーカー名とパスワードを設定し、Add New Workerをクリックします。
私の場合、ワーカー名はどのホストかわかるように、パスワードはデフォルトでpasswordとしています。
名前に関して、全てのホストを同じworkerとして登録することは可能ですが、PC毎に分けることを推奨しています。(台数が多くなると管理がしにくくなるため)

batファイルの作成とマイニング

次に、ローカル環境に戻ってバッチファイルの設定をします。
ここで、保存してある場所にPATHが通ってなければ、環境変数にminerd.exe
保存してある場所を記述しておきましょう。下記の例では、%USERNAME%下に
ダウンロードしたディレクトリをフルパスで指定する場合の例を以下に記載します。3

zny_miner.bat
C:\Users\%USERNAME%\minerd.exe -a yescrypt -o
     stratum+tcp://jp.lapool.me:3114 -u ユーザ名.ワーカー名 -p パスワード

プールはLA Bitzeny Poolになります。
プールによって難易度別にポート番号を分けている
場合もあるので適宜確認して下さい。

他のプールに変更する場合は、stratum+tcp:\\以下の
ドメイン名とポート番号を適宜変更して下さい。
この場合もbatファイルにPATHを通している必要があります。

batファイルを実行して、以下のように(yay!!)と
画面にでればマイニングができています。
簡単ですね。おめでとうございます。

バックグラウンドで動かしたい場合

マイニングPCで作業をしていてターミナルが邪魔という事があります。
その場合はWIndowsに標準で含まれているVBScriptを使用して
zny_miner_bg.vbsを作成し、バックグラウンドで実行しましょう。
スクリプトは以下になります。zny_miner_bg.vbs
実行すれば、バックグラウンドでマイニングされます。

zny_miner_bg.vbs
Set sh = CreateObject("WScript.Shell")
sh.Run "miner.bat" ,0 ,False

バックグラウンドで動作するので、まずはbatファイルで正しく
マイニングできているかテストしておくといいのかもしれません。

上記のような場合、taskmgrを開いて、minerd.exeのプロセスの優先度を下げたり
して、CPUリソースを上手く分けたほうがいいかもしれません。
(尤も、CPUマイニング専用PCとして利用する人が多いとは思いますが、、、)

ウォレットをどこで保持するか

公式サイトにあるウォレットでもいいのですが、初回に2014年からのブロックの
全記録を更新するため、最新の状態まで記録するのに最低でも半日以上かかります。

また、その後の起動も鬼のように遅くストレスがたまるだけなので正直あまりオススメできません。

そこで、Webウォレットのbitzenyウォレットを利用しましょう。また、マイニングプールで得られたコインはプールの自動送金機能などを使用して、各自自身のウォレットに送金しておきましょう。

先日、ウクライナの取引所Liquiの1200億円のハッキングなんて話もあり、Webで持つのは一抹の不安はありますが、サーバダウンで落ちまくったりするプールサーバに直置きするよりかは自身のWebウォレットを持っておく方がまだ安心できるのではないでしょうか?

最後に

既に行なってる人には当たり前レベルの話になってしまいましたが、CPUでもマイニングできるという事をしらない人はこれを期にマイニングをはじめてみては如何でしょうか。

ところで最近、BItzenyの開発者(@bitzeny)が戻ってきたみたいで、一部界隈では盛り上がってますね。大量保有者が存在する現状をどうするんだろうか、と個人的に心配しております。

気になったことといえば、プールマイニングにて自身でブロックを掘り当てた場合、個人で掘っても同様の難易度で発見者になる可能性があるのかということです。

Bitzenyフォーラムでも掘り当てられるスペックがあるのであれば、ソロマイニングでも掘り当てられるという人もいれば、皆のハッシュレートを使ってるのでソロでは掘り当てられないと言っている人もいます。

どちらが正しいのですかね。詳しい方教えて頂けると幸いです。

それでは。


  1. 現在は問題ありません。 

  2. Bitcoinのような状態ではありません。 

  3. stratumってNTPのプロトコルだと思ってました。