約4.5万円でBaseフルノードを構築する手順①
はじめに
イーサリアムのフルノードを構築すると、ステーキングが可能になります。
そのため、ロケットプールなどを使うと8ETHからノードを使ったステーキングや、さらに32ETHをデポジット(入金)することで、ソロステーキングができます。
ステーキングによる報酬を得ることに加え、自分自身でRPCエンドポイントを使えるようになります。
これにより、トランザクション内容をInfuraやAlchemyなどのノードプロバイダーや、パブリックエンドポイントに対して、通信内容を秘匿にすることができます。
上記のメリットがありますが、残念ながらトランザクションコストの面では、イーサリアムのようなL1チェーンは、非常にガス代が高いのが現状です。
一方、L2チェーンの方がトランザクションコスト(ガス代)が圧倒的に安いことから、dAppの構築や、DeFiなどで高速取引およびアービトラージをしたい人には、魅力的な選択肢になっています。
しかし、ノードプロバイダーのリクエスト数制限やパブリックエンドポイントにおける速度制限にわずらわしさを感じてないでしょうか?
加えて、アクセス内容もノードプロバイダーから見えてしまいます。
L2ノードを構築することは、高価だと思われがちですが、Optimism (Base) のチェーンは、比較的低価格のマシンで構築できます。
先日、約4.5万円でCoinbase社によるOPスタックのL2チェーン「Base」のフルノードを構築しました。
これによるメリットとして、速度およびリクエスト数の制限なくRPCエンドポイントをプライベートに使うことができます。
今回は、2回にわたり構築方法をまとめますので、参考にしていただければ幸いです。
前提条件
今回は、インストールの難易度がかなり高くなっているため、初心者にはお勧めしません。
Linuxの知識、ネットワーク、ハードウェアの知識がある程度必要になります。
SPIフラッシュ等の設定を間違えるとOSが起動しなくなる可能性があります。
また、詳細に書くと量が多くなっていまうため、大まかに書いています。
詳細は、参照先のリンク先をよく読んでセットアップをしていただければと思います。
さらに、Baseを構築するには、L1ノードであるイーサリアムのフルノードまたはアーカイブノードが必要になります。
理由としては、L2はイーサリアムノードからブロック情報を取得するためです。
イーサリアムフルノードの構築には、以下記事を参考にしていただければ幸いです。
1.約3.5万円でイーサリアムフルノードを構築する手順①
1. ハードウェアの購入
Baseは、OPスタックで構成されているので同じL2チェーンであるOptimismとほとんど同じです。
Optimismのノードの要件を見ると、op-nodeというコンポーネントに2CPUおよび4GBのメモリ、op-gethというコンポーネントに4CPUと8GBのメモリが必要とのことです。
そのため、最低で6コアのCPUおよび12GBのメモリを搭載したPCが必要になります。
このスペックで最も安価だと思われるPCは、ARMアーキテクチャを採用しているRock 5 Model Bだと思います。
これは、約3万円で8コアのCPUと16GBのメモリを搭載しています。
そのため、今回は Rock 5 Model Bで構築することにしました。
構築には、以下すべてが必要になります。
①パソコン(Rock 5 Model B 16GB):IoT本舗 ROCK 5 Model B
価格: 28,180円
②メモリ(2TB高速SSD):Lexar NM610PRO SSD 2TB NVMe PCIe Gen 3×4 M.2 Type 2280 内蔵 SSD 3D NAND 最大読込 3,300MB/s 並行輸入品 メーカー3年保証 LNM610P002T-RNNNG
価格:10,480円(メモリは価格が変動しやすいのでご注意ください)
価格:530円
④メタルケース(ヒートシンク付):ROCK 5B用メタルケース
価格:2300円
⑤アダプタ:ROCK 5 ROCK 4 ROCK3に適したRADXA PD 30W電源 (American Standard)
価格:3599円
⑥SDカード(16GB):LONDISK 16GBメモリカードクラス10 microsdhcカードdashcam/カメラ用(U1-16GB)
価格:559円
上記合計(①~⑥):45,648円
その他必要なもの(必要に応じて用意してください)
2. UbuntuサーバーのMicroSDドライブの用意
こちらにRock 5 Model B 用のUbuntuイメージ(Ubuntu Focal Server Rock 5B)があります。
Rufusを使ってダウンロードしたイメージをブートディスクとしてMicroSDに書き込みます。
※Rock 5 Model B 専用のUbuntuでないと起動しません。
※Rufusの使ってUbuntuサーバーのMicroSDドライブを作成する方法は、こちらのサイトが参考になります(基本的にUSBと変わりません)。
3. ハードウェアのセットアップ
上記の商品がそろったら、Rock 5 Model Bのボードの裏にある「M2.2280スロット」に購入したSSD 2TBを差し込みます。
UbuntuをインストールしたMicroSDを「MicroSDカードスロット」に差し込みます。
次に、画面中央のメタルケースをドライバーで開けて、横にある緑のプラスチックを外し、Rock 5 Model 5を横からスライドして差し込みます。
最後に、フタをしっかりと閉め、ネジを締めます。
4. ルーターの設定
ルーターによって多少設定方法が異なりますが、ポートフォワーディングの設定がルーターで必要になります。
ルーターにログインして以下設定を行ってください。
・BaseフルノードのプライベートIPアドレス を固定(Static IP)にする(例:IPアドレス「192.168.1.130」をBaseノードとするならばDHCPの割当を解除する)。
・WANから9222ポート(UDP/TCP両方)を受信した場合、イーサリアムノードへ転送する設定(例:192.168.1.128)
※上記は、最低限のネットワーク設定となります。
※イーサリアムのフルノードのネットワーク設定は完了していることを想定しています。
5. Rock 5 Model BのブートオーダーをSSDにする
シングルボードPC界において、MicroSDブートだと故障してOSが立ち上がらなくなることがあるのは共通認識のようです。
そのため、SSDでOSがブートするように変更します。
それでは、HDMIディスプレイ、USDキーボードおよびマウス、電源、イーサネットケーブルをPCとルータにつないでください。
そうすると、MicroSDに書き込んだUbuntuサーバーが起動します。
以下にてログインできます。
ユーザー名:rock
パスワード:rock
ログインしたら、以下作業をしていきます。
日本語キーボードの設定
Rock 5 Model BのUbuntuサーバーの初期設定は、DHCPになっており、自動でネットワーク設定がされます。
そのため、立ち上げるとインターネットにアクセス可能です(つながらない場合はネットワークの再設定を行います)。
まず、キーボードの配置を日本語にする必要があります。
こちらを参考に変更してください。
UbuntuサーバーのイメージをSSDに書き込む
UbuntuサーバーのOSイメージを以下コマンドにて取得できます。
$ wget https://github.com/radxa/debos-radxa/releases/download/20221031-1045/rock-5b-ubuntu-focal-server-arm64-20221031-1328-gpt.img.xz
マニュアルを参考にSSDにUbuntuサーバーを書き込んでください。
参照:「Option 2: Write to NVMe SSD on ROCK 5B」(リンク先のOption 2:の内容です)
SPIフラッシュの書き込み
ブートオーダーは、SPIフラッシュ(フラッシュメモリの一種)というチップに書き込む必要があります。
まず、こちらを参考にSPIフラッシュを初期化および、ブートローダーの書き込みをします。
※上記のコンテンツのブートローダーのリンク先が切れています。
※現在ブートローダーは、こちらにあります。
※失敗すると起動不可になる可能性があります(書き込みに時間が掛かることをお忘れなく!)。
SSDブートの確認
OSをシャットッダウンします。
$ sudo su shutdown -h now
OSがシャットダウンしたら、本体からMicroSDカードを抜きます。
起動ボタンで再起動してUbuntuサーバーがSSDから立ち上がれば完了です。
5. Ubuntuサーバーのセットアップ
こちらの手順でセットアップを続けてください。
しかし、統合された手順なのですべてが必要なわけではありません。
以下が必要だと思います。
STEP 6: CHANGE THE PASSWORD(パスワード変更)
※パスワードが単純すぎるため必ず変更してください。
STEP 7: UPDATE THE SYSTEM(OSのアップデート)
※updateコマンドでエラーが発生するのでこちらの内容で必ず解決してください。
STEP 9: SET KEYBOARD (OPTIONAL)
※もう一度日本語キーボードを設定する必要があります。
STEP 10: SET THE TIMEZONE (OPTIONAL)
※タイムゾーンがUTCなので変える必要があります。
STEP 11: REBOOT
※キーボードは、リブート後に設定が反映されます。
6. その他のインストールおよび設定
Static IPの設定
Static IPの設定は、netplanを使うとyamlで設定できるため便利です。
こちらを参考に設定してください。
例)192.168.1.130をStatic IPとして設定するには以下のようになります。
root@rock-5b:/# cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
enP4p65s0:
dhcp4: no
addresses: [192.168.1.130/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8,8.8.4.4]
Rsyslogのインストール
Rsyslogが入っていなかったため、UFWのログがきちんと保存されませんでした。
こちらを参考にインストールを行ってください。
UFWの有効化
UFWを有効にします。手順は、こちらが参考になりました。
UFWで、ポート22 (SSH接続)を解放してください。
※Baseに必要なポートは、Dockerが解放するため22のみで大丈夫です。
$ sudo ufw allow ssh
$ sudo ufw reload
まとめ
Rock 5 Model BでBaseを動かすための環境構築を簡単にまとめました。
詳細には、触れていないので多少不親切な内容になってしまいました。
かなり応用的な内容であるため、個別の技術的詳細事項は、各自で調べていただけますと幸いです。
※各自知っていることも多いかと思います。
次回は、Baseを実際に稼働させるための設定をまとめたいと思います。
不明点があればお気軽にご相談ください。
ここまで読んでくださりありがとうございました。