読者です 読者をやめる 読者になる 読者になる

黄金虫ブログ

アルトコインとかRaspberry PiとかArduinoとか解説紹介していきます!

ラズベリー農家のすすめ/NEM Harvesting on Raspberry Pi 3 B

NEM/XEM Raspberry Pi3 アルトコイン 仮想通貨 Iot テクノロジー

f:id:Ocknamo_crypt:20161105231141j:plain

この記事を読む前に必要な前知識をざっくりと説明(詳しい人は飛ばしましょう)

  1. NEMという仮想通貨があります
  2. ビットコインでいう採掘(マイニング)がそんなにでかい計算力や電力なくてもできるので、ビットコインより分散性が高くなるんじゃないかと注目してる人がいます
  3. ざっくりいうと採掘(マイニング)とは仮想通貨のインフラを支える仕事をする代わりにその通貨で報酬をもらえる仕組みのことです
  4. NEMでは採掘ではなく収穫(ハーベスト)と呼び、NEM通貨(単位はXEM)を報酬でもらえます
  5. 実際のところ報酬はどこから来るのかというと、通貨のやり取りの際の手数料です
  6. 日本人が農耕民族だからかは知りませんがなんか日本でNEMにはまってる人たちが多いです
  7. とりあえずそれ用のソフト(ウォレット)を入れてXEMを買ってウォレットに入れていろいろやるとバーべストができ報酬(収穫?)がもらえます

ラズベリー農家の会とは

さて、計算力や電力がいらないというなら、どうせならRaspberry Pi3でハーベストしてやろうと考えた人とかがなんかゆるく作った。
ラズベリーパイでハーベストして報酬をツイートしていいねする」だけの会です(俺じゃなくてミジンコさんが作りました)


登録するとブロックチェーンからの情報でハーベスト結果を報告してくれるボットもミジンコさんが作ってくださいました。俺にはそんな技術はございません。

NEM東京様にもなぜか取り上げられました(内部リーク+ゴリ押しだけど)

Raspberry Pi 3(B)でハーベストする方法/How to Harvest

早速セッティング方法について説明します。*1

Raspberry Pi 3自体の初期設定については過去記事参照してください。

アップデートします

f:id:Ocknamo_crypt:20161106000901p:plain

Firefox(iceweasel)をインストール

デフォルトで入っているブラウザではウォレットに入ることもできす白画面が表示され途方に暮れることになります。
そこでFirefoxをインストールします。(Chroniumについては私は試していません)
インストール方法はターミナルを起動して

$ sudo apt install iceweasel

y/nと聞かれたらyを入力してEnter
インストールできていれば、Menu→インターネットの中に「Firefox ESR」が入っているはずです。

NEM公式ウォレット/NCCNISのインストール

以下のリンク先にウォレットがあるのでダウンロードします。(最新版:nis-ncc-0.6.82.tgz)
http://bob.nem.ninja/
Raspberry Pi3の好きなところに展開するとPackageというディレクトリができます。
Packageディレクトリに移動して、ターミナルに以下のコマンドを入力すればNIS,NCCどちらも起動します。

$ ./nix.runMon.sh

このあとちゃんと起動すると以下のような画面に。
f:id:Ocknamo_crypt:20161106004417p:plain
写真だとNISがまだ動いていませんが、ほおっておくとP2Pネットワークからブロックチェーンの情報をダウンロードし始めます。
その期間1日から3日。直接ネットからデータベースをダウンロードしてしまうと早いらしいですが自分はやらなかったので説明しません。*2

アカウントの作成

上の画像の左側でアカウントを新しく作成します。
ここまで読んでる人に詳しく説明する必要はないと思いますので省略。
ただ、アカウント名はアルファベットが良いようです。

ハーベストの方法

