Solana Mainnet Validator - Snelstart
Inleiding
Om een Solana-mainnet-validator te deployen, gebruik je de commandlinetool van SLV.
Deze snelstarthandleiding legt uit hoe je een hot spare van een mainnet-validator start en deployt.
Op je server moet een schone installatie van Ubuntu 24.04 LTS staan.
Een bare-metal server voorbereiden
Het is mogelijk om een Solana-node op een VPS of virtuele machine (VM) te draaien, maar optimale prestaties en een stabiele werking zijn dan lastig te bereiken. Solana raadt officieel het gebruik van bare-metal servers aan.
Mainnet-validators zouden zo ingericht moeten zijn dat ze ook tijdens congestie stabiel blijven.
Hieronder staat een richtlijn op basis van de officiële documentatie van Solana / Agave / Firedancer.
Hieronder staat een richtlijn op basis van de officiële documentatie van Solana / Agave / Firedancer.
Agave-validator (officiële vereisten en aanbevelingen)
SOL-vereisten
- Bij elke epoch-grens moet het Vote Account minimaal het rent-exempt-minimum plus één Validator Admission Ticket bevatten (0.8 SOL bij een slottijdinstelling van 200 ms)
- Het Validator Admission Ticket wordt in het eerste block van elke epoch van het Vote Account afgeschreven
- Controleer het rent-exempt-minimum met
solana rent 3762(3762 is de grootte van het Vote Account in bytes) - De Identity Key betaalt niet langer een vergoeding per stem — onder Alpenglow worden stemmen niet meer als transacties verzonden
Hardwarevereisten (richtlijn)
| Component | Validator | RPC-node (ter referentie) |
|---|---|---|
| CPU | 2.8GHz+ / AMD Gen3+ / Intel Ice Lake+ / SHA-extensies / AVX2 | 16 cores / 32 threads+ |
| RAM | 256GB+ | 512GB+ |
| Schijf | NVMe Gen3 x4 of beter / scheiding van Accounts-Ledger-Snapshots aanbevolen | Grotere capaciteit aanbevolen |
| GPU | Niet vereist | Niet vereist |
Opmerking:
Kloksnelheid en effectieve doorvoer worden belangrijker geacht dan het aantal cores.
Firedancer (Frankendancer)
Firedancer (Frankendancer) is momenteel afhankelijk van Agave,
dus vereist het minimaal de aanbevolen configuratie voor Agave of een hogere.
dus vereist het minimaal de aanbevolen configuratie voor Agave of een hogere.
Minimum
- 24-core CPU @ >2.8GHz
- 256GB RAM
- 2TB NVMe (High TBW)
Aanbevolen
- CPU met 32 cores @ >3GHz (met AVX512-ondersteuning)
- 512GB RAM (ECC)
- Scheiding van Accounts / Ledger
- Netwerkbandbreedte van 1Gbps of hoger
Voor een goede balans tussen kosten en prestaties is Agave met een 24-core CPU en 384GB RAM een praktische richtlijn.
Wanneer je het commando
slv v init uitvoert, wordt gevraagd of je bare-metal server al is ingericht: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
noDeze tutorial gaat ervan uit dat je
yes kiest.Heb je je bare-metal server nog niet voorbereid, raadpleeg dan de handleiding voor het inrichten van een bare-metal server.
Daarnaast kunnen deze bronnen nuttig zijn:
Een Solana Mainnet Firedancer Jito-validator deployen
Nieuwe SLV-deployments gebruiken altijd
unstaked-keypair.json als identity key.
Dit is een best practice om dubbel stemmen en andere problemen te voorkomen.Gebruik daarom na de deployment
slv v set:identity om de geautoriseerde identity key in te stellen.Bij het beheer van een mainnet-validator gebruik je meestal
slv v switch om de identity key te wisselen.
Raadpleeg voor een migratie zonder downtime deze handleiding.Solana-netwerk kiezen
Kies het Solana-netwerk waarop je wilt deployen.
bash
slv v init
? Select Solana Network (mainnet)
testnet
❯ mainnetslv v init
? Select Solana Network (mainnet)
testnet
❯ mainnetStandaardgebruikersnaam van de server invoeren
Meestal is de standaardgebruikersnaam
ubuntu of root.bash
? What's the user for the server? (ubuntu) › ubuntu? What's the user for the server? (ubuntu) › ubuntuIP-adres van de server invoeren
Voer het IP-adres van de server in.
bash
? What's the IP address of the server? ›? What's the IP address of the server? ›RSA-sleutel voor SSH instellen
※ Geef het pad naar je RSA-sleutel op. Het standaardpad is
~/.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 succeededDaarna controleert SLV de verbinding met de server. Als de verbinding
slaagt, verschijnt de volgende stap.
Type Solana-validator kiezen
Kies het type 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-jitoCommission-percentage instellen
Stel het commission-percentage voor je validator in.
※ 1000 staat gelijk aan 10%.
bash
? Enter Commission BPS (Max 1000 = 10%) (1000)? Enter Commission BPS (Max 1000 = 10%) (1000)Identity key van de Solana-validator genereren of instellen
Je kunt een nieuwe identity key genereren of een bestaande identity key instellen.
In dit voorbeeld zie je hoe je een bestaande identity key instelt met de naam "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.xPlaats je identity key in
~/.slv/keys/<your-pubkey>.json.Automatische regiodetectie
Vervolgens pingt het systeem vanaf je geconfigureerde node elke block engine om automatisch de dichtstbijzijnde regio te bepalen. Doordat de werkelijke pingwaarden worden gemeten, kun je de optimale regio kiezen.
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.wtfVote account key van de Solana-validator genereren of instellen
Je kunt een nieuwe vote account key genereren of een bestaande vote account key instellen.
In dit voorbeeld zie je hoe je een bestaande vote account key instelt.
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>De gegevens van de validatornode worden opgeslagen in
~/.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-subDe validator deployen
Zodra je de configuratie bevestigt, start de deployment.
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 mKlaar! Je Solana-validator is nu gedeployd. Het duurt even voordat hij
met het Solana-netwerk is gesynchroniseerd.
Debuggen en monitoren
Na de deployment kun je binnen de Solana-RPC-node debuggen en monitoren.
Met de volgende commando's kun je de status van de Solana-RPC-node controleren:
bash
$ solv m$ solv msolv is een alias voor agave-validator -l /mnt/ledger.
Deze instelling wordt tijdens de deployment van de RPC-node aan ~/.profile toegevoegd.De identity key wijzigen
Na de deployment moet je de unstaked key vervangen door de geautoriseerde identity key.
bash
slv v set:identity -n mainnet --pubkey epics-subslv v set:identity -n mainnet --pubkey epics-subDit commando wijzigt de identity key in de geautoriseerde identity key.
※ Raadpleeg voor een migratie zonder downtime deze handleiding.
SLV-validatorcommando's
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