Raspberry PiでKotoをマイニング【2020年最新版】

タイトルからみて今更マイニングかと思われるかもしれませんが、やはり趣味として実験として、こういうのはやってみることに大いに意味があると思っています。なので、ものは試しということでやってみます。ちなみにやってみたらわかるのですが、非常に簡単にできます。私自身が1からセットアップしたので、ウォレット(口座みたいな役割をしている)からマイニングソフトのセットアップまで全部入っています。ちなみになんとなく結論が自分では見えているので、継続してマイニングする気はありません笑。あくまで技術的内容の紹介というところです。

目次

cpuminer-kotoの導入

まず初めに必要パッケージのインストールを行います。以下のコマンドを実行します。

sudo apt-get update
sudo apt-get install automake libcurl4-openssl-dev

次にマイニングツールのインストールを行います。最後のmakeの行のj4は例によってご自身の環境に合わせて変更してください。Raspberry Piをお使いの方は基本的にそのままで大丈夫です。

git clone https://github.com/KotoDevelopers/cpuminer-yescrypt cpuminer-koto
cd cpuminer-koto
sudo ./autogen.sh
sudo ./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"
sudo make -j4

実はこの状態でマイニングをできる状態になっています。正直簡単すぎてびっくりしました。余談ですが、公式のgithubに書いてあるbuildの以下の文はRaspberry Piでは使えませんので、上記の方法で実行して下さい。

./zcutil/build.sh -j$(nproc)

なんのツールがいるとか、依存関係がどうとかを書いていないのは少々不親切かなって思ったりします。公式によると、上記のコマンドで依存関係も勝手に設定してくれるって書いてるんですけど、そもそも実行できません。

ウォレットの登録と設定

あとは自分の口座のようなものを設定する必要があるのですが、私は「もにゃ」を使いました。細かいことは省きますが、このリンクから、「今すぐ使う」を選んで、アカウントを作っていきます。これで大丈夫なの?ってなりやすいんですが、メールとかの登録がなく、「秘密鍵」って呼ばれている何個かの単語をメモして、パスワードを設定したら終わりです。メールアドレスとかユーザー情報の登録がなかったのが、初めてだとびっくりします。

登録が終わってホームにいけたら、「コインを追加」を押します。すると「コインの管理」とういうがめんのになるのでそこの中から「コト」か「Koto」(選択した言語で変わります)にチェックを付けて右上のチェックマークを押し、パスワード入力をするとKotoを追加できる。次に、「ホーム」から受取というのを選んで、「受け取り」という画面にします。

気を付けてほしいのが、最初に左上にあるアイコンからKotoを選んでください。すると、QRコードの中心がKotoのロゴになるかと思いますので、その状態で「アドレスをコピー」を押してください。このコピーした文字列(受信アドレス)が、マイニングのときに必要になります。

本番のマイニング

マイニングにもいくつか方法があるのですが、今回はそう言った細かい話は割愛して、「プール」というものを利用するとだけ書いておきます。プールは簡単に言えばみんなで協力しあってマイニングして協力に応じた成果によって報酬をくれるようなやり方だと思ってください。

その「プール」の中には登録が必要なものもあるのですが、面倒なので、今回は登録不要で使える「mofumofu.me」を使います。

ではマイニングをしていきます。以下のコマンドを実行します。この際、先ほど「もにゃ」でコピーしてもらった受信アドレスを入れて下さい。

./minerd -a yescrypt -o stratum+tcp://koto.mofumofu.me:3301 -u "さきほどコピーしておいた文字列"

サンプルとして私のウォレットを載せておきます。以下のコマンドを実行することで、cpu-miner自体に問題がないかの判断ができます。

./minerd -a yescrypt -o stratum+tcp://koto.mofumofu.me:3301 -u k1CfrWHQF9YakM597u2RxNMesMfj8AJnop9

これを実行するとこんな感じの表示が出ると思います。

