How to run a validator node
Benefits of operating a validator
Running your own validator:
-enhances Shardeum network security
-earns testnet SHM from user transaction fees
Shardeum validators perform consensus on transactions.
Shardeum validators with honest transaction consensus earn testnet SHM.
Shardeum validators with dishonest transaction consensus will have their testnet SHM slashed.
Minimum Hardware Requirements
-250 GB SSD storage
-Quad core CPU less than 10 years old if self hosting
-Dual core CPU works if hosted with newer Xeons / EPYC
-16 GB of ram, 4+ GB of virtual memory recommended
-Hosting: 8 GB RAM + 8 GB Virtual Memory
How do I run a validator on Shardeum?
Step 1: Install prerequisites
Open a Shell terminal
Access the terminal interface for Shell CLI commands:
(Press at the same time)
Ctrl + Alt + T
(Press at the same time)
Command + Space bar
Install package managers
We will use curl in this tutorial to download files:
Mac comes with curl, so we will install homebrew with curl (which will handle handle packages like apt in Linux).
sudo apt-get install curl
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
add Homebrew to your
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"'
eval "$(/opt/homebrew/bin/brew shellenv)"
Update package managers
Make sure your packages are up to date first:
When you add sudo to a command, the output will ask for your system password for admin verification.
sudo apt update
Install docker with docker.io:
sudo apt install docker.io
brew install docker
Check that docker is working with (should return version 20.10.12 or higher):
Curl request docker-compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
brew install docker-compose
Setup permissions for docker-compose:
sudo chmod +x /usr/local/bin/docker-compose
Check that docker-compose is working with (should return version 1.29.2 or higher):
Shardeum Validator support on Windows will be coming in the future.
Step 2: Download and install validator
curl -O https://gitlab.com/shardeum/validator/dashboard/-/raw/main/installer.sh && chmod +x installer.sh && ./installer.sh
The terminal will ask questions about your setup settings.
Give permission to collect validator data for bug reporting:
By running this installer, you agree to allow the Shardeum team to collect this data. (y/n)?:
Enter y to setup the web based dashboard:
Do you want to run the web based Dashboard? (y/n): y
Set a password for dashboard access:
Set the password to access the Dashboard:
Add a custom session port for the web based dashboard or hit enter for port 8080:
Enter the port (1025-65536) to access the web based Dashboard (default 8080):
Set the first p2p port (default 9001):
This allows p2p communication between nodes. Enter the first port (1025-65536) for p2p communication (default 9001):
Set the second p2p port (default 10001):
Enter the second port (1025-65536) for p2p communication (default 10001):
Add a custom path or install to root:
What base directory should the node use (defaults to ~/.shardeum):
Wait for the installation process to complete.
If you are behind a router and you are using ports 9001 and 10001 for p2p communication, make sure ports 9001 and 10001, are forwarded (be careful doing this since it will modify your firewall):
Step 3: Open validator CLI
Make sure you are in the root directory by running:
Go to the hidden Shardeum directory:
Start the CLI by running the following shell script:
If you see docker container error:
Error response from daemon: Container <container_id_hexadecimal> is not running
start all docker containers until the errors go away:
docker start <container_id_hexadecimal>
If you see docker permission error:
Got permission denied while trying to connect to the Docker daemon socket at
dial unix /var/run/docker.sock:
sudo usermod -a -G docker $USER && newgrp docker
if that does not work, also try:
sudo service docker start
then try to start the shell script again.
Step 4: Open validator GUI
While inside the shell script, run:
operator-cli gui start
Go to your web browser and go to:
You might see a warning page when trying to access this address in your web browser. Ignore this warning and continue to the validator dashboard. Another way to work around this warning:
From the three bar button (hamburger) menu button, go to Settings
Click on “Privacy & Security” on the left.
Scroll down to locate “View Certificates” and click that button.
Click the “Servers” tab, then click “Add Exception”.
Type: “https://localhost:8080” (or your remote/VPS server’s IP and port),
then click “Get Certificate”, then click “Confirm Security Exception”.
The result should be the server/localhost in the list, click “OK”.
Refresh the operator dashboard page and the certificate error should be gone.
Click on the “Not secure” alert and select/click on “Certificate is not valid”.
Click on the “Details” tab, then click n “localhost” in the “Certificate Hierarchy” box and click the “Export” button.
Click on the “Details” tab, then click on
“mynode-sphinx.shardeum.local” in the “Certificate Hierarchy” box and click the “Export” button.
The result of the steps above are two certificate files save in a location to be used in the following steps.
Type: chrome://settings in address bar, hit enter.
Click on “Privacy and security” on the left menu. Then click “Security” from the list in the main window.
Scroll down to find “Manage device certificates” in the main windows and select it.
Click the “Import” button.
Follow the import prompts.
Place the ‘mynode-sphinx.shardeum.local.crt” in the “Trusted Root Cert… Auth..” folder.
Click “Yes” and then “OK”.
Click “Import” once more.
Then follow the import prompts.
Place the ‘localhost.crt” in the “Personal” folder.
Close all Chrome windows (as in Exit Chrome).
When you have successfully restarted chrome, the operator dashboard will not show with a white lock.
You will be asked for your password set during setup.
The login will fail even if you put no password during the setup process. To set a new password inside the validator CLI:
operator-cli gui set password <type_new_password__here>
You should see the “Overview” page for the Shardeum Validator Dashboard in your web browser:
Step 5: Start validator
Go to the “Maintenance” page, then click the “Start Node” button in the top left white box:
(Same as running)
Wait and refresh the page.
The node is running correctly if the “Start Node” button now says “Stop Node”. If you want to stop tne node with the CLI:
Step 6: Monitor validator
Go to “Performance” to see your node’s hardware performance here:
For more details about your node status run the following inside the CLI:
If your node becomes inactive, try checking its status.
Reset the validator from the list by running:
pm2 delete [id]
Step 7: Connect Wallet to Betanet
Connect to Sphinx 1.X with your wallet by clicking the button linked here
Step 8: Get SHM from Betanet Faucet
Shardeum Twitter SHM Faucet Guide for Sphinx 1.X
Step 9: Stake SHM to validator
After you start the validator, go to the “Settings” page. You will be asked to connect your wallet:
After you connect your wallet, you should see the following:
When you click "Add Stake", you will see the following:
-Stake Wallet Address [wallet connected]
-Nominee Public Key [filled in automatically while validator is running]
-Stake amount (SHM) [empty and is in units ether not wei]
This example has filled in 10 SHM tokens to stake.
It is recommended to stake just 10 SHM per Validator node, since rewards will be the same with 10 SHM or more staked for a Validator.
Once all fields are filled, click the “Stake” button.
Your wallet will ask you to sign the transaction stake your SHM.
Once the transaction is signed and complete, you have staked your SHM tokens successfully.
If your node status is on Standby and you have 10 SHM or more staked, your validator node is setup correctly.
The network will automatically add your validator to be active in the network.
The time to be added as an active validator will vary based on network load and validators in the network.
If you have staked before, you can "Remove Stake". However, you will stop getting testnet SHM rewards when you unstake.
If you see your validator IP address as "0.0.0.0":
Go into the operator dashboard docker (may be different if you customized install location:
Get your node's external IP:
The returned IP in the format of nnn.nnn.nnn.nnn is your EXTERNAL_IP.
Set the number above in place of EXTERNAL_IP:
You can also stake and unstake from the Validator CLI if you are not able to access a web browser for the Validator GUI.
First, set your private key in your Validator CLI:
Be very careful with your private keys. We recommend you use a private key which has testnet tokens only to be safe.
make sure your private key is stored in your Validator CLI by running:
add stake with:
operator-cli stake 10
check your stake amount with:
operator-cli stake_info <wallet_address>
remove stake with:
New validator versions will be released over time. It is necessary to keep your validator updated by checking the minimum version required and your current version periodically.
You might manually have to start the GUI afterwards with:
operator-cli gui start
Exit Error Logs
sudo docker exec shardeum-dashboard cat cli/build/logs/exit-summary.json
Navigate to the .shardeum directory by entering:
Execute the shell.sh script by entering:
With the Validator CLI running, navigate to the cli/build/logs directory by entering:
View the contents of the exit-summary.json file by entering:
CLI And GUI
To see all CLI commands, run:
Useful if your validator is outdated and you want to clean your last installation.
You can delete the validator folder while in your root directory with:
rm -rf .shardeum
You can also delete docker containers and images that the Shardeum validator was using.
These commands will delete all docker images and containers on your computer!
Delete all docker containers:
docker rm -vf $(docker ps -aq)
Delete all docker images:
docker rmi -f $(docker images -aq)