Corredor

ウェブ、プログラミングの勉強メモ。

CentOS Linux で BitZeny をマイニングしてみる

以前、Monero (XMR) をマイニングするために MinerGate というソフトを Windows・Mac で動かしたりしていた。結果、GeForce GTX1080 では換金ラインまで貯めるのがしんどすぎて止めてしまった。

GPU マイニングはしんどいので、CPU でマイニングができるという BitZeny という暗号通貨をマイニングしてみた。コチラも旬は過ぎているのだが、お試しということで。

BitZeny Wallet を登録する

まずは BitZeny を保管するオンライン・ウォレットを作成する。

ウォレットアドレスが入手できたら、以下の Faucet でウォレットがちゃんと使えるか試してみよう。

LA BitZeny Pool に登録する

続いて、BitZeny のマイナープールで有名な LA Pool に登録する。

アカウント登録後、「Worker」を作成する。コレは、マイニングを行っているマシンを識別するための情報で、マシンごとに任意の

  • Worker Name
  • Worker Password

を作成する。今回はとりあえず1つ作っておけば良いだろう。

CentOS Linux に CPU Miner をインストールする

BitZeny を CPU マイニングするための CPU Miner というツールを、CentOS Linux にインストールしていく。

# 以降 root ユーザで作業する
$ sudo su -

# 事前に必要なパッケージをインストールする
$ yum update -y
$ yum install -y git gcc automake autoconf libcurl-devel openssl-devel jansson-devel gawk

# CPU Miner をダウンロードしてくる
$ git clone https://github.com/bitzeny/cpuminer cpuminer
$ cd cpuminer/

# セットアップしていく
$ ./autogen.sh
configure.ac:15: installing './compile'
configure.ac:4: installing './config.guess'
configure.ac:4: installing './config.sub'
configure.ac:6: installing './install-sh'
configure.ac:6: installing './missing'
Makefile.am:12: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
Makefile.am: installing './INSTALL'
Makefile.am: installing './depcomp'

$ ./configure
checking build system type... x86_64-unknown-linux-gnu
# …中略…
checking for curl_free... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating compat/Makefile
config.status: creating compat/jansson/Makefile
config.status: creating cpuminer-config.h
config.status: executing depfiles commands

$ make
make  all-recursive
make[1]: Entering directory `/root/cpuminer'
Making all in compat
make[2]: Entering directory `/root/cpuminer/compat'
make[3]: Entering directory `/root/cpuminer/compat'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/root/cpuminer/compat'
make[2]: Leaving directory `/root/cpuminer/compat'
make[2]: Entering directory `/root/cpuminer'
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -pthread -fno-strict-aliasing     -g -O2 -MT minerd-cpu-miner.o -MD -MP -MF .deps/minerd-cpu-miner.Tpo -c -o minerd-cpu-miner.o `test -f 'cpu-miner.c' || echo './'`cpu-miner.c
mv -f .deps/minerd-cpu-miner.Tpo .deps/minerd-cpu-miner.Po
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -pthread -fno-strict-aliasing     -g -O2 -MT minerd-util.o -MD -MP -MF .deps/minerd-util.Tpo -c -o minerd-util.o `test -f 'util.c' || echo './'`util.c
mv -f .deps/minerd-util.Tpo .deps/minerd-util.Po
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -pthread -fno-strict-aliasing     -g -O2 -MT minerd-sha2.o -MD -MP -MF .deps/minerd-sha2.Tpo -c -o minerd-sha2.o `test -f 'sha2.c' || echo './'`sha2.c
mv -f .deps/minerd-sha2.Tpo .deps/minerd-sha2.Po
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -pthread -fno-strict-aliasing     -g -O2 -MT minerd-scrypt.o -MD -MP -MF .deps/minerd-scrypt.Tpo -c -o minerd-scrypt.o `test -f 'scrypt.c' || echo './'`scrypt.c
mv -f .deps/minerd-scrypt.Tpo .deps/minerd-scrypt.Po
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -pthread -fno-strict-aliasing     -g -O2 -MT minerd-yescrypt.o -MD -MP -MF .deps/minerd-yescrypt.Tpo -c -o minerd-yescrypt.o `test -f 'yescrypt.c' || echo './'`yescrypt.c
In file included from yescrypt-best.c:2:0,
                 from yescrypt.c:22:
yescrypt-simd.c:37:2: warning: #warning "Consider enabling SSE4.1, AVX, or XOP in the C compiler for significantly better performance" [-Wcpp]
 #warning "Consider enabling SSE4.1, AVX, or XOP in the C compiler for significantly better performance"
  ^
mv -f .deps/minerd-yescrypt.Tpo .deps/minerd-yescrypt.Po
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -pthread -fno-strict-aliasing     -g -O2 -MT minerd-sha2-x64.o -MD -MP -MF .deps/minerd-sha2-x64.Tpo -c -o minerd-sha2-x64.o `test -f 'sha2-x64.S' || echo './'`sha2-x64.S
mv -f .deps/minerd-sha2-x64.Tpo .deps/minerd-sha2-x64.Po
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -pthread -fno-strict-aliasing     -g -O2 -MT minerd-scrypt-x64.o -MD -MP -MF .deps/minerd-scrypt-x64.Tpo -c -o minerd-scrypt-x64.o `test -f 'scrypt-x64.S' || echo './'`scrypt-x64.S
mv -f .deps/minerd-scrypt-x64.Tpo .deps/minerd-scrypt-x64.Po
gcc -std=gnu99  -g -O2 -pthread  -o minerd minerd-cpu-miner.o minerd-util.o minerd-sha2.o minerd-scrypt.o minerd-yescrypt.o  minerd-sha2-x64.o minerd-scrypt-x64.o  -lcurl   -ljansson -lpthread
make[2]: Leaving directory `/root/cpuminer'
make[1]: Leaving directory `/root/cpuminer'

$ make install
Making install in compat
make[1]: Entering directory `/root/cpuminer/compat'
make[2]: Entering directory `/root/cpuminer/compat'
make[3]: Entering directory `/root/cpuminer/compat'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/root/cpuminer/compat'
make[2]: Leaving directory `/root/cpuminer/compat'
make[1]: Leaving directory `/root/cpuminer/compat'
make[1]: Entering directory `/root/cpuminer'
make[2]: Entering directory `/root/cpuminer'
 /bin/mkdir -p '/usr/local/bin'
  /bin/install -c minerd '/usr/local/bin'
 /bin/mkdir -p '/usr/local/share/man/man1'
 /bin/install -c -m 644 minerd.1 '/usr/local/share/man/man1'