RaspberryPiだからといって特別なことはしていません。
新しいアカウントを作成し、ブロックがすべてダウンロードできたら次は
f:id:Ocknamo_crypt:20161106010127p:plain
写真の赤丸=VestedBalanceが10000以上になるまで待たなくてはいけません。
そのためには10000XEM以上をウォレットに入金ししばらく待つ必要があります。(10万XEM程放り込むとすぐです)
詳しくはこちらをご覧ください。
NEMの説明書 - ハーベスティングとは

VestedBalanceが1000以上になったら「ハーべスティングを開始する」をクリックすればローカルハーベストが開始されます。

継続したバーべストのための対策

上記の方法でバーべストはできるのですが、一定時間でNISNCCが落ちるという問題があります。
目下対策中ですがこれまでに効果があった対策についてまとめます。

熱対策

完全にハード面での対策ですが、ヒートシンク+冷却ファンでCPUの過熱の問題はかなり解決されます。
以下に説明する対策を行えば「FireFox起動してるだけでだんだん動かなくなる。」みたいな症状はだいぶ軽減されます。
まずヒートシンクはアマゾンで購入
f:id:Ocknamo_crypt:20161106011727j:plain
f:id:Ocknamo_crypt:20161106011749j:plain
f:id:Ocknamo_crypt:20161106011821j:plain
シールで張るだけです。
https://www.amazon.co.jp/dp/B01DW5LUTO/ref=cm_sw_r_tw_dp_x_WAGhybBKR4S1Zwww.amazon.co.jp

冷却ファンは5Vの小型のものを秋葉原のマルツで購入。ラズパイの「3V」出力とつないで使用。(5Vだとうるさすぎるため)
ラズパイのケースに穴をあけてつけます。
缶コーヒーボトルのフタのサイズがぴったりだったのでそれで円をケガイて穴をあけました。
f:id:Ocknamo_crypt:20161106012902j:plain
f:id:Ocknamo_crypt:20161106013152j:plain
f:id:Ocknamo_crypt:20161106013205j:plain
f:id:Ocknamo_crypt:20161106013701j:plain
f:id:Ocknamo_crypt:20161106013256j:plain
f:id:Ocknamo_crypt:20161106013328j:plain
ファン固定用のねじを通す3.5mm穴をあけます。
f:id:Ocknamo_crypt:20161106013340j:plain
f:id:Ocknamo_crypt:20161106013352j:plain
f:id:Ocknamo_crypt:20161106013402j:plain
f:id:Ocknamo_crypt:20161106013459j:plain
ラズパイのI/Oはオスのピンなのでそれに合うブレッドボード用のメスのコネクタついているワイヤを適当に買ってきて、途中で切ってファンの配線とつなげて絶縁テープでも巻いておきます。
こういうの。
Amazon CAPTCHAブレッドボード用JPワイヤー 100mm×10本 10PS-MIX Linkman製|マルツオンライン

f:id:Ocknamo_crypt:20161106013513j:plain
f:id:Ocknamo_crypt:20161106013527j:plain
ファンのカバーもあった方が良かったですが、ファンに間違えて指を突っ込んでも指は大丈夫です(ファンは多分壊れる)


温度の比較はやっておりませんが体感だと10°ぐらいは下がっているように感じます。
CPUの温度を取得するには以下のコマンドを使用します。

$ sudo vcgencmd measure_temp

この熱対策を行って24時間ほどNIS,NCCを起動した状態で測ったところ37.0度。
対策を行った結果、数時間から十時間ほどで落ちていたNISが1日は連続稼働するようになりました。

メモリの確保

NISが落ちるのはラズパイのメモリが足りないからだという提言をいただきメモリ対策をいろいろと行っています。
実験計画法に基づいた定量的定性的な評価は行えていませんが、おそらく効果があると考えられる方法について列挙します。

1.GPUメモリを64Mから16Mに変更