2020-08-08 01:33:29] thread 0: 1634 hashes, 0.05 khash/s
[2020-08-08 01:33:30] thread 1: 1985 hashes, 0.05 khash/s
[2020-08-08 01:33:30] thread 2: 1791 hashes, 0.05 khash/s
[2020-08-08 01:33:30] thread 3: 1374 hashes, 0.05 khash/s
[2020-08-08 01:33:31] thread 0: 53 hashes, 0.05 khash/s
[2020-08-08 01:33:31] accepted: 3754/3754 (100.00%), 0.21 khash/s (yay!!!)

これは実行途中の表示なので、最初のほうの表示は違うかもしれませんが、(yay!!!)と出ていれば問題ありません。ちなみに結果にある通り、Raspberry Pi 4Bだと現状でおおよそ0.2khash/sでした。

もし自分のウォレットを入力したはずなのに以下のようなエラーが出るっていうのがあれば自分の経験からですが、おそらく受信アドレスが間違っています。

...
stratum authentication failed cpuminer
...

コピーしたし間違ってない!って私も思っていたのですが、ウォレットの設定でも気を付けてください太文字でって書いたのですが、違う通貨(例えばモナコイン)とかの受信アドレスを設定してしまっている可能性があります。「アドレスをコピー」の画面に出ているQRコードの中心の絵はKotoになっていますか?そこを確認してください。上に書いた私のウォレットのサンプルコマンドで実行して、問題なければ間違いなくそこが間違っていると考えて大丈夫です。

あとはこれを実行して放置しておけばマイニングができます。

儲かるのか?

先に書いておくと儲かりません笑。いや、なんとなくわかっていたんですけどね。具体的にどれくらいになるのかを具体的に書き残しておきます。

さきほど少し出てきた0.2khash/sという値ですが、これいまいちよくわかりませんよね。わからない方のために簡単にこの数字についていうと計算のスピードです。この数字が大きければたくさんマイニングできます。

ただ私の理解が甘いせいか、これを見てもどれだけ採掘できてるんだよってなるので、2020.8.8日現在の状況をもうちょっとわかりやすく書き残しておきます。

ほぼ24時間採掘しました。これで得られたのは

6.65 KOTO : (現在の日本円でいうと0.49円)

ちなみにRaspberry Piの電気代を少しだけ具体的に計算してみます。SoCのBCM2711はどこかの海外フォーラムで見た覚えている数値だと4Wが最大のTDP(TDPと実消費電力は異なるものですが、今回はこの値を用います)。それ以外にUSBデバイスがぶらさががっていれば当然それも追加ですが、今回は何もつけていないので、インターネットまわりなどボード全体の消費電力を少し多めに見積もって8Wとしておきます。あとはおおよその目安を細かいことは省きますが以下の式で計算します。

kWh x kWh単価28円 x 1ヶ月の時間=1か月の電気代

これに当てはめると、おおよそ155円になることがわかります。さあもうお分かりかと思いますが、1日で0.5円ということは、1っか月で15円。大赤字もいいところです。ただ6KOTOを今1日に採掘できているので、一時期3円とかまで上がっていたことを考えると、今マイニングをしておくと、何年後とかにそこそこ大きなリターンが得られるかもしれませんね。まあ逆に下がる可能性もあるわけですが。

実行時のシステムパフォーマンス

実行時にCPU使用率が100%になっているので暴走していないかなどを確認しています。グラフ化するツールには私が作成した超便利ツールのtmchkを利用しています。あとはいつか紹介したいなと思うのですが、RPi4にはメタルケースを使っています。メタルケースのレビューはこちらです。

サンプリングレートは5秒、記録時間は2時間で長期安定性を見てみました。室温は時計についてるような適当なやつの読みですが30度です。

CPU使用率が100パーセントで見切れてしまった。

青い線が吹っ切れてますが、CPU使用率100パーセントです。こんど見切れないように修正しておきます(追記:tmchkの修正を行いました。2020/8/17)。最初のほうはマイニングをしていないのでぐちゃっとしていますが、マイニングを始めると一気に使用率も温度も上昇します。しかし、室温30°Cという過酷な環境でもおおむね70°C以下に収まっています。メタルケースのおかげでしょう。

