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

# 1. はじめに
- 今回は、前回までの[BitZeny編](https://qiita.com/zono_0/items/369c2323858bb7698c24)、[Koto編](https://qiita.com/zono_0/items/085a2aa5d6d8d46059a9)に引き続き、Bitcoin編として自分自身への備忘録を兼ねて、Raspberry PiでCPUマイニングをはじめる方法を、お伝えしたいと思います。
- 手順はおおむね前回までの[BitZeny編](https://qiita.com/zono_0/items/369c2323858bb7698c24)、[Koto編](https://qiita.com/zono_0/items/085a2aa5d6d8d46059a9)と同じですが、計算アルゴリズムが異なるらしくBitcoin用のcpuminerをビルドする必要があります。（他のアルトコインのcpuminerをそのまま用いると、 (yay!!!)とはならずに(booooo)となるかと思います。）
- ウォレットには「[Blockchain.com](https://www.blockchain.com/)」Webサイト版を利用しています。

- 参考サイト：[Bitcoinを電気代"0円"でマイニングして稼ぐ！](https://qiita.com/kotauchisunsun/items/d0b0e0792939a53d558b)

# 2. この記事を読んでできること
- Raspberry PiでBitcoinをCPUマイニングできるようになる。

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

# 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. CPUマイニングの実行
- 以下のコマンドを実行し、CPUマイニングを実行します。

```plaintext:コマンドプロンプト
// マイニング実行コマンドの例
$ ./cpuminer -a sha256d --user=1GDAXi4Z89dYfiT7rxqQYME8Btm1NPo9XS --url=stratum+tcp://sha256.jp.nicehash.com:3334
$ ./cpuminer -a sha256d --user={ここに自分のビットコインアドレスを入れる} --url=stratum+tcp://sha256.jp.nicehash.com:3334
```

- 今回はウォレットの「[Blockchain.com](https://www.blockchain.com/)」を利用しました。
- ウォレットをまだお持ちでない方は、あらかじめ自分のビットコインアドレスをご用意し、ご自身の「Bitcoin受信アドレス」をコピーしてお使いください。
- マイニングプールについては、登録不要で使えるBitcoinのマイニングプール（NOMP：Node Open Mining Portal）である「[NiceHash](https://www.nicehash.com/)」を利用しています。

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

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

```plaintext:/etc/systemd/system/minerd-bitcoin.serviceファイル内容
[Unit]
Description=minerd 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=1GDAXi4Z89dYfiT7rxqQYME8Btm1NPo9XS --url=stratum+tcp://sha256.jp.nicehash.com:3334
Restart=always
Type=simple
TimeoutStopSec=5
StandardOutput=append:/tmp/minerd-bitcoin.log
StandardError=append:/tmp/minerd-bitcoino.log

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

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

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

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

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

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

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

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

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

2021/03/09 TAKAHIRO NISHIZONO


# 10. 余談その1：利用OSについて
- おすすめのOSは普通に、[Raspberry Pi OS Lite](https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit)がよいかとは思いますが、今回、私は「FullpageOS」を利用しました。（起動するとYouTubeページがキオスク表示されるようカスタマイズして使ってます。）
- FullpageOSについては、以下のサイトをご参考にされるとよいかと思います。
- 参考サイト：[使っていないRaspberry PiをWebページやTwitterを表示して活用しよう【簡単に試せるOSイメージあり】](https://qiita.com/wamisnet/items/6be7b45e0096ec1da4af)
- 参考サイト：[unofficialpi.org](http://unofficialpi.org/Distros/FullPageOS/nightly/)
- 参考サイト：[Raspberry Pi ImagerからインストールできるFullPageOS](https://raspida.com/fullpageos)
- 参考サイト：[github.com/guysoft/FullPageOS](https://github.com/guysoft/FullPageOS)

## 1つのURLを全画面表示する方法
![スクリーンショット 2022-11-26 133550.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/a8bda129-9761-34a1-3423-20420a84d9b7.png)

## 複数のURLを表示する方法
![スクリーンショット 2022-11-26 133711.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/de4e14a3-040e-9a8f-42d5-a40a9162371d.png)

## その他
fullpageos.local
pi
raspberry