誰でもできるノード構築 ~Taikoノード(alpha-2)編~

本記事ではTaikoのノードを構築する手順を解説します。執筆時点では、alpha-1テストネットが稼働中です。
3/23の公式アナウンスを以て、待望のalpha-2テストネットが始動しました。
(alpha-2で若干構成が変更になっていたので手順も修正しました。)

ノード構築の事前準備にあたる以下がお済みでない場合は、該当の記事を読んで実施したうえで、本記事の手順を行ってください。


ノード構築の前に

ササっと作業を行いたいところですが、最低限の事前確認を行っていきます。

Taikoのalpha-1 テストネットは2/15 14:00(UTC)に廃止予定です。
上記の約一ヶ月後にalpha-2 テストネットがリリースされる予定です。

alpha-2に切り替わった後、本内容も更新する予定です。
※alpha-2で更新済み

公式ドキュメント

Taikoの公式ドキュメントを手元に用意しておきます。
基本的にはこのドキュメントがあれば、他の資料等は必要ありません。

ノード構築にあたる部分は以下から。

ハードウェア要件

こちらのドキュメントに記載があるので念のため確認しておきます。
※Google翻訳にて日本語化

テストネットのノードなのでシビアには求めません。上段の最小スペックを満たしておけばネットワークへの参加は問題ありません。
なので、Contabo M・Lプランのいずれも条件を満たしています。

proverのハードウェア要件

ただし、prover(いわゆるバリデーター)として、ブロックをバリデート(検証)したうえでノード報酬を得るには、別の要件も満たす必要があるようです。
※本記事ではproverを有効にします。

このproverを有効にするためのハードウェアの前提条件は、前述のものよりハイスペックとなります。

ここで改めてレンタルしたContaboのサーバスペックと照らし合わせてみます。

VPS Lプランであれば、CPUのコア数は最低ラインでRAMは微妙に届かずといったところ。ですが今回は許容範囲として稼働させます(推奨値を完全に満たしていないので期待した挙動をしない恐れあり)。
※VPS Mプランは厳しそう…

なお。proverになれば、トランザクションに自身のアドレスを残すことができます。
ただし、ハードウェアの性能勝負に勝てればの話ですが…(やってみてどうなるか)

※ノード起動後、1日くらい様子を見ましたが、"VPS L"プランのスペックでは勝てそうにありません。報酬を得るためには"VPS XL"プランの利用を視野に入れなければならなそうです。
もしくは"VPS L"プランで運用して、期間全体で数回バリデートできればラッキー的な感じでの運用でしょうか…
(3/27時点 dockerコンテナ間のリソース調整で改善できるかもしれないので検証中)

ノード運用の報酬

alpha-2では"proverのノード運用!に対してインセンティブが明言されています。

つまり、ブロックをバリデートすると報酬として$TTKOを発行。その$TTKOはテストネット報酬の期間終了時に$USDCに交換できるようです。
で、報酬の上限は50,000USDCとのこと。ただ、これはあくまでもノード運用のために利用するリソースへの対価です。

※ちなみにalpha-1のときは以下のような記載がありながらも、インセンティブはありませんでした。

構築手順ドキュメント

前述の以下ドキュメントに手順が記載されています。

この手順に従って、ノードを構築します。

ノードの構築

てことで、先ほど開いたであろうノード構築手順たるドキュメントを確認しながら作業を進めていきます。

ここからサーバを操作していきますので、Tera Termを起動してログインしておいてください。

システム要件

ドキュメントに「前提条件」の記載があるので、まずはここを済ませる必要があります。

3番目は前述したハードウェア要件です。すでに確認済みですので、ここでは1・2番目を満たす必要があります。

前提ツールのインストール

1つ目の「Docker」と2つ目の「Git」は、インストールが未完了の状態であれば、ここでインストール作業が必要です。
以下に従ってインストールしてください。

■Dockerインストール

■Gitインストール

Dockerのインストール作業を行った場合、一度ログアウトして再度ログインを行ってください。一般ユーザーでログインしてGitをインストールします。
※Gitインストール済みの場合はスキップしてください。