make[2]: Leaving directory `/root/cpuminer'
make[1]: Leaving directory `/root/cpuminer'

ココまでやったらセットアップ完了。以下のコマンドで CPU Miner (minerd) が動作するか確認する。

$ ./minerd --help

そしたら、マイニングするユーザ情報を記録した JSON ファイルを作成する。ファイル名は適当に setting.json としておく。

  • setting.json
{
  "algo"  : "yescrypt",
  "url"   : "stratum+tcp://jp.lapool.me:3014",
  "user"  : "【LA BitZeny Pool の User 名】.【Worker 名】",
  "pass"  : "【Worker Password】"
}

LA BitZeny Pool に登録した各種情報が必要になる。

  • url プロパティに指定する URL は、LA BitZeny Pool の管理画面にある「ポート一覧」より確認できる。
    • 参考:LA Bitzeny Pool - Home
    • ハッシュレートに応じて難易度が調整されている。上で書いてあるのは yescript-0.5 アルゴリズムによる、Difficulty 0.1 のポート
  • user プロパティは user_name.worker_name とピリオド . で繋いで記述する
  • pass プロパティは Worker のパスワードを入れる
    • LA BitZeny Pool の画面で登録しておいた Worker 情報を指定する

とりあえずマイニングを始めてみる

以上の設定を行ったら、次のようにコマンドを叩くとマイニングが開始される。

