0. はじめに
マイニングの知識ゼロから Raspberry Pi でマイニングできる環境を作ってみたのでそのメモ。最後マイニングの収支がどうなっているのかまで見てみる。
まずはここら辺を参考にウォレットの作成を行う。この情報は滅茶苦茶大切なので慎重に保管する必要がある。
今回は Raspberry Pi 4 Model B に Ubuntu Serer 20.04 をインストールした。インストール方法は割愛する。また、プールマイニングとして上記サイトで紹介されたものと同じく MoneroHash.com を使用する。
マイニングツールとしては Raspberry Pi でもビルド可能な XMRig を使用する。Raspberry Pi でも使用できるマイニングツールとしては他に cpuminer-multi がある。興味がある方はここなどを参照すると良い。
1. XMRig のビルド
Ubuntu Server 20.04 をインストールしたらネットワークの設定を行い外部から ssh で入れるように設定する。ユーザーはデフォルトの ubuntu を使用する。あとはここの方法でビルド。デフォルトでは XMRig に対して寄付を最低 1% 行うようになっている。変更したい人は donate.h あたりを
$ sudo apt-get update && sudo apt-get upgrade -y
$ sudo apt-get install git build-essential cmake libuv1-dev libssl-dev libhwloc-dev -y
$ git clone https://github.com/xmrig/xmrig.git
$ mkdir xmrig/build && cd xmrig/build
$ cmake ..
$ make -j$(nproc)
2. XMRig の実行
無事ビルドができたらとりあえずコマンドラインから実行する。-u の 44h3CC9V... ではじまる引数には MyMonero の自分の Address を入力する。さもないと他人(私)にマイニング結果が送られることになる。
$ pwd
/home/ubuntu/xmrig/build
$ ./xmrig -o monerohash.com:9999 -u 44h3CC9VEoD8sJN3AnWg7RSYGzE4yyQXTEomLszfzkFeHXYfxnJgV5eQJkzY9uNxECMBTV8g4x3wKD4dUf435bWcS7didfe -k --tls
* ABOUT XMRig/6.9.0 gcc/9.3.0
* LIBS libuv/1.34.2 OpenSSL/1.1.1f hwloc/2.1.0
* HUGE PAGES supported
* 1GB PAGES unavailable
* CPU ARM Cortex-A72 (1) 64-bit -AES
L2:0.0 MB L3:0.0 MB 4C/4T NUMA:1
* MEMORY 0.5/1.8 GB (25%)
* DONATE 1%
* POOL #1 monerohash.com:9999 algo auto
* COMMANDS hashrate, pause, resume, results, connection
* OPENCL disabled
* CUDA disabled
[2021-02-28 01:34:39.805] net use pool monerohash.com:9999 TLSv1.2 107.191.99.221
[2021-02-28 01:34:39.805] net fingerprint (SHA-256): "d4717e48f34da3ac0e16733405a4ee02f243b92afe673b02bf2cfacf6d7cc535"
[2021-02-28 01:34:39.805] net new job from monerohash.com:9999 diff 150000 algo rx/0 height 2306404
[2021-02-28 01:34:39.805] cpu use argon2 implementation default
[2021-02-28 01:34:41.005] randomx init dataset algo rx/0 (4 threads) seed 3e995eed94df8c92...
[2021-02-28 01:34:41.005] randomx not enough memory for RandomX dataset
[2021-02-28 01:34:41.005] randomx failed to allocate RandomX dataset, switching to slow mode (0 ms)
[2021-02-28 01:34:44.001] randomx dataset ready (2996 ms)
[2021-02-28 01:34:44.001] cpu use profile rx (4 threads) scratchpad 2048 KB
[2021-02-28 01:34:44.003] cpu READY threads 4/4 (4) huge pages 0% 0/4 memory 8192 KB (2 ms)
[2021-02-28 01:35:44.049] miner speed 10s/60s/15m 43.95 n/a n/a H/s max 44.18 H/s
44.18 H/s と書かれているのがマイニングの時間単位辺りの量。h キーでも表示することができる。
| CPU # | AFFINITY | 10s H/s | 60s H/s | 15m H/s |
| 0 | 0 | 11.04 | 10.98 | n/a |
| 1 | 1 | 11.04 | 11.00 | n/a |
| 2 | 2 | 11.04 | 11.02 | n/a |
| 3 | 3 | 10.94 | 10.98 | n/a |
| - | - | 44.07 | 43.99 | n/a |
少し待って s キーを押すとマイニング結果を見ることができる。accepted が増えていれば成功だ。
- RESULTS
* accepted 3 (100.0%)
* pool-side hashes 100000 avg 33333
* difficulty 54435
* avg result time 149.1s
- TOP 10
# | DIFFICULTY | EFFORT % |
1 | 325306 | 30.74 |
2 | 107192 | 93.29 |
3 | 45312 | 220.69 |
他の ssh ターミナルで top などを叩いていみると全ての CPU の使用量がほぼ 100% となっているはずだ。
マイニング結果は一旦マイニングプール (MoneroHash) に貯められる。Your Stats & Payment History に自分の Address を入力すると現在貯まっている Monero (XMR) の量が見ることができる。以下はおそらくは自動的に自分のウォレットに転送されるのは 0.5 XMR 貯まってからということだと思われる。
Payment threshold: 0.5 XMR
手元の結果を計算してみると 1 Hash = 0.00000000000487783304 らしい。43.97 H/s だと 0.5 XMR 貯まるまでざっと 73 年と 336 日程度だろうか。。
3. Xmrig の設定ファイルの作成
気を取り直して Raspberry Pi 4 Model B が起動したら自動的に Xmrig が起動するようにしてみたい。それには設定ファイルから起動できたほうが恐らく便利だ。Configuration wizard から json 形式の設定ファイルが作成できる。Wizard の設定項目は至ってシンプル。例えば以下のような感じ。
- New configuration をクリック
- Add pool > Monero wallet address に自分の Address を入力
- Backends: CPU のみ
- Misc > Donate 任意の寄付する割合を入力
- Result で以下のような結果をコピーし xmrig と同じディレクトリに config.json というファイル名で保存
{
"autosave": true,
"cpu": true,
"opencl": false,
"cuda": false,
"pools": [
{
"url": "monerohash.com:9999",
"user": "44h3CC9VEoD8sJN3AnWg7RSYGzE4yyQXTEomLszfzkFeHXYfxnJgV5eQJkzY9uNxECMBTV8g4x3wKD4dUf435bWcS7didfe",
"keepalive": true,
"tls": true
}
]
}
試しに引数なしで xmrig を実行し動けば成功だ。結果は引数ありで実行したものとほぼ同じになるはずだ。config.json はその他の設定が自動的に書き込まれる。
$ ./xmrig
一旦 xmrig を終了し /var/log/syslog に色情報を書き込まないように以下を true から false に変更すると良い。
$ vi ./config.json
<中略>
"colors": false,
4. systemctl の設定
場所はどこでも良いが /home/ubuntu だとなんとなくかっこ悪いので /opt あたりに実行ファイルと設定ファイルをコピーしておく。
$ sudo mkdir /opt/xmrig
$ sudo cp ./xmrig /opt/xmrig/
$ sudo cp ./config.json /opt/xmrig/
ここ あたりを参考にして直接 /etc/systemd/system/ 以下のファイルを編集しても良いと思うがここでは systemctl コマンドを使用してみることにする。
$ sudo update-alternatives --config editor
$ sudo systemctl edit --force --full xmrig.service
update-alternatives コマンドでは使用するエディタを選択する。デフォルトの nano エディタを使用する場合は実行しなくても良い。systemctl edit コマンドでエディタが開いたら以下のような設定を行う。
[Unit]
Description=xmrig
After=network.target
[Service]
ExecStart=/opt/xmrig/xmrig
User=root
[Install]
WantedBy=multi-user.target
エディタを終了し設定内容を確認する。
$ sudo systemctl cat xmrig.service
次に xmrig.service を有効にし実行後ステータスの確認を行う。Running となっていれば成功だ。
$ sudo systemctl enable xmrig.service
$ sudo systemctl start xmrig.service
$ sudo systemctl status xmrig.service
● xmrig.service - xmrig donate 1%
Loaded: loaded (/etc/systemd/system/xmrig.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-02-28 02:02:27 UTC; 3s ago
Main PID: 3394 (xmrig)
Tasks: 6 (limit: 2102)
CGroup: /system.slice/xmrig.service
└─3394 /opt/xmrig/xmrig
Raspberry Pi を再起動してみて xmrig が動作しているかも確認しておこう。
5. マイニングの収支を計算してみる
さて問題は果たして儲かっているかどうかだ。これは CryptCompare と言うサイトで計算ができる。
Currency で XMR をクリック。今回は以下のような値を入れてみた。消費電力 (Power consumption) は適当だ。電気料金はここを参考にしてみた。Pool Fee (%) には MoneroHash の 1.6% に Xmrig の 1 % を足してみた。
Hashing Power: 44.18 H/s
Power consumption (w): 10
Cost per KWh ($): 0.26
Pool Fee(%): 2.6
結果:
月 $1.78 の赤字
Monero の値段が将来的に上がればもしかしてワンチャンあるかもしれないが仮に電気代がゼロだとしても月10円くらいの利益なので微々たるものだ。残念ながら Raspberry Pi を買えるような値段にはならない。
俺の Raspberry Pi が CPU 100 % で 24 時間頑張っている。そこにロマンを感じられるかどうか。そんな趣味の世界かもしれない。(笑)
あとは一通りマイニングの方法が分かり勉強にはなったので良しとする。