Docker ではじめるCPUマイニング(BitZeny編)


1. はじめに

  • 今回は、自分自身への備忘録を兼ねて、Docker(Dockerfile)を用いたCPUマイニングをはじめる方法を、お伝えしたいと思います。

参考:CC BitZenyをDockerでマイニングしてみる
参考:shamaton / docker-miner-zeny

2. この記事を読んでできること

  • Docker(Dockerfile)を用いてBitZeny(アルトコイン)をCPUマイニングできるようになる。

3. 必要なもの

  • Dockerホスト環境(この記事では Raspberry Pi3B + Ubuntu 18.04 LTS(arm64)を利用)
  • インターネット環境

4. 前提条件

  • ハードウェア:Raspberry Pi3B
  • OS:Ubuntu 18.04 LTS(arm64)
  • アーキテクチャ:arm64

5. Dockerコンテナのセットアップ

  • 以下のコマンドを順次実行し、cpuminerが実行できるDockerコンテナ環境をセットアップします。
コマンドプロンプト
// ホームディレクトリに移動
$ cd

// docker-miner-zenyを取得
$ git clone https://github.com/shamaton/docker-miner-zeny.git

// ディレクトリを移動
$ cd docker-miner-zeny

// Dockerfileとstart.shファイルの確認
$ ls
Dockerfile  README.md  start.sh

// Dockerイメージのビルド
$ docker build -t zeny:latest .

// Dockerイメージ一覧表示(IMAGE IDを確認する)
$ docker image ls

// CPUマイニングの実行(Dockerイメージからコンテナを起動)
// 環境変数POOL、WALLETの部分にご自身のプールアドレス、BitZeny受信アドレスを設定してください。
$ docker run --name mining --env POOL=stratum+tcp://zny.mofumofu.me:3331 --env WALLET=Ztd9eoSVaX4pehagt5o9PRDnCYRAadbgxn.Ubuntu --env THREAD_NUM=3 zeny

// Dockerコンテナの一覧表示
$ docker container ls -a

// Dockerコンテナ単体での自動起動を有効化
$ docker update --restart=always mining

// 自動起動が有効になっているコンテナを確認
$ docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}" $(docker ps -aq) | grep always

// Dockerコンテナ単体での自動起動を無効化
$ docker update --restart=no mining

// コンテナを停止
$ docker stop mining

// Dockerコンテナの削除(必要なくなったら時に実行する)
docker rm mining
  • 今回はオンラインウォレットの「BitZeny WALLET」を利用しました。
  • ウォレットをまだお持ちでない方は、「BitZeny WALLET」の「新規登録」リンクから新規登録をおこない、ウォレット内の「受信アドレス」からご自身の「BitZeny受信アドレス」をコピーしてお使いください。
  • マイニングプールについては、登録不要で使えるBitZenyのマイニングプール(NOMP:Node Open Mining Portal)である「mofumofu.me」を利用しています。

6. CPUマイニング実行コマンドの例

  • 以下のコマンドを実行し、CPUマイニングを実行します。
コマンドプロンプト
// CPUマイニング実行コマンドの例
// use case 1
$ docker run --name {コンテナ名} --env POOL={プールアドレス} --env WALLET={ウォレットアドレス} --env THREAD_NUM={割当CPUコア数} zeny

// use case 2
$ docker run --name {コンテナ名} --env POOL={プールアドレス} --env USERPASS={ユーザー名.ワーカー名:パスワード} --env THREAD_NUM={割当CPUコア数} zeny

7. CPUマイニング成功時のログ

  • CPUマイニングに成功すると、「(yay!!!)」とログに出力されるかと思います。
  • ただし、マイニングに成功してもすぐにBitZeny受信アドレスに受け取り反映されるわけではありません。受け取り反映されるルールについては、利用するマイニングプールのルールによって異なります。CPU処理能力であれば、数時間から半日程度、気長に待ってみましょう。

8. 参考:start.sh

start.sh
#!/bin/sh

if [ -z ${POOL} ]; then
        echo "not set pool address... exit"
        exit 1
fi

if [ -n "${WALLET}" ]; then
        echo "POOL   -> $POOL"
        echo "WALLET -> $WALLET"
        echo "thread -> $THREAD_NUM"
        /root/cpuminer/minerd  -o $POOL -u $WALLET -t $THREAD_NUM
elif [ -n "${USERPASS}" ]; then
        echo "POOL     -> $POOL"
        echo "USERPASS -> $USERPASS"
        echo "thread   -> $THREAD_NUM"
        /root/cpuminer/minerd  -o $POOL -O $USERPASS -t $THREAD_NUM
fi

9. 参考:Dockerfile

Dockerfile
FROM ubuntu:xenial

MAINTAINER shamaton

WORKDIR /root

RUN apt-get update \
 && apt-get -y install \
    git \
    wget \
    libjansson-dev \
    automake \
    libtool \
    curl \
    libcurl3 \
    libcurl3-dev \
    make

WORKDIR /root
COPY start.sh /root/start.sh
RUN chmod a+x /root/start.sh

RUN git clone https://github.com/bitzeny/cpuminer \
 && cd cpuminer \
 && sh autogen.sh \
 && ./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"  \
 && make

CMD ["/root/start.sh"]

10. おわりに

いかがでしたでしょうか?意外と簡単にDocker(Dockerfile)を用いたCPUマイニングを始めることができたのではないかなと思います。
今回の記事が、みなさまの学習の参考になれば幸いです。

2020/02/24 TAKAHIRO NISHIZONO