Solana Mainnet Validator - เริ่มต้นใช้งานอย่างรวดเร็ว
บทนำ
ในการ deploy validator บน Solana mainnet นั้น คุณจะใช้เครื่องมือ command-line ของ SLV
คู่มือเริ่มต้นใช้งานฉบับนี้อธิบายวิธีเปิดใช้งานและ deploy validator สำรองแบบ hot spare บน mainnet
เซิร์ฟเวอร์ของคุณต้องติดตั้ง Ubuntu 24.04 LTS แบบ clean install ไว้แล้ว
การเตรียมเซิร์ฟเวอร์ Bare Metal
แม้จะสามารถรันโหนด Solana บน VPS หรือเครื่องเสมือน (VM) ได้ แต่การทำให้ได้ประสิทธิภาพสูงสุดและการทำงานที่เสถียรนั้นทำได้ยาก Solana แนะนำอย่างเป็นทางการให้ใช้เซิร์ฟเวอร์ bare metal
สำหรับ mainnet validator ควรจัดเตรียมสเปกให้ทำงานได้อย่างเสถียรแม้ในช่วงที่เครือข่ายหนาแน่น
ด้านล่างนี้คือแนวทางที่อ้างอิงจากเอกสารทางการของ Solana / Agave / Firedancer
ด้านล่างนี้คือแนวทางที่อ้างอิงจากเอกสารทางการของ Solana / Agave / Firedancer
Agave Validator (ข้อกำหนดและคำแนะนำอย่างเป็นทางการ)
ข้อกำหนดด้าน SOL
- ที่ขอบเขตของแต่ละ epoch Vote Account ต้องมียอดคงเหลืออย่างน้อยเท่ากับยอดขั้นต่ำของ rent-exempt บวกกับ Validator Admission Ticket หนึ่งใบ (0.8 SOL ที่การตั้งค่าเวลา slot 200 ms)
- Validator Admission Ticket จะถูกหักจาก Vote Account ใน block แรกของแต่ละ epoch
- ตรวจสอบยอดขั้นต่ำของ rent-exempt ด้วย
solana rent 3762(3762 คือขนาดของ Vote Account เป็น byte) - Identity Key ไม่ต้องจ่ายค่าธรรมเนียมต่อการโหวตอีกต่อไป — ใน Alpenglow การโหวตจะไม่ถูกส่งเป็นธุรกรรมอีกแล้ว
ข้อกำหนดด้านฮาร์ดแวร์ (แนวทาง)
| ส่วนประกอบ | Validator | RPC node (อ้างอิง) |
|---|---|---|
| CPU | 2.8GHz+ / AMD Gen3+ / Intel Ice Lake+ / SHA extensions / AVX2 | 16 คอร์ / 32 เธรด+ |
| RAM | 256GB+ | 512GB+ |
| ดิสก์ | NVMe Gen3 x4 ขึ้นไป / แนะนำให้แยก Accounts-Ledger-Snapshots | แนะนำความจุที่มากขึ้น |
| GPU | ไม่จำเป็น | ไม่จำเป็น |
หมายเหตุ:
ความเร็วสัญญาณนาฬิกา (clock speed) และ throughput ที่ได้จริงถือว่าสำคัญกว่าจำนวนคอร์
Firedancer (Frankendancer)
ปัจจุบัน Firedancer (Frankendancer) ยังพึ่งพา Agave อยู่
จึงถือว่าต้องมีอย่างน้อยการกำหนดค่าตามที่ Agave แนะนำหรือสูงกว่า
จึงถือว่าต้องมีอย่างน้อยการกำหนดค่าตามที่ Agave แนะนำหรือสูงกว่า
ขั้นต่ำ
- CPU 24 คอร์ @ >2.8GHz
- RAM 256GB
- NVMe 2TB (TBW สูง)
แนะนำ
- CPU 32 คอร์ @ >3GHz (รองรับ AVX512)
- RAM 512GB (ECC)
- แยก Accounts / Ledger
- แบนด์วิดท์เครือข่าย 1Gbps ขึ้นไป
สำหรับการตั้งค่าที่สมดุลระหว่างต้นทุนและประสิทธิภาพนั้น Agave ที่ใช้ CPU 24 คอร์และ RAM 384GB เป็นแนวทางที่ใช้ได้จริง
เมื่อคุณรันคำสั่ง
slv v init ระบบจะถามว่าเซิร์ฟเวอร์ bare metal ของคุณตั้งค่าไว้แล้วหรือไม่:bash
➜ slv v init
? Select Solana Network (testnet) › mainnet
? 🛡️ Do you have a Solana Node Compatible Server? (no)
❯ yes
no➜ slv v init
? Select Solana Network (testnet) › mainnet
? 🛡️ Do you have a Solana Node Compatible Server? (no)
❯ yes
noบทแนะนำนี้สมมติว่าคุณเลือก
yesหากคุณยังไม่ได้เตรียมเซิร์ฟเวอร์ bare metal โปรดดู คู่มือการตั้งค่าเซิร์ฟเวอร์ Bare Metal
นอกจากนี้ แหล่งข้อมูลต่อไปนี้อาจเป็นประโยชน์กับคุณ:
Deploy Firedancer Jito validator บน Solana mainnet
การ deploy ใหม่ด้วย SLV จะใช้
unstaked-keypair.json เป็นคีย์ identity เสมอ
นี่คือแนวปฏิบัติที่ดีที่สุดเพื่อป้องกันการโหวตซ้ำ (double voting) และปัญหาอื่น ๆดังนั้น หลัง deploy แล้ว โปรดใช้
slv v set:identity เพื่อตั้งค่าคีย์ identity ที่ได้รับอนุญาตในการดูแล validator บน mainnet ส่วนใหญ่ คุณจะใช้
slv v switch เพื่อเปลี่ยนคีย์ identity
สำหรับการย้ายแบบไม่มี downtime โปรดดู คู่มือนี้เลือกเครือข่าย Solana
เลือกเครือข่าย Solana ที่คุณต้องการ deploy
bash
slv v init
? Select Solana Network (mainnet)
testnet
❯ mainnetslv v init
? Select Solana Network (mainnet)
testnet
❯ mainnetป้อนชื่อผู้ใช้เริ่มต้นของเซิร์ฟเวอร์
โดยส่วนใหญ่ ชื่อผู้ใช้เริ่มต้นคือ
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_rsabash
? 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ตั้งค่าอัตรา commission
ตั้งค่าอัตรา commission สำหรับ validator ของคุณ
※ 1000 เท่ากับ 10%
bash
? Enter Commission BPS (Max 1000 = 10%) (1000)? Enter Commission BPS (Max 1000 = 10%) (1000)สร้างหรือตั้งค่าคีย์ identity ของ Solana validator
คุณสามารถสร้างคีย์ identity ใหม่ หรือตั้งค่าคีย์ identity ที่มีอยู่แล้วได้
ตัวอย่างนี้แสดงวิธีตั้งค่าคีย์ identity ที่มีอยู่แล้วโดยใช้ชื่อ "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โปรดวางคีย์ identity ของคุณไว้ที่
~/.slv/keys/<your-pubkey>.jsonตรวจหาภูมิภาคโดยอัตโนมัติ
ถัดไป ระบบจะ ping block engine แต่ละตัวจากโหนดที่คุณตั้งค่าไว้ เพื่อตรวจหาภูมิภาคที่ใกล้ที่สุดโดยอัตโนมัติ การวัดค่า 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.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>ข้อมูลโหนด validator จะถูกบันทึกไว้ที่
~/.slv/inventory.mainnet.validators.ymlbash
✔︎ 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-subDeploy validator
เมื่อคุณยืนยันการกำหนดค่าแล้ว การ deploy จะเริ่มขึ้น
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
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
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 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 mainnet --pubkey epics-subslv v set:identity -n mainnet --pubkey epics-subคำสั่งนี้จะเปลี่ยนคีย์ identity เป็นคีย์ identity ที่ได้รับอนุญาต
※ สำหรับการย้ายแบบไม่มี downtime โปรดดู คู่มือ นี้
คำสั่ง 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