# パッケージリスト更新
$ sudo apt-get update

# Gitインストール
$ sudo apt-get install -y git

# インストール・Ver確認
$ git version    # Verが表示されればOK

Sepoliaネットワークのガス取得

proverを有効にするにはガス代となるETHが必要です。

未取得の場合は、以下から該当のETHを取得してください。

取得先が3つあります。急ぎ取得する場合は下のRockX、またはSEPOLIA FAUCETが割と早く届きます。
ただし、少量になりますので、多めに欲しい場合はSepolia PoW Faucetを利用してください。

あとは一応Discordにもfaucetが用意してあります。

Sepolia L1のエンドポイントを用意

後述の構築手順で出てきますが、今回のノードの構築にあたり、各自の環境変数にエンドポイント等を設定する必要があります。

よってここで指定された"Sepolia L1のエンドポイント"を用意します。
無料RPCを作成できるサイトは幾つかありますが、本記事ではドキュメントにも記載のあるAlchemyを利用します。

まずはAlchemyにアクセスします。

サインアップ(登録)が済んでいない場合、ここでサインアップしてください。
※無料版のみの利用となるため、有償契約は不要です。

サインアップが済んでいる前提でログインができたら、HOME画面右上のハンバーガーメニューをクリック、「Apps > Create App」を選択します。

CHAINはEthereum、NETWORKをSepoliaに設定します。
NAMEとDESCRIPTIONは任意の値を入力してください。
それぞれ設定ができたら、下部「Create app」をクリックします。

これでRPCが作成されました。HOME画面に戻ると、APP欄にSepoliaネットワークのRPCが作成されていることを確認できます。

エンドポイントを取得するので、右側の「VIEW KEY」をクリックします。

HTTPSとWEBSOCKETSの項目がありますので、それぞれ右側の「Copy」をクリックして取得し控えておきましょう。

これで前提条件はすべて満たしました。

Taikoノード構築手順

あとは手順のとおりコマンドを実行していくだけです。

Gitリポジトリのクローン

# gitリポジトリをクローン
$ git clone https://github.com/taikoxyz/simple-taiko-node.git

# taikoリポジトリのディレクトリに移動
$ cd simple-taiko-node

※cloneコマンドを実行すると以下のような表示が出ます。

環境変数の設定

# evnファイルコピー
$ cp .env.sample .tmp

# .tmpファイルの値を置換して.envファイルとして出力
# 環境変数のproverを有効にして、エンドポイントURLと秘密鍵を設定
$ sed -e "s/ENABLE_PROVER=false/ENABLE_PROVER=true/" -e "s/L1_PROVER_PRIVATE_KEY=/L1_PROVER_PRIVATE_KEY={ガス代があるL1ウォレットの秘密鍵}/" -e "s|L1_ENDPOINT_HTTP=|L1_ENDPOINT_HTTP={コピーしたHTTPS}|" -e "s|L1_ENDPOINT_WS=|L1_ENDPOINT_WS={コピーしたWEBSOCKETS}|" .tmp > .env

# .tmpファイル削除
$ rm .tmp

※秘密鍵の取り扱いがあります。原則、ノード専用アカウント等を用意して使用しましょう。
秘密鍵は外部に漏れないよう厳重に取り扱ってください。

ノード実行

# Dockerコンテナ起動
$ docker compose up -d

docker-composeコマンドを実行すると、以下のようにdocker imageのロード~コンテナの構築が実行されます。そのまま処理が終わるのを見守ってください。

少し待つと以下のように緑文字で「done done done!!」と表示されます。無事にコンテナ(ノード)が起動しました。

起動後はエラー等が発生していないか、ログを表示して確認します。

# ログ表示
$ docker compose logs -f

コマンドを実行すると以下のようにログが表示されます。
エラー表示がなければ問題ありません。
※ログ表示を終了するには、"ctrl"を押しながら"c"を押下します。

もしエラーが発生している場合は赤字で表示されます(白字エラーもありますが大半は無視してOK)。
エラー内容によっては別途対応が必要になる場合があります。

