組み込みエンジニアだってお金が欲しい
最近、ソフトウェアエンジニアの給料が良くなってきたようです。特に、FinTechやAI関係のエンジニアの給料はうなぎのぼりだそうです。それに比べて、組み込みエンジニアは相変わらず日陰の存在です。
組み込みエンジニアなら誰でも(?)持ってる、ラズパイを使ってお金を稼ぐことが出来ないかと思いました。
BitZenyとは
ビットコイン等の仮想通貨の採掘(マイニング)には主にGPUが使用されており、組み込みというよりかは、HPCの領域です。しかし、色々調べてみると、BitZenyという仮想通貨(オルトコイン)がありました。これは、GPUやASICでは不利なアルゴリズム(Yescrypt)を使用しています。これによって、CPUを使用して普通のPCでも採掘できるようになっています。こちらの記事だと、ラズパイでのマイニングは採算が取れない、という結果になってしまいましたが、BitZenyならいけるのでは?
マイニングの準備をする
基本的には、wikiの通りに進めていけばOKです。本記事はQiitaの技術者向けの記事なので、ここはさっと流します。
BitZenyを受け取れるウォレットを作る
BitZeny Coreというクライアントソフトウェアをインストールしても良いのですが、初回設定にめちゃくちゃ時間がかかるので、オンラインウォレットを使います。https://bitzeny.jp/login のアカウントを作ります。アカウント作成はEメールアドレスを登録するだけですぐにできます。
アカウント作成後、ログインして、「受信アドレス」をコピーしておきます。受信アドレスは、Zから始まる英数字の羅列になります。これはいくらでも作ることが出来るのですが、最初に1つ作成されており、ログイン後のトップ画面に表示されているはずです。ここに、採掘報酬を振り込みます。
プールに登録する
マイニングには、個人でやるソロマイニングと、みんなでやって報酬を分け合うプールマイニングがあります。ソロマイニングだと上述のBitZeny Coreが必要なので、プールマイニングをします。プールサーバはいくつかあるのですが、ひとまずLA Bitzeny Poolを使用します。まずはアカウント作成します。こちらも、Eメールアドレスを登録するだけですぐにできます。
追記
本記事では例としてLA Bitzeny Poolを挙げていますが、他にもプールサーバはあります。サーバ負荷低減のためにもワーカー数の少ないサーバーを使用するようにしてください。結果的に採掘が効率的にできて自分のためにもなります。各プールサーバのトラフィック量はこちらで確認できます。
参考 (https://www.braveryk7.com/bitzeny-maining-dispersion/)
設定をする
My Account -> アカウントの編集 -> Payment Address、に先ほどコピーした受信アドレスを貼り付けます。
My Account -> ワーカーの編集、でAdd New Workerします。ひとまずデフォルトの設定で、ワーカーを一つ作ります(ワーカー名=user、パスワード=password)。
ラズパイ用にマイニングプログラムをビルドする
やっとエンジニアリングっぽいことします
必要なソフトのインストール
sudo apt-get install automake autoconf pkg-config libcurl4-openssl-dev libjansson-dev libssl-dev libgmp-dev make g++
万が一インストールに失敗する場合は、/etc/apt/sources.list
を以下のように編集してから、sudo apt-get update
をして、再度インストールを試してください。どうも最近(stretchになってから?)、apt-get installでサーバが見つかりませんといったエラーが出ることがあります。
deb http://ftp.jaist.ac.jp/raspbian stretch main contrib non-free
# deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ stretch main contrib non-free rpi
ビルドする
WindowsPC用ならマイニング用プログラムがバイナリの形で配布されています。しかし、ラズパイ(Linux)用には自分で作る必要があります。下記コマンドで、ソースコードをGitHubから取得して、設定してビルドします。一応、NEONを使用するように指定してみます。(Mac、Linuxも同様に自分でビルドすればできます。やり方やオプションはGitHubのREADMEに書いてあります)
git clone https://github.com/bitzeny/cpuminer.git
cd cpuminer
./autogen.sh
./configure CFLAGS="-O3 -mfpu=neon -march=native -funroll-loops -fomit-frame-pointer"
make
実行する
下記コマンドで実行します。コマンド中の"ログインユーザー名"はアカウント作成時に指定したログインに使用するユーザ名です。ドット(.)のあとのuserとpasswordは、先ほどワーカー作成時に設定したものになります。もしも違うものを設定した場合はこちらも変更してください。
./minerd -a yescrypt -o stratum+tcp://jp.lapool.me:3014 -u ログインユーザー名.user -p password
成功すると、下記のようなログが出ます。プールサーバ(LA Bitzeny Pool)のダッシュボードのページを見ると、アカウント残高が増えているはずです。ひとまずUnconfirmedとして反映され、1時間くらいするとConfirmedになります。100ZNY溜まったら自動的に先ほど設定したウォレットに送られます。
[2017-12-XX 11:XX:23] Stratum requested work restart
[2017-12-XX 11:XX:23] thread 1: 468 hashes, 0.02 khash/s
[2017-12-XX 11:XX:23] thread 3: 166 hashes, 0.02 khash/s
[2017-12-XX 11:XX:23] thread 0: 452 hashes, 0.01 khash/s
[2017-12-XX 11:XX:23] thread 2: 468 hashes, 0.02 khash/s
[2017-12-XX 11:XX:55] thread 1: 487 hashes, 0.02 khash/s
[2017-12-XX 11:XX:55] accepted: 15/15 (100.00%), 0.06 khash/s (yay!!!)
PCで実行したときは約3.4 khash/s、一方ラズパイだと0.06 khash/sでした。何かビルドオプション間違えてるのかな。遅い。。。
実行中は
実行中にtopで状態を見ると、ちゃんとCPU使用率が400%(4コア)になっていました。当然、温度もかなり熱くなっていました。ラズパイである長所を生かして、電源だけつないで屋外に放置しました。
結果
事前にWindows PCで2時間回したときは、約1.1ZNYの報酬をもらえました。その後、同じく約2時間ラスパイ上で回した結果、0.0214ZNYでした。
もしも一日中(24時間)回したら、以下のようになる計算です(実際には時間によって報酬額は変わってくると思います)。1 ZNY = 23.1円として計算(2017/12/8)。
- Windows PC(Intel Core i7-6700, 3.4GHz x 4物理コア(8論理コア))
- 13.2 ZNY = 321円 / day
- Raspberry Pi 2(Cortex-A7, 900MHz x 4コア)
- 0.2568 ZNY = 5.9円 / day
まとめ
餅は餅屋。マイニングは素直にハイパフォーマンスなマシンでやるべき。ラズパイを使うのは、サーバー負荷を無駄に増やすだけなのでやめた方がいいですね。
とはいえ、今回のことで仮想通貨を始めるいい契機になりました。BitCoinやモナーコインをやるにはだいぶ出遅れた感がありますが、BitZenyならこれから爆上げの期待が持てます。
(ちょうど、この記事を書いた2日くらい前に、仮想通貨で有名なブロガーさんがBitZenyについて取り上げたようです。そのためか分かりませんが、一気に価値が跳ね上がりました。あと数日早く始めてれば。。。)
マイニングに関しても、今はまだBitZenyの価値が低いため報酬が少ないですが、1ZNY当たりの価値が上がればその分報酬も増えます(その分マイニングも難しくなりますが)。また、BitZenyならXeon等搭載のワークステーションまでいかなくても、普通のPCで十分採掘できるので、時間のあるときにコツコツやっていこうと思います。