xmr-stak-cpuで仮想通貨Moneroをマイニングしてみた(Linux編)
最近仮想通貨が盛り上がっていることもあり、家に古いPCもあったことから、興味本位で仮想通貨のマイニングをしてみました。
PCは6年ほど前に、約3万円で購入したものですので、かなり古いです。当時のPCの相場価格からしてもかなり安く、低スペックPCのため、あまり収益化は期待できませんが、一体どれくらい稼げたのかも、この記事の最後に報告できればと思います。
仮想通貨・マイニングツール
まずマイニングを行う前に、どの仮想通貨をマイニングするかを選ぶ必要があります。
仮想通貨の代表例はビットコインですが、インターネット上の記事を色々と読むと、ビットコインの採掘は既にビジネス化が進んでおり、家庭用のPCでは採掘が難しいということを学びました。
インターネット上では、いろんな人が、いろんな仮想通貨を推しているのですが、今回は「Monero」という仮想通貨を選びました。選んだ理由?語感です。なんかかわいかったので。
次に、採掘するマイニングツールを選びます。
今回は、Github上で公開されている「xmr-stak-cpu」というマインニグツールを利用してみました。xmr-stak-cpuは、CPUを使って仮想通貨を発行する「CPUマイナー」の1つです。
また、このxmr-stak-cpuは、上記のMoneroの公式ホームページでも紹介されているツールのため、ある程度の安全性は確保されているような気もします。
利用したPCのスペック
もともとはWindowsを積んでいたのですが、Windowsを利用することが殆どなくなったので、CentOSを入れ直しました。
はじめに申し上げておくと、私ハードウェアは詳しくないので、このへんはあまりわかりません。足りてない情報があれば教えてください。
マイニングツールのコンパイル
まずは、上記のGithubのURLから、ソースを適当な場所にclone
します。
$ git clone https://github.com/fireice-uk/xmr-stak-cpu.git
次に、コンパイルをします。
コンパイルの前にdonate-lecel.h
を確認しておきましょう。この値を調整することで、今回のハッシュパワーの一部を開発者に寄付するかどうかを設定できます。デフォルトの値は2.0 / 100.0
となっています。これは100 minutesのマイニングを行った時、98minutes分の成果を自分が、2minutes分の成果を、開発者が受け取る、という意味です。
もちろん、値を低くすると、自分の受け取り分が増えますが、開発者に敬意を払う意味でも、あまり低い値にすることはおすすめしません。
コンパイルコードは、Github(xmr-stak-cpu/LINUXCOMPILE.md at master · fireice-uk/xmr-stak-cpu · GitHub)にも載っていますが、以下の流れで進めていきます。
まず、必要なパッケージをインストールします。
$ sudo yum install centos-release-scl cmake3 hwloc-devel libmicrohttpd-devel openssl-devel $ sudo yum install devtoolset-4-gcc*
SCLを使って、シェルを起動します。
$ sudo scl enable devtoolset-4 bash
CMakeLists.txt
があるディレクトリ上で、以下のコマンドでコンパイルを行います。
# cmake . # make install
私の場合は、コンパイル中に何度か、利用しているライブラリのバージョンが古いため、コンパイルできませんというエラーメッセージが出ましたが、逐一対応していけば、問題なくコンパイルできました。
また、Githubではcmake3
コマンドを利用するように記載されていましたが、うまく行かなかったのでcmake
でコンパイルしています。
configファイルの設定
コンパイルが終わった状態で、いざ起動しようとすると、「configファイルを設定して下さい」というエラーメッセージが表示されるので、設定を行います。
CPUの設定
まずはCPUの設定です。私もあまり詳しくはないのですが、とりあえずconfig.txt
を開き、cpu_threads_conf
の値を、以下のように修正します。
"cpu_threads_conf" : [ { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : false }, { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : false }, ],
スレッド数は、各マシンのCPUのスペックに合わせて調整すれば良いと思います。私のマシンでは、CentOSが認識している仮想プロセッサの数が4つだったので、始めは4つ記載していたのですが、何故か2つのほうがTotalのマイニング効率が高かったので、上記のように設定しています。
2chを見ていると、物理コアの数にスレッドの数を合わせると最速になる、という情報もありました。以下のコマンドで、コア数を確認できます。私のマシンの場合は、やはり「2」でした。
$ grep cpu.cores /proc/cpuinfo | sort -u 2
以下のQiitaの記事にも、CPU設定の例が記載されていますので、確認してみると良いでしょう。
アドレスの設定
次に、マイニングプールと送金先の設定を行います。
同じくconfig.txt
の中には、"pool_address"
と、"wallet_address"
を指定する箇所がありますので、自分で選択したマイニングプールのアドレスと、送金先(ウォレット)のアドレスを指定します。
私は、マイニングプールに「MoneroHash - Monero Mining Pool」というサービスを利用しています。特に会員登録の必要もなく、利用できます。ただ、私自身、どのプールが良いのかなど、比較検討したわけではないので、もっと良いプールがあるかもしれません。
とりあえず、
MoneroHash - Monero Mining Pool
を開くと、ポート番号などの情報が見れます。マシンのスペックに合わせて、適切なものを選択しましょう。私は弱小マシンなので、一旦3333番ポートを選択します。この場合、"pool_address"
に指定する値は、「monerohash.com:3333」となります。
次に、ウォレットアドレスですが、今回は、「ビットコイン(Bitcoin)を最短10分で購入 | Coincheck(コインチェック)」という日本のサービスを利用することにしました。
最近、Moneroの受け取りが可能になったようです。
登録して運転免許証などの写真を送ると、約1日で受取先のアドレスを発行することが可能になります。免許証の写真を送るときに、自分の顔と運転免許証が1枚の写真に収まるよう、自撮り(セルフィー)した写真を要求されるので、部屋の中で1人で自撮りをするという精神的な苦行を行う必要があります。
ちなみに、ウォレットアドレスは、長くランダムな英数字となります。
2つのアドレスが発行できたら、それぞれをconfig.txt
に記載します。イメージ的には、以下のようになります。パスワード欄は空欄のままでOKです。
"pool_address" : "monerohash.com:3333", "wallet_address" : "(ランダムな英数字)", "pool_password" : "",
HTTPサーバの設定
最後に、現在のマイニング状況を、スマホなどのブラウザから簡単に監視するため、httpサーバの設定を行います。
"httpd_port" : 0,
という設定項目があるため、0ではなく、適当なポート番号を入力します。既存のサービスと競合しないよう、出来るだけ大きめの数字がおすすめです。
私は、8888と設定しているため、以下のようになります。
"httpd_port" : 8888,
ここまでくると、いよいよマイニングの開始です。
マイニングを始めよう!
マイナーの起動方法
マイナーの起動は、コンパイルを行ったところと同じディレクトリで、以下のコマンドを叩くと実行できます。
$ xmr-stak-cpu
実行中に、「h」キーや、「r」キーを押すと、ハッシュレートや結果を表示することができます。
また、httpサーバの設定を行ったので、ブラウザからでも結果にアクセスすることが可能です。
そのためには、まず、マイニングをしているマシンのローカルIPアドレスを調べます。ifconfig
などのコマンドで調べることが出来ます。
$ ifconfig eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.16 netmask 255.255.255.0 broadcast 192.168.0.255
私の場合は、192.168.0.16
がローカルIPアドレスでしたので、マイニングしているPCもしくは、そのPCと同じLAN内にある、スマホなどの端末から、「http://192.168.0.16:8888/」にアクセスします。
すると、現在のマイニング情報がリアルタイムで閲覧できます。アクセスが拒否される場合は、マシンのファイアウォール設定を見直す必要があるかもしれません。
マイニングの結果
さて、丸1日程度、マイニングをやってみました。
まず、ブラウザから確認できるハッシュレートは、以下のようになりました。
およそ43H/sということですが、これ、めちゃ遅いです。
2chなどの情報を見ると、スマホアプリでのマイニングで10〜50H/s、専用にチューニングされたマシンだと500H/s程度の速度が出るようです。
結局、プールにいくらたまったのか、MoneroHashの画面を確認してみましょう。1日稼働させ続けた結果が、以下の通りです。
日本円になおしてみましょう。現在の相場(1XMR = 10535 JPY:2017年10月 1日現在)で換算すると、およそ「6円」でした。6円。。。ろくえん。。。
1ヶ月稼働させ続けると、およそ180円を稼ぐ事になります。明らかに電気代のほうが高くなりそうですね。
まあ、オンボロのパソコンだったので、今回は仕方ないかと思います。
AWSとかGCPとかで、もう少しスペックのよいサーバを借りて、再度試してみたいと思います。