誰でもできるノード構築 ~Elixirノード編~

本記事ではElixirのノードを構築する手順を解説します。

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


ノード構築の前に

定例の事前確認を行っていきます。

公式ドキュメント

Elixirの公式ドキュメントです。

ノード構築にあたる部分は以下から。
(v1 → v2に変更 2023/04/27)

ハードウェア要件

当然ドキュメントに記載あり。

はい。そんなに高いスペックは求められていませんね。
本シリーズの手順に沿ってサーバをレンタルしていれば問題なくクリアです。

ノード運用の報酬

Elixirはノード運用者に対して、特別なロール「Alchemist」を付与するとアナウンスしています。もしかすると報酬を獲得できるかも?

※ロール取得ができる期間が一旦終了となりました。次のv2でチャンスがあるそうなのでチェックしておきましょう。

※v2では「Alchemists」ロール、もしくは「Elder Alchemists」ロールを獲得できるとされています。すでに「Elder Alchemists」であれば別途報酬があるとか?

ロールを含めた報酬を得るには、上図にあるとおり以下ツイートへのLike&RTが必要となるのでお忘れなく。もちろんフォローもね。

私は現在「Alchemists」なので「Elder Alchemists」をもらうぞ!

ノードの構築

さて、ノードの構築作業を進めていきます。

システム要件

ハードウェアの要件は確認しましたので、システム要件を確認します。

Dockerを必要としていますね。

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

他のノード構築を行っている場合はインストール済みですが、まだの場合は以下を参考にインストールします。

ウォレットアカウント用意

テストネットのバリデータ実行用のアカウントを用意するように記載があります。
このあと秘密鍵を設定する必要も出てくるので、セキュリティの観点からもメインアカウントは避け、なるべく新しいアカウントを用意するようにしましょう。

Elixirノード構築手順

Tera Termでサーバにログインし、手順に沿ってコマンドを実行していきます。

※v1でノードを稼働させている場合は、一旦そのノードのコンテナを停止→削除して、$HOME配下のelixirディレクトリを削除したうえで以下手順を実行してください。
(docker imageも消しておくと尚良し)

Dockerfileを作成

まずはユーザーディレクトリ配下にElixir用のディレクトリを生成して、コンテナの起動に必要なDockerfileを作成します。

# Elixirディレクトリ生成
$ mkdir elixir
$ ls -la    # elixirディレクトリが表示されればOK
$ cd elixir

# Dockerファイル作成
$ vim Dockerfile

# テキストエディタが開くので以下3行を転記(コピペ)
FROM elixirprotocol/validator:testnet-2
ENV ADDRESS={ウォレットアドレス}
ENV PRIVATE_KEY={ウォレット秘密鍵}
ENV VALIDATOR_NAME={任意のノード名}
(ESC押下後、:wqを入力で保存して終了)

# Dockerfile確認
$ less Dockerfile
(qを入力で終了)

ノード実行

あとは作成したDockerfileをビルドして、runコマンドで起動するだけです。

# Dockerfileのビルド
$ docker build . -f Dockerfile -t elixir-validator

ビルドは少し時間を要します。
ERRORが出ず、以下のように進んでいれば問題ありません。
そのままビルドが完了するのを待ちます。

しばらく待っていると…

はい。ビルドが正常に完了しました。
念のため、dockerイメージがちゃんと作成できているか確認します。

# docker imageを一覧表示
$ docker image ls

はい。Elixir絡みのdocker imageが存在するのOKですね。

imageが正常に作成されているので、Elixirコンテナを起動します。

# Elixirコンテナ起動
$ docker run -d -it --name ev elixir-validator

ノードのステータス確認

# コンテナ起動確認
$ docker ps -a

STATUSがUP ~となっていれば正常に起動できています。

ウォレットをバリデーターとして登録

Elixirの専用サイト(Elixir Dashboard)で$ELXRを請求→ステーク、起動したバリデーターノードを登録する必要があります。
このあたりは以下ドキュメントの指示に従ってください。
(v1ノードを起動したままだった場合は、該当アドレスにGoerli ETHがエアドロされているようです)

デフォルトで1,000ELXRを請求できるので、ドキュメントに記載のとおり100~1,000ELXRで任意の量をステークします。
(私はなんとなく500ELXRをステークしました)

Token Contract:0xb6806650A5345DA2A7C119648944A52e7faA0eb1

ステークまで終えたら次はバリデーターを登録します。
「enroll」をクリックします。

ノード起動時のDockerfileに記載したアドレスとサイトに接続したアドレスと同じであることを確認します。
相違がなければ再度「enroll」をクリックしてウォレットでtxに署名し登録します。
(下図は「enroll」が非活性になっていますが、ステーク後にリロードすると活性状態になります)

ここまでを行うとDiscordのRoleをClaimできます。
※現在は「Alchemist(T2)」のRoleが貰えます(2024.01.04追記)。

バリデーターの登録確認

登録が完了されると、以下リーダーボードのページにアドレスがリストされます。アクセスしてアドレスがリストされているか確認してみましょう。
※ダッシュボードを確認すると「Last Update」が"2023.05"前後のものしか表示されていません。どうやら上記以降に起動したバリデーターはダッシュボードに掲載されないようです(2024.01.04追記)。

また、メトリクスページでは取引状況を確認できます。
こちらもアクセスしてアドレスを検索し、状況を確認してみましょう。
(当然バリデーター起動直後は取引0です)
※メトリクスページも非公開となってしまっていますね(2024.01.04追記)。

ちなみに私のはしっかりとリストされていました。右側の数字がオーダー数です。
ちなみに稼働後しばらく経っても0のままということも起こりえるみたいですが、運営いわくリストされていればオーダー数は0でも問題ないとのことでした。

バリデーターのステータス確認

個々のバリデーターのステータスは以下ページでも確認ができます。
必要に応じてチェックしてください。

構築後の操作

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

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

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

補足

後作業の発生

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

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

ノードのアップデート

公式からノードのアップデートがアナウンスされたら、ノードをアップデートする必要があります。以下の手順に従いコマンドを実行してください。

# elixirディレクトリに移動
cd $HOME/elixir

# ev(Elixir)コンテナのプロセス停止
$ docker kill ev

# ev(Elixir)コンテナ削除
$ docker rm ev

# dockerイメージ取得
$ docker pull elixirprotocol/validator:testnet-2

# Dockerfileビルド
$ docker build . -t elixir-validator

# Elixirコンテナ起動
$ docker run -it --restart unless-stopped -d --name ev elixir-validator

ノードの停止

ノードを停める場合は、以下のコマンドを実行します。
削除まで行うかは必要に応じて判断してください。

# コンテナの停止
$ docker stop ev

# コンテナの削除
docker rm ev

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

おわり

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


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