Validator Parameters
Before you step into the step-by-step process of how to run Fantom node, it’s important to know these Validator parameters:
Minimum stake: 50,000 FTM
You need this much minimum self-stake.
Maximum validator size: 15x the self-stake amount
Rewards: currently ~6% APR (Normal APR on self-stakes + 15% of delegators’ rewards). APR varies based on staked %. For up-to-date APR, check https://fantom.foundation/ftm-staking/
Launch cloud instance
You can run Fantom node on your personal hardware or a cloud provider like Amazon AWS.
Node Specifications | System Requirements
The following are recommended as at least must-haves:
m6i.2xlarge, m6a.2xlarge, r6i.2xlarge General Purpose Instance with 4 vCPUs (3.5 GHz), 32+GB of memory, up to 10 Gbps network bandwidth, and at least 2.5 TB of gp3 (16000+ IOPS, 1000MB/s). Lower specs like AWS m5.xlarge can work but are no longer recommended.
Ubuntu Server 22.04 LTS (64-bit) is recommended to run Fantom Node.
Storage
- 2.5 TB will do well if you run via a pruned datadir.
- 17 TB is needed for running with a full-size (non-pruned) datadir.
- 1 TB is great to run using a no-history genesis in snapsync mode (however, you must wait for it to sync to the latest block).
Network settings
Open port 22 for SSH & port 5050 for TCP & UDP traffic. A custom port can be used with the “–port <port>” flag when running your opera node.
Set up a Non-root User
If there is already a non-root user available, you can skip this step.
# SSH into your machine
(local)$ ssh root@{VALIDATOR_IP_ADDRESS}
# Update the system
(validator)$ sudo apt-get update && sudo apt-get upgrade -y
# Create a non-root user
(validator)$ USER={USERNAME}
(validator)$ sudo mkdir -p /home/$USER/.ssh
(validator)$ sudo touch /home/$USER/.ssh/authorized_keys
(validator)$ sudo useradd -d /home/$USER $USER
(validator)$ sudo usermod -aG sudo $USER
(validator)$ sudo chown -R $USER:$USER /home/$USER/
(validator)$ sudo chmod 700 /home/$USER/.ssh
(validator)$ sudo chmod 644 /home/$USER/.ssh/authorized_keys
Don’t forget to paste your public SSH key into the authorized_keys file of the newly created user to log in via SSH.
# Enable sudo without password for the user
(validator)$ sudo vi /etc/sudoers
Add the following line at the end of the file:
{USERNAME} ALL=NOPASSWD: ALL
Now close the root SSH connection to the machine and log in with the new user you just created:
# Close the root SSH connection
(validator)$ exit
# Log in as new user
(local)$ ssh {USERNAME}@{VALIDATOR_IP_ADDRESS}
Install required tools
Once you are logged in as the new user via SSH. Now, install Go & Opera.
First, install the required build tools:
# Install build-essential
(validator)$ sudo apt-get install -y build-essential
Install Go
# Install go
(validator)$ wget https://go.dev/dl/go1.19.3.linux-amd64.tar.gz
(validator)$ sudo tar -xvf go1.19.3.linux-amd64.tar.gz
(validator)$ sudo mv go /usr/local
Export the required Go paths
# Export go paths
(validator)$ vi ~/.bash_aliases
# Append the following lines
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
(validator)$ source ~/.bash_aliases
Validate your Go installation
Install Opera
# Install Opera
(validator)$ git clone https://github.com/Fantom-foundation/go-opera.git
(validator)$ cd go-opera/
(validator)$ git checkout release/1.1.3-rc.5
(validator)$ make
Validate your Opera installation
$./build/opera version
VERSION:
1.1.3-rc.5
db.preset
When using version 1.1.3, you must add db.preset argument for starting the opera command. For standard conditions, please use this option:
db.preset=ldb-1
You can use either –db.preset ldb-1 or –db.preset legacy-db. What is not recommended is pbl-1 for validator nodes.
For troubleshooting your node, please check this link – https://docs.fantom.foundation/node/troubleshooting#4.2-slow-syncing.
Register Fantom validator
- After installing everything, register your Fantom validator node on-chain. For this, create a validator wallet. The wallet is the validator’s identity in the network used for authentication, signing messages, and more functions like these.
- First, start the Opera read-only node for interaction with it & then create a validator wallet:
# Start opera node
(validator)$ cd build/
(validator)$ wget https://download.fantom.network/mainnet-109331-pruned-mpt.g
(validator)$ nohup ./opera --genesis mainnet-109331-pruned-mpt.g --nousb \
--db.preset ldb-1 &
There are different ways to #run-your-read-node.
Note that https and ws must not be enabled on a server that stores a wallet account.
Starting up your node will appear something like this:
The node should start to sync the network data and once it does, it will appear like this:
When it’s running, you must wait till it’s synced up to the latest block before executing the next step.
Validator wallet Creation
The node is running & syncing the network in your current console, meaning you need to open up a new console window, connect via SSH to the server, and enter the following commands to create a wallet:
# Create validator wallet
(validator)$ ./opera account new
After entering the command, you will get prompted to enter a password for the account (= wallet) — use a complex password.
Fund your validator wallet
- It’s time to fund your wallet with a minimum of 50000 FTM. in the wallet. Put some extra to cover transaction fees.
- If you don’t have your FTM on the Opera mainnet already, swap your FTM for some cross-chain bridges.
- After swapping FTM to your new Opera wallet successfully – register your validator via the SFC Smart Contract.
- Wait for your node to be fully synced – otherwise, your FTM will not appear in your wallet!
Create a new validator key
Create a validator private key to sign consensus messages with. It can be done only using go-opera (https://github.com/Fantomfoundation/lachesis_launch/blob/master/docs/create_validator.md)
(validator)$ ./opera validator new
Follow the prompts and supply the password, the output will be:
Your new key was generated
Public key: 0xPubkey
Path of the secret key file
– You can share your public key with anyone. Others need it to validate messages from you.
– You must NEVER share the secret key with anyone! The key controls access to your validator!
– You must BACKUP your key file! Without the key, it’s impossible to operate the validator!
– You must REMEMBER your password! Without the password, it’s impossible to decrypt the key!
Run your Fantom validator node
Now, restart your node in validator mode!
Ensure your node is already synced to the latest block in read mode, and it’s synced in –syncmode full.
To stop the opera process (read mode):
(validator)$ pkill opera
Then wait a few seconds.
Then head back to the console window where you started your node with the following command:
(validator)$ nohup ./opera --genesis $NETWORK --nousb \
--validator.id ID --validator.pubkey 0xPubkey --validator.password /path/to/password &
Conclusion
Running a Fantom node or any node can be complicated, especially for those who are no technical experts. But if you follow the steps told in this guide, you can run Fantom node successfully.
Need help with running a node?
Connect with Leasepacket – crypto & blockchain experts.