あとは、熱暴走とかもしていないので、CPU周波数も安定して1500MHzを維持してますね。OCしたらどうなるかは知りませんが…。

なので以上のデータからも安定しており、連続稼働には問題なさそうなことがわかるかと思います。

補足:CPU使用率に制限をかける場合

マイニングといえばシステムのリソースをほぼ全部使ってしまうので、CPU使用率に制限をかけたいというのであれば以下のコマンドを実行してください。cpulimitというパッケージをインストールします。

sudo apt-get install cpulimit

使い方は少々難しいかもしれませんが、手順通りにやれば大丈夫なので順を追ってやっていきましょう。

マイニングを実行している状態で以下のコマンドを実行します。

top

すると以下のような表示になります。

top - 02:21:04 up 15:09,  1 user,  load average: 4.32, 4.41, 4.45
Tasks: 150 total,   1 running, 149 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.6 us,  2.3 sy, 94.6 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.4 si,  0.0 st
MiB Mem :   3474.2 total,   2702.8 free,    239.0 used,    532.5 buff/cache
MiB Swap:    100.0 total,    100.0 free,      0.0 used.   2914.4 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND    
13649 pi        20   0   88716  14764   6536 S 379.1   0.4   3513:59 minerd     
14412 xrdp      20   0   39012  25672  10624 S   3.3   0.7   0:11.54 xrdp       
 1249 pi        20   0  264800 114556  73236 S   2.0   3.2   2:41.12 Xorg       
 2598 pi        20   0   90780  32800  25344 S   1.7   0.9   1:05.25 lxterminal 
 1493 pi        20   0  155964  33180  24544 S   0.7   0.9   4:02.25 lxpanel    
31134 root      20   0       0      0      0 I   0.7   0.0   0:02.00 kworker/u+ 
   70 root     -51   0       0      0      0 S   0.3   0.0   0:25.70 irq/37-mm+ 
  399 root      20   0    2828   1832   1428 D   0.3   0.1   2:55.45 dhcpcd     
24625 pi        20   0    8784   2944   2440 R   0.3   0.1   0:00.05 top        
    1 root      20   0   33752   8080   6472 S   0.0   0.2   0:03.39 systemd    
    2 root      20   0       0      0      0 S   0.0   0.0   0:00.05 kthreadd   
    3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp     
    4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp 
    5 root      20   0       0      0      0 I   0.0   0.0   0:00.23 kworker/0+ 
    8 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu+ 
    9 root      20   0       0      0      0 S   0.0   0.0   0:04.32 ksoftirqd+ 
   10 root      20   0       0      0      0 I   0.0   0.0   0:57.85 rcu_sched  

このなかのCOMMANDの行minerdとなっているものを探します。今回は一番上です。この行の左端のPIDというのをコピーします。

これをつぎのコマンドで利用します。

cpulimit -l CPU使用率 -p PIDの番号
例.
cpulimit -l 350 -p 1234

上の例はCPU使用率を350%に制限しています。お気づきの方をいると思いますが最高100%ではないんです。マルチコアだとそのコア数x100%がシステムの上限の使用率になるのでそれに合わせて利用してください。Raspberry Piは4コアなので、400%が上限です。

ちなみにプログラム実行時だとこんな風に制限をかけることもできます。

cpulimit -l 350 command

ですが、これはうまくマイニングでは使えなかったのでPIDを指定する方法がいいと思います。

まとめ

  • (現状は)儲からない。
  • 負荷をかけても安定している
  • 思った以上に簡単

儲からないっていうのも薄々わかりつつ、現状のマイニングについて今更やってみました。非常に簡単なので、経験としてやってみるのもいいと思いますし、将来性を見込んで趣味でマイニングするものありだと思います。ちなみになぜやってみようかと思い立ったのかと言えば、webサーバは24時間運用、アクセス数も少ない=もっとサーバーのリソースを有効活用できないか、というところだったのですが、やはりいいことは何もなさそうです。

今回システムの安定性をみるのに使った自作ツールのtmchkです。よろしければ見ていってください。

今まで煮なかったシンプルで扱いやすい便利ツール

他にはこんなことを書いています!

アーカイブ

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です