GPUに使用するメモリを減らすと、アプリケーションに使用できるメモリ量が増やせます。
ビデオ出力は遅くなるでしょうが、ハーベスト中はどちらにしろほかの操作ができる状態でないので関係ありません。削りましょう。
f:id:Ocknamo_crypt:20161107010904p:plain
MENUからraspberrypiの設定に移動。パフォーマンスのGPUメモリはデフォルトでは64Mになっています。
f:id:Ocknamo_crypt:20161107010812p:plain
16Mに変更。再起動すると反映されます。
Before
f:id:Ocknamo_crypt:20161107011616p:plain
After
f:id:Ocknamo_crypt:20161107011638p:plain
totalのメモリが925Mから973Mに増えています。

2.NISのメモリ上限を制限

RaspberryPi3は1Gのメモリを積んでいます。
一方でNISの使用メモリはというと、実行ファイルをテキストエディタで開いてみると、
f:id:Ocknamo_crypt:20161107013048p:plain
初期メモリ(Xms)が512M,最大メモリ(Xmx)が1Gです。明らかに大きすぎますね。
というわけでこのオプションを書き換えます。
f:id:Ocknamo_crypt:20161107013102p:plain
数値は512mとか640mとか諸説あるようですがXmxの値をXmsと同じにして1Gより下げるのが基本です。
*3

稼働時間の測定方法

これは直接の対策ではありませんが、NISの稼働時間を測定するためにメモリを監視する方法について書いておきます。
おそらくもっとスマートな方法がありますので、教えてください(おい)

まずNISNCCを起動します。
次にターミナルをもう一つ起動してJavaの動いてるプロセスを取得するために以下のコマンドを使用。

$ jps

こういう感じに表示されます
f:id:Ocknamo_crypt:20161107014637p:plain
2つある'CommonStarter'がNISNCCでどちらがどちらかわかりませんが、いろいろ調べてみると番号が若いほうがNISであるとわかります。
上の画像の場合は1093がNISのメモリです。
これを監視します。

$ jstat -gcutil 1093 3600000

「1093」は毎回違う数字なので起動するたびにjpsで確認しています。
その右の「3600000」は監視するインターバルをミリ秒で指定するオプションです。
3600000msはちょうど1時間なので1時間に1度NISのメモリ使用をリアルタイム監視してくれます。
実際にやるとこんな感じになります。
f:id:Ocknamo_crypt:20161107015507p:plain
一行が1時間なので、この行数を数えれば稼働時間がわかります。

現状報告

  1. 連続稼働は約44時間を確認しています。
  2. ラズパイでの収穫は全て合計して24xemです。

今後の課題

  1. 農家の過疎が深刻
  2. 40時間程度では短すぎる。無限に稼働できるようにするか自動的に再起動かけられるようにしたい
  3. ミスって電源が抜けたり停電で再起動することが多発するのでUPS自作したい
  4. nanoWalletへの移行
  5. 自然エネルギーを用いたハーベストへの挑戦
  6. 収穫少ない

……などなど


課題はたくさんありますが、めんどくさい分収穫の味は(多分)格別です!
皆さんぜひラズベリー農家になりましょう。



つづき
ocknamo-crypt.hatenablog.com

*1:しかし、これはあくまで2016年11月現在判明している設定方法であり最長で44時間しか連続稼働を確認していないのでさらに設定を探求する必要があります。

*2:ヒント:ウォレットのあったリンク先

*3:この方法については、オプションを書き換えた後でもリアルタイムで見てみるとメモリ1Gぎりぎりまで使用していたり(NIS+NCCですが)、NISを起動したときのログには「Xms512m,Xmx1G」と記述があったりよくわからないことが多い。ミジンコ氏によると両方512mに設定して効果はある様子

黄金虫ブログは寄付を募っています。

募金は筆者のモチベーションと社会の分散性の向上ために使用されます。

NEMで寄付いただいた方にはお返しにocknamoモザイクを差し上げます(手動)

NEM/XEM

NEM Donation Address: NCWX3R-KAOT4D-ITPEKG-ZX5SNG-ICKKGV-ZLVT2E-KKI6

bitcoin

BTC Donation Address:1MupdofmXC8vrRLLJQBKq6NLAp1sRmfAqt

PR