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

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 การโหวตจะไม่ถูกส่งเป็นธุรกรรมอีกแล้ว
ข้อกำหนดด้านฮาร์ดแวร์ (แนวทาง)
ส่วนประกอบValidatorRPC node (อ้างอิง)
CPU2.8GHz+ / AMD Gen3+ / Intel Ice Lake+ / SHA extensions / AVX216 คอร์ / 32 เธรด+
RAM256GB+512GB+
ดิสก์NVMe Gen3 x4 ขึ้นไป / แนะนำให้แยก Accounts-Ledger-Snapshotsแนะนำความจุที่มากขึ้น
GPUไม่จำเป็นไม่จำเป็น
หมายเหตุ:
ความเร็วสัญญาณนาฬิกา (clock speed) และ throughput ที่ได้จริงถือว่าสำคัญกว่าจำนวนคอร์

Firedancer (Frankendancer)

ปัจจุบัน Firedancer (Frankendancer) ยังพึ่งพา 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
บทแนะนำนี้สมมติว่าคุณเลือก 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
❯ mainnet

ป้อนชื่อผู้ใช้เริ่มต้นของเซิร์ฟเวอร์

โดยส่วนใหญ่ ชื่อผู้ใช้เริ่มต้นคือ ubuntu หรือ root
bash
? What's the user for the server? (ubuntu) › ubuntu

ป้อนที่อยู่ IP ของเซิร์ฟเวอร์

ป้อนที่อยู่ IP ของเซิร์ฟเวอร์
bash
? 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
จากนั้น SLV จะตรวจสอบการเชื่อมต่อไปยังเซิร์ฟเวอร์ หากเชื่อมต่อสำเร็จ ระบบจะแสดงขั้นตอนถัดไป

เลือกประเภท Solana validator

เลือกประเภทของ Solana validator
bash
? 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)

สร้างหรือตั้งค่าคีย์ 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
โปรดวางคีย์ 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

สร้างหรือตั้งค่าคีย์ 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>
ข้อมูลโหนด validator จะถูกบันทึกไว้ที่ ~/.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

Deploy validator

เมื่อคุณยืนยันการกำหนดค่าแล้ว การ deploy จะเริ่มขึ้น
bash
slv v deploy -n mainnet -p epics-sub
bash
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 m
เสร็จแล้ว! ตอนนี้ Solana validator ของคุณ deploy เรียบร้อยแล้ว โดยจะใช้เวลาสักระยะในการซิงก์กับเครือข่าย Solana

การดีบั๊กและติดตาม

หลัง deploy แล้ว คุณสามารถดีบั๊กและมอนิเตอร์ภายใน Solana RPC node ได้ คุณสามารถตรวจสอบสถานะของ Solana RPC node ได้ด้วยคำสั่งต่อไปนี้:
bash
$ solv m
solv เป็นนามแฝงสำหรับ agave-validator -l /mnt/ledger การตั้งค่านี้จะถูกเพิ่มลงใน ~/.profile ระหว่างการ deploy RPC node

เปลี่ยนคีย์ identity

หลัง deploy แล้ว คุณต้องเปลี่ยนจากคีย์ unstaked เป็นคีย์ identity ที่ได้รับอนุญาต
bash
slv 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 Migration