誰でもできるノード構築 ~Taikoノード(alpha-5)編~
本記事ではTaikoのノード構築からproposerおよびproverを有効にする手順を解説します。
ノード構築の事前準備にあたる以下がお済みでない場合は、該当の記事を読んで実施したうえで、本記事の手順を行ってください。
※本記事は、以前に執筆した「誰でもできるノード構築 ~Taikoノード(alpha-2)編~」をベースに最新仕様にリライトしたものです。
ノード構築の前に
まずは最低限の事前確認を行っていきます。
公式ドキュメント
Taikoの公式ドキュメントを手元に用意しておきます。
基本的にはこのドキュメントがあれば、他のドキュメント等は必要ありません。
ハードウェア要件
こちらのドキュメントに記載があるので念のため確認しておきます。
※Google翻訳にて日本語化
上記はTaikoノード(L2)の必要スペックです。
proverのハードウェア要件
また本記事でのゴールとなるprover(いわゆるバリデーター)として、ブロックをバリデート(検証)したうえでノード報酬を得るために、proverのハードウェア要件を確認します。
上記で述べたとおり、やはりXLプランが有力、次点でLプランとなりそうです(プラン別での検証は未実施のため確証は得ていません)。
ノード運用の報酬
現時点でノード運用に対する報酬は明言されていません。
しかしながら、Taikoの仕組みを踏まえるとメインネット起動後もproverの役割を担うものには$TTKOトークンが必要なのは明らかなので、テストネットで貢献しておけばメインネット起動時に報酬が得られるかも?といった予想をしています。
※無論、徒労に終わる可能性も大いにあるため、このあたりはご自身で判断するようにしてください。
構築手順ドキュメント
前述の以下ドキュメントに手順が記載されています。
複数ページに分かれていますが、まずは上記手順に従って進めていきます。
ノードの構築
早速、先ほど確認したノード構築手順たるドキュメントを確認しながらノードを構築していきましょう。
ここからサーバを操作していきますので、Tera Termを起動してログインしておいてください。
システム要件
ドキュメントに「前提条件」の記載があるので確認していきます。
4番目は前述したハードウェア要件で、先に済ませていますで、ここでは1・2番目の対応をします。
※本記事ではLinuxを使用しているため3番目はスルーで結構です。
前提ツールのインストール
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
必要トークンの確認
proposerを有効にするにはSepoila L1にETHが、proverを有効にするにはSepoila L1のETHと別にTTKOjが必要です。
それぞれ未保有であれば以下を参考に取得してください。
なお、TTKOjは最低でも2.5 TTKOjが必要です。
旧テストネットでproposer、またはproverとして貢献していればエアドロップされていますが、該当しない場合はスワップで入手してください。
TTKOjの取得
TTKOはスワップで取得できます。
ただし、スワップで取得できるのはTaiko(L2)のTTKOjです。スワップ後はTTKOjをSepoila(L1)にブリッジします。
TTKOjの支出承認
proverとしての役割を果たすにはTTKOjが必要とのことでしたが、ただ保有しておけばよいわけではなく、L1のコントラクトを支出として承認しておく必要があります。
まずコチラにアクセスします。
「Connect to Web3」を押下してウォレットを接続します。
次にL1のコントラクトアドレスを対象として2.5以上のTTKOjを承認します。
ちなみにamountが「2500000000000000000」となっているのは、トークンにはそれぞれ最小単位(decimals)となるものがあり、amoutに指定数量 + 最小単位の数だけ0を付加する必要があるからです(ここではこの説明に留めておきます)。
※3 TTKOjを承認したければ「3000000000000000000」と入力
承認(Approve)が完了したらL1にTTKOjを入金します。
Taiko L1にTTKOjを入金
TTKOjの入金は以下の流れで行います。
対象のコントラクトアドレスページにアクセスします。
先ほどと同様にウォレットを接続し、以下の「depositTaikoToken」欄で2.5 TTKOjを指定しtxを実行し入金します。
txが正常に完了すればトークンを用いた準備作業は完了です。
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」をクリックして取得し控えておきましょう。
※今回から最下段のWEBSOCKETSのみで結構です。
これで準備は整いました。
Taikoノード構築手順
ここからは手順どおりにコマンドを実行していきます。
Gitリポジトリのクローン
# gitリポジトリをクローン
$ git clone https://github.com/taikoxyz/simple-taiko-node.git
# taikoリポジトリのディレクトリに移動
$ cd simple-taiko-node
環境変数の設定
# evnファイルコピー
$ cp .env.sample .tmp
# .tmpファイルの値を置換して.envファイルとして出力
# 環境変数のprover, proを有効にして、エンドポイントと秘密鍵を設定
$ sed -e "s|L1_ENDPOINT_HTTP=|L1_ENDPOINT_HTTP=https://rpc.sepolia.org|" -e "s|L1_ENDPOINT_WS=|L1_ENDPOINT_WS={コピーしたWEBSOCKETS}|" -e "s/ENABLE_PROVER=false/ENABLE_PROVER=true/" -e "s/ENABLE_PROPOSER=false/ENABLE_PROPOSER=true/" -e "s/L1_PROVER_PRIVATE_KEY=/L1_PROVER_PRIVATE_KEY={ガス代があるL1ウォレットの秘密鍵}/" -e "s/L1_PROPOSER_PRIVATE_KEY=/L1_PROPOSER_PRIVATE_KEY={同じウォレットの秘密鍵}/" -e "s/L2_SUGGESTED_FEE_RECIPIENT=/L2_SUGGESTED_FEE_RECIPIENT={同じウォレットのアドレス}/" .tmp > .env
# .tmpファイル削除
$ rm .tmp
「sed -e ~」行は文字列が長く、自身が取得したRPCやウォレットの秘密鍵を記載する必要があります。一度メモ帳などに一行丸ごとをコピーして{}内を置換後、再度コピーしてコンソールに貼り付けてください(右クリック:ペースト)
※秘密鍵の取り扱いがあります。原則、ノード専用アカウント等を用意して使用しましょう。
秘密鍵は外部に漏れないよう厳重に取り扱ってください。
ノード実行
# Dockerコンテナ起動
$ docker compose up -d
docker-composeコマンドを実行すると、以下のようにコンテナが生成されていきます。処理が終わるまで待ちます。
少し待つと以下のように緑文字で「Started」の文字が表示されます。コンテナが起動したことを表します。
起動後はエラー等が発生していないか、ログを表示して確認します。
# ログ表示
$ docker compose logs -f
コマンドを実行すると以下のようにログが表示されます。エラー表示がなければ問題ありません。
※ログ表示を終了するには、"ctrl"を押しながら"c"を押下します。
もしエラーが発生している場合は赤字で表示されます(白字エラーもありますが大半は無視してOK)。
エラー内容によっては別途対応が必要になる場合があります。
たとえば以下のエラーを見てみましょう。
これは無視してよい、ノードが同期されると表示されなくなると記載があります。
つまり上記エラーが出力される間はノードの同期が未完了というわけですので気長に同期完了を待ちましょう…結構時間が掛かります…(上記はL1ブロックの同期)。
※他のエラーを確認する場合はコチラから。
ノードの再起動(必要な場合のみ)
手順の誤りや何かしらの修正が発生する場合は、以下コマンドでノードを終了させた後に再度やり直してください。
# Dockerコンテナ終了
$ docker compose down
必要な修正を行ったら、再度コンテナ起動コマンドを実行します。
# Dockerコンテナ起動
$ docker compose up -d
ノードの稼働状況確認
Taikoノードダッシュボード起動(任意)
ノードを実行した後は、以下のようなTaikoノードダッシュボードを起動して状態を確認することもできます。
※参考ページ
起動は以下の手順で可能です。
# ホームディレクトリに移動
$ cd
# Gitリポジトリクローン
$ git clone https://github.com/dojonode/taiko-node-dashboard-docker
# クローンしたリポジトリのディレクトリに移動
$ cd taiko-node-dashboard-docker
# コンテナ起動
$ docker compose up -d
起動が完了したらブラウザでURLを入力してアクセスします。
※http://{サーバIPアドレス}:7744
すると以下の画面が表示されます。
ノードのIPを設定する必要があるため、右上のアイコンを押下します。
各URLが表示されますので、上から順にノードのIP(仮想サーバのIP)に置き換えます。
置換後、右側のマークが✅になればOKです。
上記が完了すればノードを検知して各種ステータスが反映されます。
また、歯車⚙アイコンを押下し、ノードに紐づけたウォレットアドレスを入力するとproveやproposeの状況も確認が可能となります。
アドレスを入力するとウォレットの残高やprover, proposerとしてのブロック処理数なども表示されるようになります。同期の進捗率も表示されていますね。
prover, proposerの確認
prove、あるいはproposeの履歴を確認するにはSepoila Explorerに自身のアドレスを入力して確認することもできます。
またはノードのログでも確認が可能です。
▼proverのステータスログ確認
$ docker compose logs -f taiko_client_prover_relayer
▼proverのログ検証
$ docker compose logs -f taiko_client_prover_relayer | egrep "block proof was|proof submission error|Block proven"
▼proposerのステータスログ確認
$ docker compose logs -f taiko_client_proposer
▼proposerのログ検証
$ docker compose logs -f taiko_client_proposer | egrep "Propose transactions succeeded"
※ログ表示を終了するには、"ctrl"を押しながら"c"を押下します。
構築後の操作
コンテナが正常に起動できていれば、ノードの構築は完了です。
ノードは常時稼働させておきますので、このまま作業を終えますので、Tera Termを終了します。
# ログアウト
$ exit # (またはctrl + dを押下)
これにてノード構築の作業は終了です。
補足
後作業の発生
これはPJ側にて何らかの変更があった際に発生する可能性があります。
テストネットが終了すればノードの停止を行う必要がありますし、ノードを構成しているソフトウェアのVerUpが必要であれば、我々の方でノードのVerUp作業をしなければなりません。
これらの情報は、PJ側がXやDiscordでアナウンスしてくれますので、適宜チェックするようにしておきましょう。
ノードの停止・削除
ノードを停める場合は、用途に応じて以下いずれかのコマンドを実行します。
# コンテナの停止(ボリュームは保持)
$ docker compose down
# コンテナの完全削除
docker compose down -v
rm -f .env
停止後に再度起動する場合は、『ノード実行』の手順から行ってください。
ノードのアップデート
前述の『ノードの停止・削除』で削除まで行った後、以下コマンドを実行します。
# composeファイル更新
$ docker compose pull
コマンドの実行が完了したら、再度『ノード実行』の手順を一から行ってください。
おわり
最後にTaikoのノードがどのように動いているか概要が記載されたページがあるので、気になる人は読んでおきましょう。
この記事が気に入ったらサポートをしてみませんか?