Solana Testnet Validator - เริ่มต้นใช้งานอย่างรวดเร็ว
การติดตั้งและการเปิดใช้งาน validator
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 deployDeploy Firedancer validator บน Solana testnet
🚀 สิ่งที่ต้องเตรียม
โปรดเตรียมเซิร์ฟเวอร์ที่ติดตั้ง Ubuntu 24.04 LTS แบบ clean install ไว้
🔑 เกี่ยวกับการจัดการคีย์
สำหรับการ deploy Firedancer ใหม่ด้วย SLV ระบบจะใช้ unstaked-keypair.json เป็นคีย์ identity ในช่วงแรกเสมอเพื่อความปลอดภัย
นี่คือแนวปฏิบัติที่ดีที่สุดเพื่อป้องกันปัญหาร้ายแรง เช่น การโหวตซ้ำ (double voting)
✅ การตั้งค่า identity หลัง deploy
หลัง deploy แล้ว อย่าลืมตั้งค่าคีย์ identity ที่ได้รับอนุญาตด้วยคำสั่งต่อไปนี้:
bash
slv v set:identity -n testnet --pubkey <name>slv v set:identity -n testnet --pubkey <name>การเตรียมเซิร์ฟเวอร์ Bare Metal สำหรับ Testnet
แม้จะสามารถรันโหนด Solana บน VPS หรือเครื่องเสมือน (VM) ได้ แต่ในทางปฏิบัติการทำให้ได้ประสิทธิภาพและความเสถียรสูงสุดนั้นทำได้ยาก Solana แนะนำอย่างเป็นทางการให้ใช้เซิร์ฟเวอร์ bare metal ซึ่งให้ประสิทธิภาพสูงกว่าสภาพแวดล้อมแบบเสมือนมาก
เนื่องจากสภาพแวดล้อม testnet มีโหลดต่ำกว่า mainnet เราได้ยืนยันแล้วว่าเซิร์ฟเวอร์ที่ใช้ CPU Ryzen 16 คอร์และ RAM DDR5 128GB ทำงานได้อย่างเสถียร การใช้การกำหนดค่าเซิร์ฟเวอร์นี้ช่วยลดต้นทุนการดำเนินงาน จึงขอแนะนำให้ใช้
เมื่อคุณรันคำสั่ง
slv v init ระบบจะถามว่าเซิร์ฟเวอร์ bare metal ของคุณตั้งค่าไว้แล้วหรือไม่: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หากคุณยังไม่ได้เตรียมเซิร์ฟเวอร์ bare metal โปรดดู คู่มือการตั้งค่าเซิร์ฟเวอร์ Bare Metal เพื่อตั้งค่าให้เสร็จสมบูรณ์
ป้อนชื่อผู้ใช้เริ่มต้นของเซิร์ฟเวอร์
โดยส่วนใหญ่ ชื่อผู้ใช้เริ่มต้นคือ
ubuntu หรือ rootbash
? 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? ›ตั้งค่าคีย์ RSA สำหรับ SSH
※ โปรดตั้งค่าพาธไปยังคีย์ 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 validator
เลือกประเภทของ Solana validator
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สร้างหรือตั้งค่าคีย์ identity ของ Solana validator
คุณสามารถสร้างคีย์ identity ใหม่ หรือตั้งค่าคีย์ identity ที่มีอยู่แล้วได้
ตัวอย่างนี้แสดงวิธีตั้งค่าคีย์ identity ที่มีอยู่แล้วโดยใช้ชื่อ "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โปรดวางคีย์ identity ของคุณไว้ที่
~/.slv/keys/<your-pubkey>.json จากนั้น SLV จะสร้างผู้ใช้ solv โดยใช้รหัสผ่านตรวจหาภูมิภาคโดยอัตโนมัติ
ถัดไป ระบบจะ ping block engine แต่ละตัวจากโหนดที่คุณตั้งค่าไว้ เพื่อตรวจหาภูมิภาคที่ใกล้ที่สุดโดยอัตโนมัติ การวัดค่า 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สร้างหรือตั้งค่าคีย์ vote account ของ Solana validator
คุณสามารถสร้างคีย์ vote account ใหม่ หรือตั้งค่าคีย์ vote account ที่มีอยู่แล้วได้
ตัวอย่างนี้แสดงวิธีตั้งค่าคีย์ vote account ที่มีอยู่แล้ว
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 แล้วDeploy validator
เมื่อคุณยืนยันการกำหนดค่าแล้ว การ deploy จะเริ่มขึ้น
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 validator ของคุณ deploy เรียบร้อยแล้ว โดยจะใช้เวลาสักระยะในการซิงก์กับเครือข่าย Solana
การดีบั๊กและติดตาม
หลัง deploy แล้ว คุณสามารถดีบั๊กและมอนิเตอร์ภายใน Solana RPC node ได้
คุณสามารถตรวจสอบสถานะของ Solana RPC node ได้ด้วยคำสั่งต่อไปนี้:
bash
$ solv m$ solv msolv เป็นนามแฝงสำหรับ agave-validator -l /mnt/ledger
การตั้งค่านี้จะถูกเพิ่มลงใน ~/.profile ระหว่างการ deploy RPC nodeเปลี่ยนคีย์ identity
หลัง deploy แล้ว คุณต้องเปลี่ยนจากคีย์ unstaked เป็นคีย์ identity ที่ได้รับอนุญาต
bash
slv v set:identity -n testnet --pubkey epics-testslv v set:identity -n testnet --pubkey epics-testคำสั่งนี้จะตั้งค่าคีย์ identity จากเครื่องคอมพิวเตอร์ของคุณ ซึ่งอยู่ที่:
~/.slv/keys/<name>.jsonรีสตาร์ต Firedancer
หากพบปัญหาใด ๆ กับ validator ก็สามารถรีสตาร์ต firedancer ได้ด้วยคำสั่งต่อไปนี้
ตัวเลือก
--rm จะหยุด validator, ลบไดเรกทอรี ledger และสแนปช็อต, ดาวน์โหลดสแนปช็อตโดยใช้ snapshot finder แล้วจึงเริ่ม validatorbash
slv v restart -n testnet --pubkey <name> --rmslv v restart -n testnet --pubkey <name> --rmคำสั่ง validator ของ SLV
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