なお、以下に該当するエラーは公式より説明があります。
中には「無視できます」というのもあるので、エラー発生時は必ず確認してください。該当しないエラーは別途対応が必要です。
※エラー詳細はこちらからチェック

上記以外にも公式Disordですでに言及されている場合がありますので、以下チャンネルを覗いてみましょう。

Taiko_Discord #testnet -faq

ノードのステータス確認

ここで一旦コンテナの起動状況を確認します。
以下コマンドを実行して、作成済みのコンテナ一覧がステータスを表示します。

# dockerコンテナのステータス確認
$ docker ps -a

Taikoは5つのコンテナで構成されていますね。STATUS列に「UP ~」と表示されていれば稼働しています。

また、リソースの消費状況を確認したい場合は以下のコマンドを実行します。

# コンテナのリソースモニタリング
$ docker stats

コンテナ毎のリソースの状態を確認できます。
項目毎の見方はdocker stats — Docker-docs-ja 20.10 ドキュメントを参考にどうぞ。

docker-composeでTaikoのノードを起動すると、同時にダッシュボードも起動しています。
ブラウザを起動して以下URLにアクセスすることで確認が可能です。
{サーバのIPアドレス} > レンタルした仮想サーバ(Contabo)のIPアドレスに置換してください。

http://{サーバのIPアドレス}:3000/d/L2ExecutionEngine/l2-execution-engine-overview?orgId=1&refresh=10s

こんな画面でノードの稼働状況を確認できます。
なお、ノード起動後のネットワークの同期は少し時間が掛かるようです。
基本、放置していれば同期は完了します。

同期が進むとブロック数が更新されます。

Sepoliaネットワークの現在のブロック数はエクスプローラーで確認できます。

構築後の操作

コンテナが正常に起動できていれば、ノードの構築は完了です。
ノードは常時稼働させておきますので、このまま作業を終えますので、Tera Termを終了します。

# ログアウト
$ exit    # (またはctrl + dを押下)

これにてノード構築の作業は終了です。

ノード(prover)の稼働状況確認

ノードを起動後、しばらく時間を置いたら報酬に関わるproverのログをチェックしてみましょう。

ブロックの証明者を確認

$ docker compose logs -f | grep "Valid block proven"

上記コマンドを実行すると、以下のように各ブロックの証明者を確認できます。

Myノードが最初の証明者となったブロックを確認

$ docker compose logs -f | grep "Your block proof was accepted"

上記コマンドでログが表示されれば、該当のブロックIDにおいて自身が建てたノードがproverの役割を果たしたことになります。
つまり、報酬の対象となる動作です。
※数秒待っても何も表示されない場合は、証明者となった履歴がないことを意味します。
※ログ表示を終了するには、"ctrl"を押しながら"c"を押下します。

補足

後作業の発生

これはPJ側にて何らかの変更があった際に発生する可能性があります。
テストネットが終了すればノードの停止を行う必要がありますし、ノードを構成しているソフトウェアのVerUpが必要であれば、我々の方でノードのVerUp作業をしなければなりません。

これらの情報は、PJ側がTwitterやDiscordでアナウンスしてくれますので、適宜チェックするようにしておきましょう。

ノードの停止・削除

ノードを停める場合は、用途に応じて以下いずれかのコマンドを実行します。

# コンテナの停止(ボリュームは保持)
$ docker compose down

# コンテナの完全削除
docker compose down -v
rm -f .env

停止後に再度起動する場合は、『ノード実行』の手順から行ってください。

ノードのアップデート

前述の『ノードの停止・削除』で削除まで行った後、以下コマンドを実行します。

# composeファイル更新
$ docker compose pull

コマンドの実行が完了したら、再度『ノード実行』の手順を一から行ってください。

おわり

最後にTaikoのノードがどのように動いているか概要が記載されたページがあるので、気になる人は読んでおきましょう。

以上がTaikoのノード構築手順です。今回もお疲れさまでした。



この記事が気に入ったらサポートをしてみませんか?