DAppNode でノードを建てよう!
以前、遂に出た Ethereum アプライアンス - イーサリアムをエーテリウムと呼びたいブログ でEthereum アプライアンスが発売されたことをお話ししました。今回はそのアプライアンスの OS になる。DAppNode の話になります。
なぜ(フル)ノードを建てなければならないのか?
仮想通貨のノードを建てたことがありますか?ビットコインも Ethereum も XRP もノードと呼ばれるネットワークを構成する一種のサーバーが互いに通信してトランザクション承認したり、チェーンの同期したり、クライアントからの要求を受けてトランザクションの受付をしています。本来ノードは、分権を目指すビットコインや Ethereum の利用者は理想ではノードを各自で建てなければならないのですが、無料でノードが公開されていたり、ハードウェア要件、ネットワーク要件がそこそこきついので自前で用意するなんてことはあまり無いと思われます。日本のとある著名ビットコイナーも自前のノードは持ってないと言っていました。これが普通だと思います。
Ethereum だと INFURA の提供するノードに Metamask やその他ウォレットが集中的にアクセスしているらしくて、Ethereum は全然分散していない中央集権的だと非難されますが、これはユーザが自前のノードを持ってないことも原因の一つです。INFURA ノードがアクセス過多で落ちてしまったら Ethereum が使えなくなるので最もな批判だと思います。ビットコインマキシマリストは、そういう問題を理解しているので自前でフルノードを持っているようです。また、各自でフルノードを運用できるようにアプライアンスを販売している人もいますね。(Lightning Network の hub 化を防ぐためかもしれません)
と言うものの、インストールして動かすだけなら誰でもできるのですが、チェーン同期のため24時間動作だったり、大容量かつ高速なストレージ、高速なネットワーク回線を用意するというのは一般のご家庭は大変ですね(よくある話ですねw)。なので、開発とか検証とかなら VPS とか Azure みたいなクラウドサービス使うことも多いのではないでしょうか。でも、理想としては VPS は良い選択ではありません。みんなが VPS にノードを建ててしまったらその VPS に依存することになるので分権性は低下します。
私は一度もフルノードの同期に成功したことがありません。Parity や Geth をインストールして起動させたことはあるのですが、当時、インターネット回線が ADSL で部屋に入り込む WiFi が遅すぎて同期に異常に時間がかかる上、ストレージも全然足りないし(ゲームとかプログラミング位なら十分なんですが)、普段使いで 24 時間起動させるなんて耐久性的に怖いしで途中で諦めています。別にマイニングがしたいわけじゃないんですが、愛好者としては一度はフルノード運用したいですよね?
そこで、こういった問題をある程度解決する手段として、AVADO や DAppNode があります。インターネット回線の問題は解決できませんがそれ以外は解決できそうです。今年の末から来年の始まりあたりに本番環境用の Ethereum の PoS クライアントソフトウェアが提供されてる予定で、高性能なマイニング機器でなくても我々一般人がノード運用する動機が高まってきたので、私は DAppNode を昨日から色々と調べています。
DAppNode って?
DAppNode は Ubuntu と呼ばれる Linux ディストリビューションをベースに開発されている、各種ノード、その運用をサポートするミドルウェアの導入を助けてくれる OS です。OSS で提供されていて無料で利用できます。インストールは少し難しいかもしれません。
インストーラーが完全に日本語化されていないことと、Windows や Mac しか使ったことが無い人にとっては、文字ベースで違和感を感じるだろうこと、パーティショニングの理解が難しいということで、万人にはやはりおススメできません。お金に余裕があるなら AVADO の購入を検討した方がいいでしょう。
基本的に Linux なので、コマンドライン操作に慣れていると便利です。例えば SSH サーバも apt-get で簡単にインストールできるので、リモートから中で何が起きているとか詳細を調べられます。
といっても、基本的にコマンドライン操作は必要ありません。DAppNode には専用の管理画面が Web で提供されています。パソコンはもちろん iPad やスマートフォンから管理ができます。
インストールが完了すると WIFI アクセスポイント経由でアクセスするか VPN からインターネット越しにアクセスするかの二通りの選択ができます。WIFI アクセスポイントは、DAppNode をインストールしたコンピュータが WIFI 無線 LAN ルーターとして機能するという事です。恐らくすべての機能が DAppNode には入っています。 VPN 経由でアクセスするには、DAppNode までのポートを開ける必要があるのでちょっと面倒ですね。この機能は、友人や知人等特定の人にインターネット越しにノードを提供するために利用することができます。
恐らく以下のサーバーが最初から動作しているものと思われます。
つまり、DAppNode はパソコンを分散化インターネット対応のルータにするネットワーク OS という風に表現しても差し支えないでしょう。IPFS も動作するからファイル共有サーバとしても使えますね!
ちゃんと確認できていないのですが、その多くが Container 技術である Docker で管理されています。Docker を通じてこれらサーバーをインストールしたり削除したりアップデートしたり管理しているようです。apt-get は作法として行儀が良くなさそうです。
DAppNode ノードのインストールが終わりコンソールからログインをすると、Parity の同期が始まるようです。(rc.localかもしれない)
推奨ハードウェア仕様
ドキュメントにもある程度書いてありますが、複数のノードを同時に使いたいならそれなりに高速な CPU と大容量のストレージが必要になります。ストレージは HDD ではなく SSD が必須ですね。ノードの数が増えれば当然 CPU のコアの数もあった方がいいです。一つのノードにつき一つの(CPU)スレッドが理想だと思います。24時間動作も必要になるから産業用コンピュータがいいかもしれませんね。
ネット上で個人で買えるハードウェアを探したんですが、
こういう感じの、アルミボディで排熱効率が良く、ファンレスで無線LAN機能がついてて WIFI ルータみたいな使い方ができるハードが良いと思います。電力消費も考慮したほうがいいでしょう。ARM系で良いものが無いか調べましたが、産業用ラズパイというものがありました。DAppNode の ISO(インストールCD) はインテル版しか多分無いので、ARM でビルドし直したバージョンを自分用意する必要がありそうです。ARM でやるのは茨の道だと思われます。
お試しで使うなら中古のノートPCをおススメします。yahoo ショッピングとかで Core i5 クラスが一万円以下で買えます。
ストレージは 256GB 以上は必要になるはずです。Ethereum のフルノードがそれくらい最低でも必要だからです。できれば倍欲しいですね。
まとめ
BitTorrent とか Winny でファイル共有したことがある人たちには結構楽しい OS じゃないかと思います。
悲しい事に、私はまだ Parity の同期が出来ていません。手に入れた PC が HDD なのがいけなかったようです。ゆっくり同期が進むのですが、遅すぎて多分一生終わらないはずです。予想できていたのですが、容量もちょっと足りなさそうなので SSD を注文しました。次回の記事で、インストールし直すのでそのあたりスクリーンショットを撮って簡単にインストールの流れの説明と、Parity の同期後できることの説明もする予定です。当面の目標としては、Raiden Network のテストネットに参加したり、Ethereum のテストネットワークには最低でも参加したいです。色々確認したいですし。