Raspberry Pi ではじめるCPUマイニング（NiceHash編）

# 1. はじめに
- 今回は、前回の[Bitcoin編](https://qiita.com/zono_0/items/e285ef32fb2ac94486b0)に引き続き、NiceHash編として自分自身への備忘録を兼ねて、Raspberry PiでCPUマイニングをはじめる方法を、お伝えしたいと思います。
- マイニングプールには「[NiceHash](https://www.nicehash.com/)」を利用します。

- 参考サイト：[クラウドサーバーでCPUマイニングの効率的なアルゴリズムを調べる(???)](https://zenn.dev/neko7sora/scraps/6a1c8d7a45df2f)
- 参考サイト：[NiceHashのサーバー一覧](https://blog.systemjp.net/entry/2017/06/23/132303)

# 2. この記事を読んでできること
- Raspberry PiでNiceHashマイニングプールを用いたCPUマイニングできるようになる。

# 3. 必要なもの
- Raspberry Pi（この記事では Raspberry Pi4B 4GB版 を利用しました）
- SDカード
- インターネット環境
- パソコン（Windows10など）
- sshクライアントソフト（[TeraTerm](https://ja.osdn.net/projects/ttssh2/releases/)）
- [NiceHashアカウント](https://www.nicehash.com/) 
- NiceHashのMining Wallet Address（マイニングアドレス）

# 4. cpuminerのセットアップ
- 以下のコマンドを順次実行し、cpuminerをセットアップします。

```plaintext:コマンドプロンプト
// ホームディレクトリに移動
$ cd

// ソースの取得
$ git clone --depth 1 https://github.com/tpruvot/cpuminer-multi.git

// 作業ディレクトリに移動
$ cd cpuminer-multi/

// 必要ライブラリのインストール
$ sudo apt-get install automake autoconf pkg-config libcurl4-openssl-dev libjansson-dev libssl-dev libgmp-dev make g++

// ビルド
$ ./build.sh
```

# 5. NiceHashマイニングプールを用いたCPUマイニングの実行
- 以下のコマンドを実行し、CPUマイニングを実行します。

```plaintext:コマンドプロンプト
// マイニング実行コマンドの例
$ ./cpuminer -a sha256d --user=36HiEHGr8LNr7kEqZtLHb42WfrqbjrDzFa.raspberrypi4 --url=stratum+tcp://sha256.jp.nicehash.com:3334 -p x
$ ./cpuminer -a {ここにアルゴリズムを入れる} --user={ここにNiceHashのマイニングアドレス.ワーカー名を入れる} --url={ここにNiceHashのstratumURLを入れる} -p x

// 『disable colored output』を実現したい場合は『--no-color』オプションを付けるとよいようです（お好みで）
$ ./cpuminer -a sha256d --user=36HiEHGr8LNr7kEqZtLHb42WfrqbjrDzFa.raspberrypi4 --url=stratum+tcp://sha256.jp.nicehash.com:3334 -p x --no-color
```

- NiceHashのマイニングアドレスは、「[NiceHash](https://www.nicehash.com/)」にアカウントを作成し、「MINING ADDRESS」ボタンをクリックすることで確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/c0da16c6-2537-f3cc-c6b1-55645771deaf.png)


# 6. CPUマイニング成功時のログ
- CPUマイニングに成功すると、「(yay!!!)」とログに出力されるかと思います。
- ただし、Raspberry PiのCUP性能では、なかなか成功しないと思われます。
- Raspberry PiのCPU処理能力は高くないため、半月から1か月程度、気長に待ってみましょう。

```plaintext:コマンドプロンプト
[2021-03-09 08:58:51] CPU #0: 1010 kH/s
[2021-03-09 08:58:51] CPU #1: 1014 kH/s
[2021-03-09 08:58:51] CPU #3: 1016 kH/s
[2021-03-09 08:58:51] CPU #2: 996.39 kH/s
[2021-03-09 08:58:58] CPU #3: 1035 kH/s
[2021-03-09 08:58:58] CPU #2: 1024 kH/s
[2021-03-09 08:58:58] CPU #0: 1034 kH/s
[2021-03-09 08:58:58] CPU #1: 1025 kH/s
[2021-03-09 08:59:06] CPU #1: 1017 kH/s
[2021-03-09 08:59:06] CPU #2: 1035 kH/s
```

# 7. 自動起動設定ファイルの新規作成
- 手動でCPUマイニングを起動するのも面倒かと思いますので、systemdを利用した自動起動設定ファイルを新規作成します。

```plaintext:コマンドプロンプト
// 自動起動設定ファイルの新規作成
$ sudo vi /etc/systemd/system/nicehashd.service
````

```plaintext:/etc/systemd/system/nicehashd.serviceファイル内容
[Unit]
Description=nicehashd is executed and resides at OS startup.
After=network.target

[Service]
WorkingDirectory=/home/pi/cpuminer-multi
ExecStart=/home/pi/cpuminer-multi/cpuminer -a sha256d --user=36HiEHGr8LNr7kEqZtLHb42WfrqbjrDzFa.raspberrypi4 --url=stratum+tcp://sha256.jp.nicehash.com:3334 -p x
Restart=always
Type=simple
TimeoutStopSec=5
StandardOutput=append:/tmp/nicehashd.log
StandardError=append:/tmp/nicehashd.log

[Install]
WantedBy=multi-user.target
````

# 8. nicehashd.serviceの起動確認＆自動起動有効化
- 作成した自動起動設定ファイルを所定のディレクトリに移動し、nicehashd.serviceの起動確認および有効化をおこないます。

```plaintext:コマンドプロンプト
// minerdの起動確認
$ sudo systemctl start nicehashd.service

// 起動状況確認（設定内容が正しいか動作確認します）
$ sudo systemctl status nicehashd.service

// minerdの自動起動有効化（再起動後に自動起動するようになります）
$ sudo systemctl enable nicehashd.service

// OS再起動
$ sudo shutdown -r now

// OS再起動後の実行ログ確認
$ tail -f /tmp/nicehashd.log
```

- 補足：nicehashd.serviceファイルの設定変更を反映する際は ``` sudo systemctl daemon-reload ``` コマンドを実行して反映する必要があります。

# 9. NiceHashサイトからの動作確認
- 「[NiceHash](https://www.nicehash.com/)」にログインし、ワーカー名（raspberrypi4）が表示されていれば成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/8e9a78e5-6be5-2746-4916-9abc3564298a.png)

# 10. おわりに
いかがでしたでしょうか？マイニング成功はCPU性能から望みはうすいですが、意外と簡単にCPUマイニングを始めることができたのではないかなと思います。
今回の記事が、みなさまの学習の参考になれば幸いです。

2021/03/10 TAKAHIRO NISHIZONO