ほぼコピペで構築するTaiko node（Alpha-5 ちょっとだけA6）

※Alpha-6の開始がアナウンスされました。
本記事で紹介しているA5については、R6年1月末でクローズされました。

Alpha6でproveするためにはSGXに対応した端末が必要ですが、Proposeは本記事のとおり構築しても実施することができます。

A6からはHoleskyテストネットを利用するため、エンドポイントの取得はBlockPi(https://dashboard.blockpi.io/) を利用してください（可能な方はノードを立ち上げてください。）


# 目　的

　イーサリアムのType1 ZK‐EVMをめざすTaikoのテストネットノードを、初心者でもほぼコピペだけで構築し、Propose/~~Prove~~
 のTxを生成する。

# 前提条件

- 毎月４０ドルの支出を許容できること。

# Taikoノード（Proposer / ~~Prover~~可能）の最小ハードウェア要件

- **CPU:8/16コア**
- **32GB以上のメモリ**
- **1TBのストレージ**

~~※今回はSepoliaノードを構築せずAlchemyのエンドポイントを利用するため、Taikoノードを動かすだけなら実際のストレージ要件は100GB程度です。~~

~~（実際、私はAlchemyでほぼ制限がかからずPropose/Proveを成功させている。Alpha-6開始間近ということもあり、Sepoliaノードの構築は不要と判断。）~~

上記の要件を満たすコスパ最高のVPSがこちら（簡単な契約方法は後ほど説明します。）

![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/42b191b7-5d6a-0a2e-e418-fa7432e24bdb.jpeg)


ドイツの会社ですが、たったの月額４０ドルで

10コアのCPU、60GBのメモリ、1.6TBのストレージ（SSD）のモンスターマシンを借りることができます。

※8/16コアのCPUに対して10コアのCPUだけど大丈夫？と思った人もいるかと思いますが、これは8コア/16スレッドのCPUという意味だと思いますので問題ありません。

簡単に説明すると……

8/16コアのCPUはハイパースレッディングという技術で、１つのコアに2つの処理をさせています。なので、処理速度は単純に２倍にはならず、おおよそ最大で25％の性能向上が見込まれるといわれています。

なので8コア×1.25＝10コア

単純計算なので厳密には違うと思いますが、8/16コアCPUと10コアCPUは同等の性能を持つので問題にならないのです。

# 事前準備

- **VPS契約**
- **最低限のセキュリティ対策**
- **必要なツールのインストール等**

## **VPS契約**

[CONTABO CLOUD VPS XL](https://contabo.com/en/vps/)を選択

下図のように選択（何か月借りるかはおまかせします。）

![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/638e4056-c909-2e8e-0481-50b695e56e10.jpeg)


続き(rootのパスワードなので強度を高くしましょう。「12345Abcde!!」これくらいやれば安心です。ここで強度を確認できます。[https://www.security.org/how-secure-is-my-password/](https://www.security.org/how-secure-is-my-password/)）

![3-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/f61015c0-ca34-b372-ee04-16233096170a.jpeg)


続き（[deepl](https://www.deepl.com/translator)使えば楽に住所を翻訳できます。）

![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/3565dc6d-0519-6ac5-180f-029644dd27ad.jpeg)


続き（ここは説明不要かと思います。）

![5-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/4dc8a43b-cf75-252f-8787-0bd466f57120.jpeg)

以上で契約は終了です。

## **最低限のセキュリティ対策**

※サイバーセキュリティに関してはノーガード戦法で攻めるぜ！という方はrootでのログインを確認できた時点で**必要なツールのインストール**に飛んでも大丈夫です。（自己責任）

まず、Contaboの契約が終わったらメールが２通届きます。１通目メールに記載されているIDとパスを利用して、VPSの管理画面にログインしましょう。（後ででもいいので、初期パスから任意のパスに必ず変更してくださいね。2FAも設定したらなおのことよし。）

[https://my.contabo.com/account/login](https://my.contabo.com/account/login)

１通目

![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/a34225e9-c405-4d12-a4fa-42c243bdb7b8.jpeg)

## VNCの無効化

ログインが完了したらVNCを無効化する。

![6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/b72c82a3-00cb-8f47-537c-af0ce5f12fa4.jpeg)

続き

![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/745408ed-88ee-3b8c-f41d-2157132b1271.jpeg)

続き

![8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/94315692-7a1e-8acf-0357-811e5d27d8c6.jpeg)


これでVNCの無効化が完了しました。

## VPSにログインする。

次に２通目のメールに記載されているIPアドレス、ユーザ名（root）、契約時に決めたパスワードでVPSにアクセスしてみましょう。

![9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/bd600825-61f5-7d9c-b210-7592bfe0efa3.jpeg)

## **お好きなターミナルを起動する。**

おすすめは[Windows Terminal](https://apps.microsoft.com/detail/9N0DX20HK701?hl=ja-jp&gl=JP#activetab=pivot:overviewtab)です。（Windowsの感覚でコピペができる。）

#### **1.以下をターミナルに入力（VPSのアドレスに書き換えてください。）**

```bash
ssh root@VPSのIPアドレス
```

#### **2.パスワードを聞かれるので入力（パスは入力されないので、文字が出なくてもあせらない。）**

```bash
root@VPSのIPアドレス's password:
```

おめでとうございます。

これでVPSにログインすることができました。

## SSHでrootにログインできないようにする。

最低限のセキュリティを担保するためにsshでrootにログインできないようにしようと思います。

※本来であれば、この作業の後に公開鍵認証に変更する、sshのポートをウェルノウポートの２２から別のポートに変更する等いろいろ対策を講じることができますが、この記事は初めてテストノードを構築してみようという方（Linux？何それ？）を対象としていますので、ここらでセキュリティ対策は妥協しようと考えます。

#### **3.一般ユーザの作成（ユーザ名を「Taiko」とします。）**

```bash
sudo useradd -m -s /usr/bin/bash taiko
```

#### **4.一般ユーザのパスワードの設定（rootのパスを使いまわさない。sudoグループに追加するので強度高めのパスワードがおすすめ。）**

```bash
sudo passwd taiko   # パスワードを変更する
```

#### **5.パスワード入力画面が出るので入力**

```bash
New password:           　 #新しいパスワードの設定 ※表示されません
Retype new password:     　#再入力
```

#### **6.以下の表示が出ればＯＫ**

```bash
passwd: password updated successfully
```

#### **7.sudoグループにユーザ名を追加**

```bash
sudo adduser taiko sudo
```

#### **8.ユーザ名が追加されているか確認**

```bash
cat /etc/group | grep sudo
```

#### **9.以下のようにユーザ名が追加されていればＯＫ**

```bash
sudo:x:27:taiko
```

#### **10.いったんVPSからログアウト**

```bash
exit
```

#### **11.再度VPSにログイン**

```bash
ssh taiko@VPSのIPアドレス 　　#一般ユーザでSSH接続する。
```

#### **12.設定変更のためrootになる（パスを聞かれるので、VPSを契約したときに決めたパスワードを入力）**

```bash
su -
```

#### **13.ssh接続の設定ファイルをバックアップ**

```bash
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
```

#### **14.ssh接続の設定ファイルの変更**

```bash
vi /etc/ssh/sshd_config
```

#### **15.文字がいっぱい出てくるので以下の文を探す。**

```bash
PermitRootLogin yes
```

#### **16.上記の文を見つけたら、キーボードの「i」を押して入力モードになる。そして「yes」→「no」に変更する。**

```bash
PermitRootLogin no
```

変更が終わったら「esc」キーを押して「:wq」と入力すれば上書き保存できます。

#### **17./etc/ssh/sshd_configの構文をチェック**

```bash
sshd -t    #これでエラーを吐かなければＯＫ
```

#### **18.SSH接続の設定を反映させる。**

```bash
systemctl restart sshd.service
```

#### **19.ログアウト**

```bash
exit
```

**1.** に戻り、ルートでのログインを試してみる。これでログインできなければ成功

以降の作業は **11.** のとおりログインして実行する。

# **必要なツールのインストール等**

- **Dockerのインストール**
- **Gitのインストール**
- **テストネット用ウォレットアドレスの取得**
~~- **SepoliaのETH（ガス代）取得**~~
~~- **Sepoliaのエンドポイント取得**~~
~~- **TTKOjの取得**~~
~~- **TTKOjをデポジット**~~

## **Dockerのインストール**

以下説明を簡略化します。ひたすらコピペしてください。

（引用元：[https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ja](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ja)）

```bash
sudo apt update
```

```bash
sudo apt install apt-transport-https ca-certificates curl software-properties-common
```

```bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```

```bash
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
```

```bash
sudo apt update
```

```bash
apt-cache policy docker-ce
```

```bash
sudo apt install docker-ce
```

```bash
sudo systemctl status docker
```

これでDockerがインストールできました。

次にsudoなしでコマンドを実行するために一工夫しましょう。

今ログインしている一般ユーザをdockerグループに所属させる。（ユーザは「taiko」とします。）

```bash
sudo usermod -aG docker taiko
```

一度rootに入る（パスワードはVPS契約時に設定したパスワード）

```bash
su -
```

Dockerグループに追加されているか確認

```bash
id -nG
```

一般ユーザが表示されればＯＫ

## **Docker Compose CLI プラグインのインストール**

```bash
sudo apt-get update
```

```bash
sudo apt-get install docker-compose-plugin
```

```bash
docker compose version
```

バージョンが表示されればＯＫ

## **Gitのインストール**

以下説明を簡略化します。ひたすらコピペしてください。（引用元：[https://github.com/git-guides/install-git/](https://github.com/git-guides/install-git/)）

```bash
sudo apt-get update
```

```bash
sudo apt-get install git-all
```

```bash
git version
```

バージョンが表示されればＯＫ

## **テストネット用ウォレットアドレスの取得**

メタマスク等で新しいアドレス（秘密鍵も使います）を取得してください。（さすがにこれができない人はここにこないと思います。）

※[Foundryup](https://book.getfoundry.sh/getting-started/installation#using-foundryup)をインストールすると以下のコマンドで新アドレスと秘密鍵を一発で取得できるので便利です。（今後テストネットいっぱい触りたい人はチャレンジしてみてください。）

```bash
cast wallet new
```

## **~~SepoliaのETH（ガス代）取得~~** 

メタマスクのネットワークをSepoliaに変更

※ネットワークにない場合は[こちら](https://chainlist.org/chain/11155111)から追加

[https://sepolia-faucet.pk910.de/](https://sepolia-faucet.pk910.de/)にアクセスして、さっき作ったアドレスを入力してETHをマイニングしてください。

5ETHくらいマイニングしたら心に余裕ができます。

テストネット用の捨て垢ETHアドレスを用意してアドレス入力→放置

## **~~Sepolia~~ Holeskyのエンドポイント取得**

[BlockPi](https://dashboard.blockpi.io/) でHoleskyのエンドポイントを作成してください。

~~[Alchemy](https://alchemy.com/?r=16fbda9f726a4392)にアクセスして、アカウントを作成してください。（課金する必要はありません。無料版で制限がかからずコンスタントにPropose/ Proveを成功させることができます。）~~

~~アカウント作成が終わったら、Apps→Create new appとすすむ。~~

![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/654f1f71-d3dc-e5cc-3a4c-00229cf38b14.jpeg)


~~続き（画像のように設定してください。）~~

![11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/f5aa7bae-e355-1f94-3f4d-ade29fa86f16.jpeg)


~~続き（Creatre appを押したら以下の画面になるので、API Keyを選択）~~

![12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/3ce21413-5dc9-a1b3-f29a-61bd35231561.jpeg)


~~続き（赤枠内のHTTPS、WebSocketのURLを控えておく。）~~

![13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/e7126eee-df56-baf8-8117-91d6afc5ad10.jpeg)

~~この２つは誰にも見られないようにしてください。~~

## **~~TTKOjの取得~~**

Sepoliaのガス代を取得したウォレットを準備して、TTKOjを入手してください。L1側に最低2.5TTKOjが必要です。（3TTKOjくらい用意しておけばいいでしょう。大体0.8ETHくらい。）

SepoliaETH→JolnirETH→JolnirTTKOj→SepoliaTTKOj

ブリッジ→スワップ→ブリッジとめんどくさいですが、SepoliaL1にTTKOjがないとProveできないので必ずやってください。

ブリッジとスワップのやり方については[公式ドキュメント](https://taiko.xyz/docs/guides/bridge-tokens)を参照してください。

やり方は大丈夫だよって人は以下から実行してください。

[ブリッジ](https://bridge.jolnir.taiko.xyz/)

[スワップ](https://swap-v3.jolnir.taiko.xyz/)

Sepolia→Jolnirはほぼ一瞬ですが、逆は３～４時間かかります。ノード構築前に終わらせておきましょう。

## **~~TTKOjのデポジット~~**

1.TaikoL1契約を支出者として承認する。

Sepoliaネットワークに2.5TTKOj以上あることを確認してから以下にアクセス

[https://sepolia.etherscan.io/address/0x75F94f04d2144cB6056CCd0CFF1771573d838974#writeProxyContract](https://sepolia.etherscan.io/address/0x75F94f04d2144cB6056CCd0CFF1771573d838974#writeProxyContract)

下図のように作業してください。

コントラクトアドレス：0x95fF8D3CE9dcB7455BEB7845143bEA84Fe5C4F6f

![15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/c5ddd934-bf0a-a237-52d7-59ccbabf6747.jpeg)


続き

![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/18e6dab5-a2f8-87e6-907c-501658e628dd.png)


続き

![17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/63433d01-4639-918d-bd58-ecb248afb7c6.jpeg)


2.TTKOjをデポジットする。

Sepoliaネットワークに2.5TTKOj以上あることを確認してから以下にアクセス

[https://taiko.xyz/docs/guides/enable-a-prover](https://taiko.xyz/docs/guides/enable-a-prover)

下図のように作業してください。

![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/1c624ba5-049f-7b0a-6fe4-60edf1c52b99.png)


これで事前作業はすべて終了です。

# Taikoノードの構築

以下ひたすらコピペしてください。

```bash
git clone https://github.com/taikoxyz/simple-taiko-node.git
```

```bash
cd simple-taiko-node
```

サンプルの.envファイルをコピー

```bash
cp .env.sample .env
```

## **必要な値を設定(A6対応)**

.envファイルをエディタで開く。（お好きなエディタを使ってください。ここではvimを使います。）

```bash
vim .env
```

もともと記載してあったものはすべて削除して、以下をコピペしてください。

そのあと、29、30、40、51、53行目のイコールの後ろに#で入れるものを記載してあるので、それを入力してください。

※キーボードの「i」を押すと入力モードになります。

```.env
############################### DEFAULT #####################################
# Chain ID
CHAIN_ID=167007

# Exposed ports
PORT_L2_EXECUTION_ENGINE_HTTP=8547
PORT_L2_EXECUTION_ENGINE_WS=8548
PORT_L2_EXECUTION_ENGINE_METRICS=6060
PORT_L2_EXECUTION_ENGINE_P2P=30306
PORT_PROVER_SERVER=9876
PORT_PROMETHEUS=9091
PORT_GRAFANA=3001

# Comma separated L2 execution engine bootnode URLs for P2P discovery bootstrap
BOOT_NODES=enode://2833d948c31b10a820ed76e652c49c5025ec5c01e8100b4f0b2b6d527c2bf5bdc093f0c8f8c1f63feebed96b00c0e1403d29a1a88a108ed8f3bbbe56fe9d583a@43.130.29.245:30303,enode://0c66c4f514f40247b96ff61ee6012d644cd75e30513b3b93526dec0c7668a8979bb06f8fe4e7f57e0de12a41d2844c6f3f8571f6c8009b9951b7de367270901f@43.153.11.70:30303,enode://c6d64b973649b62eaa261e6b02f27b0f5125518cb80d087dfa681d893cfc9336e1b3dc456e38ac0d8501d06e0cdebcb86b8f254d7305c62cb4c9b12a1e7e8aee@43.153.26.219:30303,enode://3a81fa59ea092344bfb7cb2ac2d8a4c32982eb072481ddb0f680efa150e282ac446a623ed3a3d90c4154408a3a0c77a9d0fd9f29f20bef7861081c294b715ec4@34.173.190.75:30303,enode://d863f9917f59202b46f3cacedfa8c1a3932e782940dbcc6da5692a183c678aef387bf360fbce8e3b4381923b83839ffbbe9762abe64818f762d03ecad6662a1c@34.30.123.17:30303,enode://c8f085360640c68e013a5a6ff6a1d03e5af57a2db599e862014b90439af4b09a3e28bfcc8bfe2082949a6a3f9bb1f5ec19526a4e25fb2e14b11d08a4a1e82eb4@35.224.11.87:30303

# Taiko protocol contract addresses
TAIKO_L1_ADDRESS=0x95fF8D3CE9dcB7455BEB7845143bEA84Fe5C4F6f
TAIKO_TOKEN_L1_ADDRESS=0x75F94f04d2144cB6056CCd0CFF1771573d838974
TAIKO_L2_ADDRESS=0x1000777700000000000000000000000000000001

# P2P
DISABLE_P2P_SYNC=false

############################### REQUIRED #####################################
# L1 Sepolia RPC endpoints (you will need an RPC provider such as Infura or Alchemy, or run a full Sepolia node yourself)
# If you are using a local Sepolia L1 node, you can refer to it as "http://host.docker.internal:8545" and "ws://host.docker.internal:8546", which refer to the default ports in the .env for an eth-docker L1 node.
# However, you may need to add this host to docker-compose.yml. If that does not work, you can try the private local ip address (e.g. http:/192.168.1.15:8545). You can find that with `ip addr show` or a similar command.
L1_ENDPOINT_HTTP=   #BlockPiで取得したHTTPSのURL
L1_ENDPOINT_WS=     #BlockPiで取得したWSSのURL

############################### OPTIONAL #####################################
# If you want to be a prover who generates and submits zero knowledge proofs of proposed L2 blocks, you need to change
# `ENABLE_PROVER` to true and set `L1_PROVER_PRIVATE_KEY`.
ENABLE_PROVER=true
# How many provers you want to run concurrently, note that each prover will cost ~8 cores / ~16 GB memory.
ZKEVM_CHAIN_INSTANCES_NUM=1
# A L1 account private key (with a balance of TTKOj deposited on TaikoL1) which will be used to sign the bond for proving the block.
# WARNING: only use a test account, pasting your private key in plain text here is not secure.
L1_PROVER_PRIVATE_KEY=              #テストネット用ウォレットの秘密鍵（0xは消して）
# Gas limit for proveBlock transactions (in gas)
PROVE_BLOCK_TX_GAS_LIMIT=
# Minimum accepted fee for accepting proving a block (in wei)
MIN_ACCEPTABLE_PROOF_FEE=1

# If you want to be a proposer who proposes L2 execution engine's transactions in mempool to Taiko L1 protocol
# contract (be a "mining L2 node"), you need to change `ENABLE_PROPOSER` to true, then fill `L1_PROPOSER_PRIVATE_KEY`
# and `L2_SUGGESTED_FEE_RECIPIENT`
ENABLE_PROPOSER=true
# A L1 account (with balance) private key who will send TaikoL1.proposeBlock transactions
L1_PROPOSER_PRIVATE_KEY=            #テストネット用ウォレットの秘密鍵（0xは消して）
# A L2 account address who will be the tx fee beneficiary of the L2 blocks that you proposed
L2_SUGGESTED_FEE_RECIPIENT=         #テストネット用ウォレットアドレス
# Gas limit for proposeBlock transactions (in gas)
PROPOSE_BLOCK_TX_GAS_LIMIT=
# Maximum gas tip used for proposeBlock transactions (in wei)
PROPOSE_BLOCK_TX_GAS_TIP_CAP=10000000000
# Fee sent to prover for the off-chain bond (in wei)
BLOCK_PROPOSAL_FEE=1
# Comma-delineated list (no spaces) of prover endpoints proposer should query when attempting to propose a block
# If you keep this default value you must also enable a prover by setting ENABLE_PROVER=true
PROVER_ENDPOINTS=http://taiko-a6-prover.zkpool.io:9876
# Whether to prove unassigned blocks or not (blocks that have expired their proof window
# without the original prover submitting a proof.)
PROVE_UNASSIGNED_BLOCKS=false

# Comma-delimited local tx pool addresses you want to prioritize, useful to set your proposer to only propose blocks with your prover's transactions
TXPOOL_LOCALS=

# Timeout when waiting for a propose or prove block transaction receipt to be seen, in seconds
WAIT_RECEIPT_TIMEOUT=360
```

↑をコピペしたら[esc」キーを押して「:wq」と入力して上書き保存



## **ノードを開始する。**

```bash
docker compose up -d
```

これでノードの構築は終了です。

## ノードの動作確認

http://"VPSのIPアドレス":3001/d/L2ExecutionEngine/l2-execution-engine-overview

↑にアクセスしてダッシュボードを確認してください。（もし聞かれたら、初期ユーザ：admin　初期パス：admin）

下図のようにブロック高が上がっていけば構築成功です。

![19.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/09a69184-35e9-f585-de7d-a2ed2890224f.jpeg)

# **Propose/Proveの確認**

simple-taiko-nodeのディレクトリで移動する。

```bash
cd simple-taiko-node
```

## **Proposeの確認**

```bash
docker compose logs -f taiko_client_proposer | egrep "Propose transactions succeeded"
```

成功していれば下図のようなログが出ます。

![20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/e5820bfe-bdc9-24e8-494f-907560e6ae30.jpeg)


ctrl+Cでキャンセルできます。

## ~~Proveの確認~~

```bash
docker compose logs -f taiko_client_prover_relayer | egrep "block proof was|proof submission error|Block proven"
```

成功していれば下図のようなログが出ます。

![21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/06396ee3-d5c5-2bd5-dc35-1055cf1495fc.jpeg)


ctrl+Cでキャンセルできます。

# ノードの終了

設定を変更したり等、ノード内で作業したときは再起動が必要となります。

## 一時停止

```bash
docker compose down
```

## 再度ノード開始

```bash
docker compose up -d
```

## 完全削除

```bash
docker compose down -v
```

```bash
rm -f .env
```

# 最後に

自分自身手探りの状態で構築に臨みましたが、なんとか構築することができました。

Taiko Alpha-5の情報がインターネット上にほとんどなかったため、構築したくてもできない人が結構いるだろうなと思い、コピペだけでできるようにこの記事を作ろうと考えました。私自身は非エンジニアなので、間違ってる部分も多々あるかと思います。もし間違いがあれば優しく指摘してやってくれると助かります。

久々すぎて読みずらい記事になったかもですが、活用していただければ幸いです。

ちょっと力尽きてしまった感があるので、よくXで見かけるやつ↓は、GitHubのリンクを貼っておくので、自力実装してみてください。

[https://github.com/dojonode/taiko-node-dashboard](https://github.com/dojonode/taiko-node-dashboard)

![22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698455/6a7a2d1f-3da6-e199-7f64-a3958b0fd773.jpeg)