Running Firedancer (Solana Testnet) on Edgevana
As you might have heard at Breakpoint, Firedancer 🔥 💃 is now live on testnet! Here at Edgevana, when we saw this, we were excited to play with it ourselves and get a validator up and running. We also wanted to help the community run Firedancer on their own given our commitment to being the #1 place to run a Solana validator! Thank you to both Jump Crypto and Solana Foundation for getting us to this tremendous milestone! Edgevana is now proud to say we are running our own Firedancer testnet node now!
Firedancer is very early-stage software. You should NOT run this on mainnet and should proceed at your own discretion. Only run Firedancer on testnet / devnet.
Below, we will describe how to set up a Firedancer node on testnet.
Prerequisites
- ≥ Ubuntu 22.04 (you can check this by running
lsb_release -a
) - ≥ 5.7 Linux Kernel (you can check this by running
uname -a
) - Testnet keys set up. Reference the Solana documentation on how to do this
- An active vote account. Reference the Solana documentation on how to do this
- Reference the Firedancer documentation for hardware requirements
Setup
Install the latest security updates on your machine
sudo apt update
sudo apt upgrade
Install required dependencies
sudo apt install gcc clang git make net-tools
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Clone Firedancer
git clone --recurse-submodules https://github.com/firedancer-io/firedancer.git
cd firedancer
Install Firedancer
FD_AUTO_INSTALL_PACKAGES=1 ./deps.sh check install
make -j fdctl solana
(Optional) Symlink Firedancer to your path
sudo ln -s /home/$USER/firedancer/build/native/gcc/bin/fdctl /usr/local/bin/fdctl
Add a Firedancer user
sudo adduser firedancer
Add Firedancer to sudo
According to the Firedancer documentation, it’s currently recommended to run Firedancer with sudo
due to low level optimizations made by the client like kernel bypass networking. Add firedancer ALL=(ALL) NOPASSWD:ALL
to the end of the file after running the below command
sudo visudo
Configure Ledger
It’s recommended to run ledger on a seperate disk. On your node, you should run lsblk
to get your device names as they might differ from the ones below
sudo mkfs -t ext4 /dev/nvme0n1
sudo mkdir -p /mnt/ledger
sudo chown -R firedancer:firedancer /mnt/ledger/
sudo mount /dev/nvme0n1 /mnt/ledger
Switch over to Firedancer user
sudo su - firedancer
Add /home/firedancer/config.toml
You should also copy your keys to your server you generated in the prequisites section to your node and have the paths match the config
user = "firedancer"
[gossip]
entrypoints = [
"entrypoint.testnet.solana.com:8001",
"entrypoint2.testnet.solana.com:8001",
"entrypoint3.testnet.solana.com:8001"
]
[consensus]
identity_path = "/home/firedancer/validator-keypair.json"
vote_account_path = "/home/firedancer/vote-keypair.json"
expected_genesis_hash = "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY"
known_validators = [
"5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on",
"dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs",
"Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN",
"eoKpUABi59aT4rR9HGS3LcMecfut9x7zJyodWWP43YQ",
"9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv",
]
[gossip]
port = 8001
[layout]
affinity = "0-9"
net_tile_count = 2
verify_tile_count = 2
[ledger]
path = "/mnt/ledger"
Add a start script
mkdir bin/
touch bin/validator.sh
chmod +x validator.sh
Add contents to start script
Run vim bin/validator.sh
and paste the contents below
#!/usr/bin/env bash
sudo fdctl configure init all --config /home/firedancer/config.toml
sudo fdctl run --config /home/firedancer/config.toml
Add systemd service
Run sudo vim /etc/systemd/system/firedancer.service
and paste the contents below
[Unit]
Description=Firedancer Solana
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=firedancer
LimitNOFILE=1000000
LogRateLimitIntervalSec=0
ExecStart=/home/firedancer/bin/validator.sh
[Install]
WantedBy=multi-user.target
Run Firedancer!
sudo systemctl enable --now firedancer
At this point, you should check your logs with journalctl -u firedancer.service -f
and make sure Firedancer is running. You should also run solana gossip
to make sure that your node is gossiping with the rest of the network!
Next Step: Consider running a validator in Solana’s TdS program to earn incentive rewards or deploy your own Firedancer validator to Solana testnet. When you deploy through Edgevana, you become a part of the vibrant Solana community and open the door to earning even more fantastic rewards. 🔥💃 🚀