$ ./minerd --config setting.json
[2020-01-07 14:21:01] 2 miner threads started, using 'yescrypt' algorithm.
[2020-01-07 14:21:01] Starting Stratum on stratum+tcp://jp.lapool.me:3014
[2020-01-07 14:21:01] Binding thread 1 to cpu 1
[2020-01-07 14:21:01] Binding thread 0 to cpu 0
[2020-01-07 14:21:36] thread 0: 4096 hashes, 0.12 khash/s
[2020-01-07 14:21:37] thread 1: 4096 hashes, 0.12 khash/s
[2020-01-07 14:22:37] thread 0: 7183 hashes, 0.12 khash/s
[2020-01-07 14:22:37] thread 1: 7122 hashes, 0.12 khash/s
[2020-01-07 14:23:36] thread 1: 7073 hashes, 0.12 khash/s
[2020-01-07 14:23:36] thread 0: 7148 hashes, 0.12 khash/s
[2020-01-07 14:23:39] Stratum requested work restart
[2020-01-07 14:23:39] thread 0: 302 hashes, 0.12 khash/s
[2020-01-07 14:23:39] thread 1: 310 hashes, 0.12 khash/s
[2020-01-07 14:23:51] Stratum requested work restart
[2020-01-07 14:23:51] thread 0: 1438 hashes, 0.12 khash/s
[2020-01-07 14:23:51] thread 1: 1434 hashes, 0.12 khash/s
[2020-01-07 14:24:03] Stratum requested work restart
[2020-01-07 14:24:03] thread 1: 1423 hashes, 0.12 khash/s
[2020-01-07 14:24:03] thread 0: 1436 hashes, 0.12 khash/s
[2020-01-07 14:25:03] thread 1: 7132 hashes, 0.12 khash/s
[2020-01-07 14:25:04] thread 0: 7182 hashes, 0.12 khash/s
[2020-01-07 14:25:57] Stratum requested work restart
[2020-01-07 14:25:57] thread 1: 6081 hashes, 0.11 khash/s
[2020-01-07 14:25:57] thread 0: 5882 hashes, 0.11 khash/s
[2020-01-07 14:26:03] Stratum requested work restart
[2020-01-07 14:26:03] thread 1: 699 hashes, 0.12 khash/s
[2020-01-07 14:26:03] thread 0: 630 hashes, 0.10 khash/s
[2020-01-07 14:26:59] thread 0: 6287 hashes, 0.11 khash/s
[2020-01-07 14:27:04] thread 1: 6907 hashes, 0.11 khash/s
[2020-01-07 14:27:58] thread 0: 6555 hashes, 0.11 khash/s
[2020-01-07 14:27:58] accepted: 1/1 (100.00%), 0.22 khash/s (yay!!!)
[2020-01-07 14:28:04] thread 1: 6769 hashes, 0.11 khash/s

別ウィンドウを開いて ps コマンドを叩いてみると、minerd というプロセスが動いているのが分かるだろう。

数分待って、(yay!!!) といった出力が出ていれば、マイニングが出来ている。しばらくすると LA BitZeny Pool の Dashboard で、獲得した BitZeny が確認できるようになる。

自分の場合、マイニングを始めてから5・6分で、 0.008742 ZNY が Unconfirmed として追加された。コレは本稿執筆時点で0.0005996円程度に相当する (……少なすぎない?w)。

マイニングできることが分かったら、Ctrl + C で終了しよう。

CPU 使用率を制限してみる

マイニングを始めると、minerd プロセスが起動してガンガン CPU を使い始める。クラウド上の VM なんかでガンガンに CPU を使ったりしていると何となくアレなので、cpulimit というツールを使って、CPU 使用率でプロセスの動作を制限してみようと思う。

# CPU Limit をインストールする
$ yum install -y cpulimit

# CPU 使用率を 80% に制限してマイニングを行う
$ cpulimit -l 80 -- ./minerd --config setting.json

こんな感じ。

別ウィンドウを開いたりして top コマンドを使って確認すると、CPU 使用率が制限できているのが分かるかと。

バックグラウンドで動作させる

さて、ココまでのやり方だと、プロセスはフォアグラウンドで動いていて、SSH 接続時はログアウトとともにマイニングが終了してしまう。そこで、プロセスをバックグラウンドで起動し、ログアウトして SSH 接続を切断した後も minerd プロセスが動きっぱなしになるようにしてみる。

# CPU Limit を使わないでバックグラウンド実行する場合
$ nohup ./minerd --config setting.json &
[1] 9067
nohup: 入力を無視し、出力を `nohup.out' に追記します
# (Enter で抜ける)

# CPU 使用率を制限しながらバックグラウンド実行する場合
$ nohup cpulimit -l 80 -- ./minerd --config setting.json &
[1] 9067
nohup: 入力を無視し、出力を `nohup.out' に追記します
# (Enter で抜ける)

nohup でバックグラウンド実行している際の標準出力は nohup.out というファイルに順次追記されていくので、

$ tail -f nohup.out

とかすればバックグラウンドでの動作状況が確認できる。

ウォレットへの払い出し

マイニングで獲得した BitZeny は、LA BitZeny Pool の管理画面より、指定のウォレットアドレスへ払い出せる。LA BitZeny Pool に貯めておくよりは、定期的にウォレットに移しておくと良いだろう。

BitZeny からの換金はまだ試していないが、BitZeny を取り扱っている取引所で BitCoin 等に換金し、それを日本円に換金すれば現金化できそう。

コレで一体いくら稼げるのか?

さて、CPU Miner の動かし方が分かったので、コレでガンガンマイニングしてみよう。

今回は、OCI の Always Free インスタンス2台で、24時間マイニングしてみた。

その結果採掘できた金額は、6.761123 ZNY だった (うち、Confirmed となった額は 5.94 ZNY)。コレは本稿執筆時点の日本円に換算して0.4812円程度。

永久無料で使える VM だと、2台がかりで1日0.5円かぁ〜…。

やめた。笑〃