Solana 測試網驗證者 - 快速入門
安裝與驗證者啟動
bash
curl -fsSL https://storage.slv.dev/slv/install | sh
slv validator init
slv validator deploycurl -fsSL https://storage.slv.dev/slv/install | sh
slv validator init
slv validator deploy部署 Solana 測試網 Firedancer 驗證者
🚀 前提條件
請準備一臺全新安裝了 Ubuntu 24.04 LTS 的伺服器。
🔑 關於金鑰處理
對於新的 SLV Firedancer 部署,出於安全考慮,unstaked-keypair.json 始終作為初始身份金鑰使用。
這是防止雙重投票等嚴重問題的最佳實踐。
✅ 部署後的身份設定
部署後,請務必使用以下命令設定授權身份金鑰:
bash
slv v set:identity -n testnet --pubkey <name>slv v set:identity -n testnet --pubkey <name>為測試網準備裸金屬伺服器
雖然可以在 VPS 或虛擬機器(VM)上執行 Solana 節點,但在實踐中實現最佳效能和穩定性具有挑戰性。Solana 官方推薦使用裸金屬伺服器,其效能遠高於虛擬化環境。
由於測試網環境的負載低於主網,我們已確認使用配備 16 核 Ryzen CPU 和 128GB DDR5 記憶體的伺服器可以穩定執行。使用此伺服器配置有助於降低運營成本,因此推薦使用。
執行
slv v init 命令時,系統會詢問您的裸金屬伺服器是否已準備就緒:bash
➜ slv v init
? Select Solana Network (testnet) › testnet
? 🛡️ Do you have a Solana Node Compatible Server? (no)
❯ yes
no➜ slv v init
? Select Solana Network (testnet) › testnet
? 🛡️ Do you have a Solana Node Compatible Server? (no)
❯ yes
no本教程假設您選擇
yes。如果您尚未準備裸金屬伺服器,請參閱裸金屬伺服器設定指南完成設定。
輸入伺服器預設使用者名稱
大多數情況下,預設使用者名稱為
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生成或設定 Solana 驗證者身份金鑰
您可以生成新的身份金鑰或設定現有的身份金鑰。
此示例展示如何使用名稱 "epics-test" 設定現有身份金鑰。
bash
? Do you want to create a new identity key now? (Y/n) › No
? Please Enter Your Identity Public Key › TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp
? Enter Inventory Name (TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp) › epics-test
⚠️ Please place your identity key in
~/.slv/keys/TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp.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 › TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp
? Enter Inventory Name (TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp) › epics-test
⚠️ Please place your identity key in
~/.slv/keys/TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp.json
.
.
✔︎ Success
✔ Inventory updated to ~/.slv/inventory.yml
✔ Successfully created solv user on x.x.x.x請將您的身份金鑰放置在
~/.slv/keys/<your-pubkey>.json。然後,SLV 將使用密碼建立 solv 使用者。自動區域檢測
接下來,系統將從您配置的節點向每個區塊引擎傳送 ping,以自動檢測最近的區域。透過測量實際 ping 值,您可以選擇最佳區域。
bash
📍 Measuring latencies from x.x.x.x to testnet regions...
Pinging Dallas (dallas.testnet.block-engine.jito.wtf)...
Pinging New York (ny.testnet.block-engine.jito.wtf)...
✅ New York: 74.341 ms
✅ Dallas: 114.722 ms
🎯 Nearest region: 🇺🇸 New York
Latency: 74.341 ms
Block Engine: https://ny.testnet.block-engine.jito.wtf
Shred Receiver: 64.130.35.224:1002
Relayer: http://ny.testnet.relayer.jito.wtf:8100
NTP Server: ntp.dallas.jito.wtf📍 Measuring latencies from x.x.x.x to testnet regions...
Pinging Dallas (dallas.testnet.block-engine.jito.wtf)...
Pinging New York (ny.testnet.block-engine.jito.wtf)...
✅ New York: 74.341 ms
✅ Dallas: 114.722 ms
🎯 Nearest region: 🇺🇸 New York
Latency: 74.341 ms
Block Engine: https://ny.testnet.block-engine.jito.wtf
Shred Receiver: 64.130.35.224:1002
Relayer: http://ny.testnet.relayer.jito.wtf:8100
NTP Server: ntp.dallas.jito.wtf生成或設定 Solana 驗證者投票賬戶金鑰
您可以生成新的投票賬戶金鑰或設定現有的投票賬戶金鑰。
此示例展示如何設定現有的投票賬戶金鑰。
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.testnet.validators.yml。部署驗證者
確認配置後,部署將開始。
bash
slv v deploy -n testnetslv v deploy -n testnet首先會顯示配置確認資訊。
選擇 Yes 繼續。
bash
Your Testnet Validators Settings:
┌────────────────┬──────────────────────────────────────────────┐
│ Identity Key │ TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp │
├────────────────┼──────────────────────────────────────────────┤
│ Vote Key │ 6XdQ6szHJjm1t3XbgahSS6WVEhsrs5fniZbLgfkN1QWn │
├────────────────┼──────────────────────────────────────────────┤
│ Authority Key │ authAccount │
├────────────────┼──────────────────────────────────────────────┤
│ IP │ x.x.x.x. │
├────────────────┼──────────────────────────────────────────────┤
│ Validator Type │ jito │
├────────────────┼──────────────────────────────────────────────┤
│ Version │ 3.0.7-jito │
└────────────────┴──────────────────────────────────────────────┘
? Do you want to continue? (Y/n) › YesYour Testnet Validators Settings:
┌────────────────┬──────────────────────────────────────────────┐
│ Identity Key │ TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp │
├────────────────┼──────────────────────────────────────────────┤
│ Vote Key │ 6XdQ6szHJjm1t3XbgahSS6WVEhsrs5fniZbLgfkN1QWn │
├────────────────┼──────────────────────────────────────────────┤
│ Authority Key │ authAccount │
├────────────────┼──────────────────────────────────────────────┤
│ IP │ x.x.x.x. │
├────────────────┼──────────────────────────────────────────────┤
│ Validator Type │ jito │
├────────────────┼──────────────────────────────────────────────┤
│ Version │ 3.0.7-jito │
└────────────────┴──────────────────────────────────────────────┘
? Do you want to continue? (Y/n) › Yes完成!您的 Solana 驗證者現已部署。與 Solana 網路同步需要一些時間。
除錯與監控
部署後,您可以在 Solana RPC 節點內進行除錯和監控。
您可以使用以下命令檢查 Solana RPC 節點的狀態:
bash
$ solv m$ solv msolv 是 agave-validator -l /mnt/ledger 的別名。
此設定在 RPC 節點部署期間新增到 ~/.profile 中。更改身份金鑰
部署後,您需要將未質押金鑰更改為授權身份金鑰。
bash
slv v set:identity -n testnet --pubkey epics-testslv v set:identity -n testnet --pubkey epics-test此命令將從您本地計算機上的以下位置設定身份金鑰:
~/.slv/keys/<name>.json重啟 Firedancer
如果驗證者出現任何問題,您可以使用以下命令重啟 Firedancer。
--rm 選項將停止驗證者,刪除賬本和快照目錄,使用快照查詢器下載快照,然後啟動驗證者。bash
slv v restart -n testnet --pubkey <name> --rmslv v restart -n testnet --pubkey <name> --rmSLV 驗證者命令
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