久々の投稿です..。最近巷でブロックチェーンや仮想通貨のニュースが話題になる機会が多くなってきたこの頃、僕も仮想通貨についていろいろ関心がでてきて、ブロックチェーン・仮想通貨の仕組みについてここ最近いろいろ調べたりしてました。
中でもこちらの本はブロックチェーン、ビットコインとは何ぞやという取っ掛かりにはもってこいの本で、僕もこの本で仮想通貨の将来性やブロックチェーンのいろんな活用法に感銘を受けてさらに関心に拍車をかけました。
で、この記事の本題なのですが、何か無料で、かつ手軽に仮想通貨のminingができないかと調べた時に、メジャーなオルトコインの一つであるMoneroのminingをGCPのmicroインスタンスでやってみようということになりました。
何故Moneroを選んだのかと言いますと、Moneroはminingを高性能PCでなくてもコンシューマー向けPCでもminingできるようなっているのと、CPUで動くminig用 serverが提供されているという点があります。
では早速GCPでVMインスタンスを作成していきましょう。GCPのアカウント、プロジェクトは作成済みという前提で進めていきます。
GCPのVMインスタンスを作成
まず、”Compute Engine” -> “インスタンスを作成” に進んで、以下のようにゾーンをUSのどこか(無料プランが適用されるのはUSゾーンのみ)を選んで、マシンタイプをmicroに設定してください。
また、OSは(個人的に普段使い慣れてる)ubuntu 17.x を指定します。
インスタンス起動後、sshでサーバーにアクセスします。以下の”gcloudコマンドを表示”からgcloudのcommandをコピーしてコンソールからサーバーにアクセスするのが最短です。(未ログインの場合はgcloud auth login を忘れずに)
サーバーに無事にアクセスできたら早速Moneroのmining serverをsetupしていきましょう。
Mining serverのインストール
CPUでmining可能なMiningサーバーが以下のgithub repoで公開されているのでこちらを使います。
git commandを使ってgithubからcloneしましょう。
git clone https://github.com/fireice-uk/xmr-stak-cpu.git
cd xmr-stak-cpu
続いて以下のコマンドを使ってbuildしていきます。
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-5 g++-5 make
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 1 --slave /usr/bin/g++ g++ /usr/bin/g++-5
curl -L http://www.cmake.org/files/v3.4/cmake-3.4.1.tar.gz | tar -xvzf - -C /tmp/
cd /tmp/cmake-3.4.1/ && ./configure && make && sudo make install && cd -
sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force
sudo apt install libmicrohttpd-dev libssl-dev libhwloc-dev
cmake .
make install
設定ファイルを編集していきます。bin ディレクトリ配下にconfig.txtがあるので、viで開いて編集します。
$ vi ./bin/config.txt
以下のCPU使用方法について内容を追記します。
"cpu_threads_conf" :
[
{ "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 0 },
],
Moneroのwallet address を作成する
報酬を送るためのwalletが必要なため、MyMoneroでwalletのaddressを取得します。ちなみに取引所で発行されるwalletのaddressはまだ未対応のため使用できないとのことです。
config.txt の wallet_address の項目に自分のaddressを追記しましょう。
"wallet_address" : "4AH9yJBhSMej9nju1SArtP4sFPfkHwxAHbw56E6E12wSJYqEh8yL6wCdHTCCAwDuoFhNNp8nH5gXeQdyoCZGcysVPGyVgJD",
これでconfig.txtの設定は完了です。
MEMORY ALLOC FAILED への対処
ubuntuの初期設定だと、以下のエラーがでてきます。
[2017-10-10 04:25:18] : MEMORY ALLOC FAILED: mlock failed
[2017-10-10 04:25:18] : MEMORY ALLOC FAILED: mlock failed
large page supportのために以下のコマンドを実行してください。
sudo sysctl -w vm.nr_hugepages=128
また、/etc/security/limits.conf に以下のlineを追加します。
* soft memlock 262144
* hard memlock 262144
変更した設定を適用するためにはconsoleを一度logoutして再度loginしてください。
Systemdに起動コマンドを登録する
次にVMインスタンスを再起動してもmining serverを止めないようにsystemdに登録します。
$ sudo vi /etc/systemd/system/monero-mining.service
以下の内容を記述します。Homeディレクトリ名は自分のアカウントに置き換えてください。
[Unit]
Description= monero mining
After=network.target[Service]
Type=simple
PIDFile=/run/xmr-stack-cpu.pid
ExecStart=/home/toshipon-macbook-pro/xmr-stak-cpu/bin/xmr-stak-cpu -c /home/toshipon-macbook-pro/xmr-stak-cpu/bin/config.txt
ExecReload=/sbin/start-stop-daemon[Install]
WantedBy=multi-user.target
serviceファイルが認識されているか確認します。
$ sudo systemctl list-unit-files --type=service | grep monero
monero-mining.service disabled
serviceを有効化してmining server を起動します。
$ sudo systemctl enable monero-mining
$ sudo systemctl start monero-mining
$ # 起動できているか確認
$ sudo systemctl status monero-mining
これでminingが無事に開始されました!
結局いくら稼げるの?
mining serverをconsoleで直接実行した際に提供されているcommandでHashrateを調べることができます。microインスタンスでminingできるスピードはだいた9.4 H/s というところでしょう。
HASHRATE REPORT
| ID | 2.5s | 60s | 15m |
| 0 | (na) | 8.0 | 9.4 |
---------------------------
Totals: (na) 8.0 9.4 H/s
Highest: 23.4 H/s
mining-calculator というサービスがあるのでこちらでHashrateから現在のレートでUSDの報酬額の目安をみることができます。
https://www.monero.how/monero-mining-calculator
年間で約$5.. Moneroを自分(gcpのmicroインスタンス)が支えていると思えばいいボランティア活動なのかなと思えるかもしれません..
まとめ
MiningはハイスペックPCが必要だったり電気代の消費がすごいというイメージが有りますが、Moneroみたいに個人でもとっつきやすいコインもあるということでした。他にもブロックの承認方法がコインの所有数で決まったり(Proof of Stake)や、取引量が関わってくる(Proof of Importance) 等別の手段でMiningに関われる通貨も存在するのでこちらもいろいろ試してみたいですね。
ちなみに、MoneroやBitcoinを簡単に購入したい場合は日本で唯一Moneroを販売している Coincheckがおすすめです。