この記事を読む前に必要な前知識をざっくりと説明(詳しい人は飛ばしましょう)
- NEMという仮想通貨があります
- ビットコインでいう採掘(マイニング)がそんなにでかい計算力や電力なくてもできるので、ビットコインより分散性が高くなるんじゃないかと注目してる人がいます
- ざっくりいうと採掘(マイニング)とは仮想通貨のインフラを支える仕事をする代わりにその通貨で報酬をもらえる仕組みのことです
- NEMでは採掘ではなく収穫(ハーベスト)と呼び、NEM通貨(単位はXEM)を報酬でもらえます
- 実際のところ報酬はどこから来るのかというと、通貨のやり取りの際の手数料です
- 日本人が農耕民族だからかは知りませんがなんか日本でNEMにはまってる人たちが多いです
- とりあえずそれ用のソフト(ウォレット)を入れてXEMを買ってウォレットに入れていろいろやるとバーべストができ報酬(収穫?)がもらえます
ラズベリー農家の会とは
さて、計算力や電力がいらないというなら、どうせならRaspberry Pi3でハーベストしてやろうと考えた人とかがなんかゆるく作った。
「ラズベリーパイでハーベストして報酬をツイートしていいねする」だけの会です(俺じゃなくてミジンコさんが作りました)
@ocknamo ラズパイ稼働環境とハーベスト量を披露しあって良いね( ゚∀゚)人(゚∀゚ )するだけの会www
— ミジンコ @戦闘力20000の農家 (@HowDoYouLikeU) 2016年10月15日
登録するとブロックチェーンからの情報でハーベスト結果を報告してくれるボットもミジンコさんが作ってくださいました。俺にはそんな技術はございません。
@ocknamoオクナモぼっちラズベリー農家さんが、ハーベストに成功しました![ブロック高:823106]
— 🍒[NEM]ラズベリー農家の会🌿 (@RasFarClub) 2016年10月26日
NEM東京様にもなぜか取り上げられました(内部リーク+ゴリ押しだけど)
“謎の組織「ラズベリー農家の会」が結成された模様” / “NEM一筋の私ですが、XEMに変動が無いだけに色々と誘惑が・・・・ | NEM東京” (1 user) https://t.co/VfJRdisgva
— オクナモ@ぼっちラズベリー農家 (@ocknamo) 2016年10月26日
Raspberry Pi 3(B)でハーベストする方法/How to Harvest
早速セッティング方法について説明します。*1
Raspberry Pi 3自体の初期設定については過去記事参照してください。
アップデートします
Firefox(iceweasel)をインストール
デフォルトで入っているブラウザではウォレットに入ることもできす白画面が表示され途方に暮れることになります。
そこでFirefoxをインストールします。(Chroniumについては私は試していません)
インストール方法はターミナルを起動して
$ sudo apt install iceweasel
y/nと聞かれたらyを入力してEnter
インストールできていれば、Menu→インターネットの中に「Firefox ESR」が入っているはずです。
NEM公式ウォレット/NCC・NISのインストール
以下のリンク先にウォレットがあるのでダウンロードします。(最新版:nis-ncc-0.6.82.tgz)
http://bob.nem.ninja/
(17/10/25追記:現在NCCは非推奨のためダウンロード出来ません。ウォレットを使用したい場合はNanoWalletをこちらからダウンロードしてください。またどうしてもローカルハーベストをしたい場合はこちらの記事を参考にしてください。)
Raspberry Pi3の好きなところに展開するとPackageというディレクトリができます。
Packageディレクトリに移動して、ターミナルに以下のコマンドを入力すればNIS,NCCどちらも起動します。
$ ./nix.runMon.sh
このあとちゃんと起動すると以下のような画面に。
写真だとNISがまだ動いていませんが、ほおっておくとP2Pネットワークからブロックチェーンの情報をダウンロードし始めます。
その期間1日から3日。直接ネットからデータベースをダウンロードしてしまうと早いらしいですが自分はやらなかったので説明しません。*2
アカウントの作成
上の画像の左側でアカウントを新しく作成します。
ここまで読んでる人に詳しく説明する必要はないと思いますので省略。
ただ、アカウント名はアルファベットが良いようです。
ハーベストの方法
RaspberryPiだからといって特別なことはしていません。
新しいアカウントを作成し、ブロックがすべてダウンロードできたら次は
写真の赤丸=VestedBalanceが10000以上になるまで待たなくてはいけません。
そのためには10000XEM以上をウォレットに入金ししばらく待つ必要があります。(10万XEM程放り込むとすぐです)
詳しくはこちらをご覧ください。
NEMの説明書 – ハーベスティングとは
VestedBalanceが1000以上になったら「ハーべスティングを開始する」をクリックすればローカルハーベストが開始されます。
継続したバーべストのための対策
上記の方法でバーべストはできるのですが、一定時間でNISかNCCが落ちるという問題があります。
目下対策中ですがこれまでに効果があった対策についてまとめます。
熱対策
完全にハード面での対策ですが、ヒートシンク+冷却ファンでCPUの過熱の問題はかなり解決されます。
以下に説明する対策を行えば「FireFox起動してるだけでだんだん動かなくなる。」みたいな症状はだいぶ軽減されます。
まずヒートシンクはアマゾンで購入
シールで張るだけです。
www.amazon.co.jp
冷却ファンは5Vの小型のものを秋葉原のマルツで購入。ラズパイの「3V」出力とつないで使用。(5Vだとうるさすぎるため)
ラズパイのケースに穴をあけてつけます。
缶コーヒーボトルのフタのサイズがぴったりだったのでそれで円をケガイて穴をあけました。
ファン固定用のねじを通す3.5mm穴をあけます。
ラズパイのI/Oはオスのピンなのでそれに合うブレッドボード用のメスのコネクタついているワイヤを適当に買ってきて、途中で切ってファンの配線とつなげて絶縁テープでも巻いておきます。
こういうの。
https://www.amazon.co.jp/dp/B00P9BVKOKブレッドボード用JPワイヤー 100mm×10本 10PS-MIXの通販ならマルツオンライン
ファンのカバーもあった方が良かったですが、ファンに間違えて指を突っ込んでも指は大丈夫です(ファンは多分壊れる)
温度の比較はやっておりませんが体感だと10°ぐらいは下がっているように感じます。
CPUの温度を取得するには以下のコマンドを使用します。
$ sudo vcgencmd measure_temp
この熱対策を行って24時間ほどNIS,NCCを起動した状態で測ったところ37.0度。
対策を行った結果、数時間から十時間ほどで落ちていたNISが1日は連続稼働するようになりました。
メモリの確保
NISが落ちるのはラズパイのメモリが足りないからだという提言をいただきメモリ対策をいろいろと行っています。
実験計画法に基づいた定量的定性的な評価は行えていませんが、おそらく効果があると考えられる方法について列挙します。
1.GPUメモリを64Mから16Mに変更
GPUに使用するメモリを減らすと、アプリケーションに使用できるメモリ量が増やせます。
ビデオ出力は遅くなるでしょうが、ハーベスト中はどちらにしろほかの操作ができる状態でないので関係ありません。削りましょう。
MENUからraspberrypiの設定に移動。パフォーマンスのGPUメモリはデフォルトでは64Mになっています。
16Mに変更。再起動すると反映されます。
Before
After
totalのメモリが925Mから973Mに増えています。
2.NISのメモリ上限を制限
RaspberryPi3は1Gのメモリを積んでいます。
一方でNISの使用メモリはというと、実行ファイルをテキストエディタで開いてみると、
初期メモリ(Xms)が512M,最大メモリ(Xmx)が1Gです。明らかに大きすぎますね。
というわけでこのオプションを書き換えます。
数値は512mとか640mとか諸説あるようですがXmxの値をXmsと同じにして1Gより下げるのが基本です。
*3
稼働時間の測定方法
これは直接の対策ではありませんが、NISの稼働時間を測定するためにメモリを監視する方法について書いておきます。
おそらくもっとスマートな方法がありますので、教えてください(おい)
まずNISとNCCを起動します。
次にターミナルをもう一つ起動してJavaの動いてるプロセスを取得するために以下のコマンドを使用。
$ jps
こういう感じに表示されます
2つある’CommonStarter’がNISとNCCでどちらがどちらかわかりませんが、いろいろ調べてみると番号が若いほうがNISであるとわかります。
上の画像の場合は1093がNISのメモリです。
これを監視します。
$ jstat -gcutil 1093 3600000
「1093」は毎回違う数字なので起動するたびにjpsで確認しています。
その右の「3600000」は監視するインターバルをミリ秒で指定するオプションです。
3600000msはちょうど1時間なので1時間に1度NISのメモリ使用をリアルタイム監視してくれます。
実際にやるとこんな感じになります。
一行が1時間なので、この行数を数えれば稼働時間がわかります。
現状報告
- 連続稼働は約44時間を確認しています。
- ラズパイでの収穫は全て合計して24xemです。
今後の課題
- 農家の過疎が深刻
- 40時間程度では短すぎる。無限に稼働できるようにするか自動的に再起動かけられるようにしたい
- ミスって電源が抜けたり停電で再起動することが多発するのでUPS自作したい
- nanoWalletへの移行
- 自然エネルギーを用いたハーベストへの挑戦
- 収穫少ない
……などなど
課題はたくさんありますが、めんどくさい分収穫の味は(多分)格別です!
皆さんぜひラズベリー農家になりましょう。
@RasFarClub 確認しました!そしてハーベスト成功!\6xem!/しかしnis落ちた。 #ラズベリー農家の会 pic.twitter.com/DqeitdfMyT
— オクナモ@ぼっちラズベリー農家 (@ocknamo) 2016年10月26日