Solana メインネット バリデータ - クイックスタート
はじめに
Solana メインネット バリデータのデプロイには、SLV コマンドラインツールを使用します。
このクイックスタートではメインネットバリデーターのスペアを起動し、デプロイする方法を説明します。
サーバーには Ubuntu 24.04 LTS がクリーンインストールされている必要があります。
ベアメタルサーバーの準備
SolanaのノードをVPSや仮想マシン(VM)で立ち上げることも可能ですが、十分なパフォーマンスや安定稼働を期待するのは難しいです。
Solana公式でもベアメタルサーバーの利用を推奨しています。
メインネットバリデータは、混雑時でも安定稼働できる構成が前提です。
以下は Solana / Agave / Firedancer の公式ドキュメントを元に整理した目安です。
以下は Solana / Agave / Firedancer の公式ドキュメントを元に整理した目安です。
Agave Validator(公式要件・推奨)
SOL 要件
- 厳密な最低 SOL 要件はありません
- Vote Account に rent-exempt として 0.02685864 SOL が必要です
- 投票トランザクションにより 最大 ~1.1 SOL / 日 のコストが発生します
ハードウェア要件(目安)
| Component | Validator | RPC Node(参考) |
|---|---|---|
| CPU | 2.8GHz 以上 / AMD Gen3+ / Intel Ice Lake+ / SHA extensions / AVX2 | 16 cores / 32 threads+ |
| RAM | 256GB+ | 512GB+ |
| Disk | NVMe Gen3 x4 以上 / Accounts・Ledger・Snapshots 分離推奨 | より大容量推奨 |
| GPU | 不要 | 不要 |
Note:
コア数よりもクロックと実効スループットが重要とされています。
Firedancer(Frankendancer)
Firedancer(Frankendancer)は現在 Agave に依存するため、
少なくとも Agave の推奨構成以上が前提となります。
少なくとも Agave の推奨構成以上が前提となります。
Minimum
- 24-core CPU @ >2.8GHz
- 256GB RAM
- 2TB NVMe(High TBW)
Recommended
- 32-core CPU @ >3GHz(AVX512 対応)
- 512GB RAM(ECC)
- Accounts / Ledger 分離
- 1Gbps 以上のネットワーク帯域
コストパフォーマンスの観点では、Agave を選択して 24コアCPU、384GB RAMの構成がバランスの良い目安です。
slv v init コマンドを実行すると、ベアメタルサーバーがセットアップ済みかどうかを確認する質問が表示されます。bash
➜ slv v init
? Select Solana Network (mainnet) › mainnet
? 🛡️ Do you have a Solana Node Compatible Server? (no)
❯ yes
no➜ slv v init
? Select Solana Network (mainnet) › mainnet
? 🛡️ Do you have a Solana Node Compatible Server? (no)
❯ yes
noこのチュートリアルでは
yes を選択した場合を前提として進めます。まだベアメタルサーバーを準備していない場合は、こちらのベアメタルサーバー導入ガイドを参照してセットアップしてください。
また、以下の記事もご参考ください。
Solana メインネット Firedancer Jito バリデーターのデプロイ
新しい SLV デプロイでは、常に unstaked-keypair.json がアイデンティティキーとして使用されます。
これは二重投票などを防ぐためのベストプラクティスです。
そのため、デプロイ後に
slv v set:identity を使用して認証済みのアイデンティティキーをセットしてください。メインネットバリデーター運用の場合、ほとんどの場合
slv v switch を使用してアイデンティティキーを変更します。
ノーダウンタイムマイグレーションについては、こちらのガイドを参照してください。Solana ネットワークを選択
デプロイしたい Solana ネットワークを選択します。
bash
slv v init
? Select Solana Network (mainnet)
testnet
❯ mainnetslv v init
? Select Solana Network (mainnet)
testnet
❯ mainnetデフォルトのユーザー名を入力
通常、デフォルトのユーザー名は
ubuntu または root であることが多いです。bash
? What's the user for the server? (ubuntu) › ubuntu? What's the user for the server? (ubuntu) › ubuntuサーバーの IP アドレスを入力
サーバーの IP アドレスを入力します。
bash
? What's the IP address of the server? ›? What's the IP address of the server? ›SSH 用の RSA キーを設定
※ ご自身の RSA キーのパスを設定してください。デフォルトのパスは
~/.ssh/id_rsa です。bash
? What's the path to your RSA key? (~/.ssh/id_rsa) › ~/.ssh/id_rsa
🔍 Checking SSH connection...
✔︎ SSH connection succeeded? What's the path to your RSA key? (~/.ssh/id_rsa) › ~/.ssh/id_rsa
🔍 Checking SSH connection...
✔︎ SSH connection succeededその後、SLV がサーバーへの接続をチェックします。接続が成功すると、次のステップへ進みます。
Solana バリデータタイプの選択
Solana バリデータのタイプを選択します。
bash
? Select Validator Type (firedancer-jito)
agave
jito
jito-bam
firedancer-agave
❯ firedancer-jito? Select Validator Type (firedancer-jito)
agave
jito
jito-bam
firedancer-agave
❯ firedancer-jitoコミッションレートの設定
バリデータのコミッションレートを設定します。
※ 1000の場合は 10% になります。
bash
? Enter Commission BPS (Max 1000 = 10%) (1000)? Enter Commission BPS (Max 1000 = 10%) (1000)Solana バリデータのアイデンティティキーを生成または設定
新しいアイデンティティキーを生成するか、既存のアイデンティティキーを設定できます。
ここでは既存のアイデンティティキーを
epics-sub という名前で設定する例を示します。bash
? Do you want to create a new identity key now? (Y/n) › No
? Please Enter Your Identity Public Key › KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM
? Enter Inventory Name (KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM) › epics-sub
⚠️ Please place your identity key in
~/.slv/keys/KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM.json
.
.
✔︎ Success
✔ Inventory updated to ~/.slv/inventory.yml
✔ Successfully created solv user on x.x.x.x? Do you want to create a new identity key now? (Y/n) › No
? Please Enter Your Identity Public Key › KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM
? Enter Inventory Name (KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM) › epics-sub
⚠️ Please place your identity key in
~/.slv/keys/KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM.json
.
.
✔︎ Success
✔ Inventory updated to ~/.slv/inventory.yml
✔ Successfully created solv user on x.x.x.xアイデンティティキーを
~/.slv/keys/<your-pubkey>.json に配置してください。最寄りのリージョンを自動検出
次に、設定するノードから各ブロックエンジンに対して Ping を実行し、最も近いリージョンを自動的に検出します。 Ping で実測値を計測することで、最適なリージョンを選択できます。
bash
✔ Inventory updated to ~/.slv/inventory.mainnet.validators.yml
📍 Measuring latencies from x.x.x.x to mainnet regions...
Pinging Amsterdam (amsterdam.mainnet.block-engine.jito.wtf)...
Pinging Dublin (dublin.mainnet.block-engine.jito.wtf)...
Pinging Frankfurt (frankfurt.mainnet.block-engine.jito.wtf)...
Pinging London (london.mainnet.block-engine.jito.wtf)...
Pinging New York (ny.mainnet.block-engine.jito.wtf)...
Pinging Salt Lake City (slc.mainnet.block-engine.jito.wtf)...
Pinging Singapore (singapore.mainnet.block-engine.jito.wtf)...
Pinging Tokyo (tokyo.mainnet.block-engine.jito.wtf)...
✅ London: 8.801 ms
✅ Dublin: 12.946 ms
✅ Frankfurt: 5.888 ms
✅ Amsterdam: 0.169 ms
✅ New York: 74.321 ms
✅ Salt Lake City: 115.577 ms
✅ Singapore: 154.200 ms
✅ Tokyo: 229.989 ms
🎯 Nearest region: 🇳🇱 Amsterdam
Latency: 0.169 ms
Block Engine: https://amsterdam.mainnet.block-engine.jito.wtf
Shred Receiver: 74.118.140.240:1002
Relayer: http://amsterdam.mainnet.relayer.jito.wtf:8100
NTP Server: ntp.amsterdam.jito.wtf✔ Inventory updated to ~/.slv/inventory.mainnet.validators.yml
📍 Measuring latencies from x.x.x.x to mainnet regions...
Pinging Amsterdam (amsterdam.mainnet.block-engine.jito.wtf)...
Pinging Dublin (dublin.mainnet.block-engine.jito.wtf)...
Pinging Frankfurt (frankfurt.mainnet.block-engine.jito.wtf)...
Pinging London (london.mainnet.block-engine.jito.wtf)...
Pinging New York (ny.mainnet.block-engine.jito.wtf)...
Pinging Salt Lake City (slc.mainnet.block-engine.jito.wtf)...
Pinging Singapore (singapore.mainnet.block-engine.jito.wtf)...
Pinging Tokyo (tokyo.mainnet.block-engine.jito.wtf)...
✅ London: 8.801 ms
✅ Dublin: 12.946 ms
✅ Frankfurt: 5.888 ms
✅ Amsterdam: 0.169 ms
✅ New York: 74.321 ms
✅ Salt Lake City: 115.577 ms
✅ Singapore: 154.200 ms
✅ Tokyo: 229.989 ms
🎯 Nearest region: 🇳🇱 Amsterdam
Latency: 0.169 ms
Block Engine: https://amsterdam.mainnet.block-engine.jito.wtf
Shred Receiver: 74.118.140.240:1002
Relayer: http://amsterdam.mainnet.relayer.jito.wtf:8100
NTP Server: ntp.amsterdam.jito.wtfSolana バリデータの投票アカウントキーを生成または設定
新しい投票アカウントキーを生成するか、既存の投票アカウントキーを設定できます。
ここでは既存の投票アカウントキーを設定する例を示します。
bash
? Do you want to create a new vote account key now? (Y/n) › No
? Please Enter Your Vote Account Public Key > <your-vote-account>? Do you want to create a new vote account key now? (Y/n) › No
? Please Enter Your Vote Account Public Key > <your-vote-account>そしてバリデーターノードの情報は
~/.slv/inventory.mainnet.validators.yml に保存されます。bash
✔︎ Success
✔ Inventory updated to ~/.slv/inventory.mainnet.validators.yml
✔ Successfully created solv user on epics-sub
✔︎ Validator Mainnet Config Saved To ~/.slv/inventory.mainnet.validators.yml
Now you can deploy with:
$ slv v deploy -n mainnet -p epics-sub✔︎ Success
✔ Inventory updated to ~/.slv/inventory.mainnet.validators.yml
✔ Successfully created solv user on epics-sub
✔︎ Validator Mainnet Config Saved To ~/.slv/inventory.mainnet.validators.yml
Now you can deploy with:
$ slv v deploy -n mainnet -p epics-subバリデータのデプロイ
設定を確認したら、デプロイを開始します。
bash
slv v deploy -n mainnet -p epics-subslv v deploy -n mainnet -p epics-subbash
Your Mainnet Validators Settings:
┌────────────────┬──────────────────────────────────────────────┐
│ Identity Key │ KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM │
├────────────────┼──────────────────────────────────────────────┤
│ Vote Key │ EpicsoqLdDP8qRn3wQRKTSKAXbjK9dUgFfNPRQS77MQD │
├────────────────┼──────────────────────────────────────────────┤
│ Authority Key │ authAccount │
├────────────────┼──────────────────────────────────────────────┤
│ IP │ x.x.x.x │
├────────────────┼──────────────────────────────────────────────┤
│ Validator Type │ firedancer-jito │
├────────────────┼──────────────────────────────────────────────┤
│ Version │ 0.712.30006 │
└────────────────┴──────────────────────────────────────────────┘
? Do you want to continue? (Y/n) › Yes
.
.
.
Successfully Deployed RPC on mainnet
⚡️⚡️⚡️ Enhanced Solana RPC Connection API Key ⚡️⚡️⚡️
We're excited to offer a free API key exclusively for the Validators DAO community 🎉
It's our way of supporting the community and empowering you with fast, reliable connections.
To get your Free API key, simply join us through the link below:
Validators DAO: `https://discord.gg/X4BgkBHavp`
Unlock fast connections and elevate your experience with your very own API key 🚀
You can monitor your Node with the following steps:
Log in to your server with SSH:
ssh [email protected]
Then, run the following command to monitor your node:
$ solv mYour Mainnet Validators Settings:
┌────────────────┬──────────────────────────────────────────────┐
│ Identity Key │ KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM │
├────────────────┼──────────────────────────────────────────────┤
│ Vote Key │ EpicsoqLdDP8qRn3wQRKTSKAXbjK9dUgFfNPRQS77MQD │
├────────────────┼──────────────────────────────────────────────┤
│ Authority Key │ authAccount │
├────────────────┼──────────────────────────────────────────────┤
│ IP │ x.x.x.x │
├────────────────┼──────────────────────────────────────────────┤
│ Validator Type │ firedancer-jito │
├────────────────┼──────────────────────────────────────────────┤
│ Version │ 0.712.30006 │
└────────────────┴──────────────────────────────────────────────┘
? Do you want to continue? (Y/n) › Yes
.
.
.
Successfully Deployed RPC on mainnet
⚡️⚡️⚡️ Enhanced Solana RPC Connection API Key ⚡️⚡️⚡️
We're excited to offer a free API key exclusively for the Validators DAO community 🎉
It's our way of supporting the community and empowering you with fast, reliable connections.
To get your Free API key, simply join us through the link below:
Validators DAO: `https://discord.gg/X4BgkBHavp`
Unlock fast connections and elevate your experience with your very own API key 🚀
You can monitor your Node with the following steps:
Log in to your server with SSH:
ssh [email protected]
Then, run the following command to monitor your node:
$ solv m完了です!Solana バリデータがデプロイされました。Solana ネットワークとの同期には少し時間がかかります。
デバッグ・モニタリング
デプロイ後、Solana RPC ノード内でデバッグとモニタリングを行うことができます。
以下のコマンドを使用して、Solana RPC ノードの状態を確認できます。
bash
$ solv m$ solv msolv は agave-validator -l /mnt/ledger のエイリアスです。
RPCノードデプロイ時に この設定が ~/.profile に追加されています。アイデンティティキーの変更
デプロイ後、アンステーク済みのキーを認証済みのアイデンティティキーに変更する必要があります。
bash
slv v set:identity -n mainnet --pubkey epics-subslv v set:identity -n mainnet --pubkey epics-subこのコマンドにより、アイデンティティキーが認証済みのキーに変更されます。
※ノーダウンタイムマイグレーションを行う場合は、こちらのガイドを参照してください。
SLV Validator コマンド
bash
slv validator --help
Usage: slv validator
Version: 0.9.700
Description:
🛠️ Manage Solana Validator Nodes 🛠️
Options:
-h, --help - Show this help.
Commands:
init - 🚀 Initialize a new validator configuration
deploy - 📦 Deploy Validators
list - 📋 List validators
set:identity - 🪪 Set Validator Identity
set:unstaked - 📴 Set Validator Identity to Unstaked Key
setup:firedancer - 🔥 Setup/Update Firedancer Validator
update:firedancer - 🔄 Update Firedancer Version
build:solana-cli - 🛠️ Build Solana CLI from Source
install:solana - ➡️ Install Solana CLI Binary
update:script - ⚙️ Update Validator Startup Config
update:jinja - 🧩 Update Jinja Template
start - 🟢 Start Validator
stop - 🔴 Stop Validator
restart - ♻️ Restart Validator
cleanup - 🧹 Cleanup Validator - Remove Ledger/Snapshot Unnecessary Files
get:snapshot - 💾 Download Snapshot with aria2c
gen:vote-account - 🗳️ Generate Vote Account
switch - 🔁 Switch Validator Identity - No DownTime Migrationslv validator --help
Usage: slv validator
Version: 0.9.700
Description:
🛠️ Manage Solana Validator Nodes 🛠️
Options:
-h, --help - Show this help.
Commands:
init - 🚀 Initialize a new validator configuration
deploy - 📦 Deploy Validators
list - 📋 List validators
set:identity - 🪪 Set Validator Identity
set:unstaked - 📴 Set Validator Identity to Unstaked Key
setup:firedancer - 🔥 Setup/Update Firedancer Validator
update:firedancer - 🔄 Update Firedancer Version
build:solana-cli - 🛠️ Build Solana CLI from Source
install:solana - ➡️ Install Solana CLI Binary
update:script - ⚙️ Update Validator Startup Config
update:jinja - 🧩 Update Jinja Template
start - 🟢 Start Validator
stop - 🔴 Stop Validator
restart - ♻️ Restart Validator
cleanup - 🧹 Cleanup Validator - Remove Ledger/Snapshot Unnecessary Files
get:snapshot - 💾 Download Snapshot with aria2c
gen:vote-account - 🗳️ Generate Vote Account
switch - 🔁 Switch Validator Identity - No DownTime Migration