Join cyber as a Validator
Prepare your server
First, you should set up a server. Your node should be online constantly. This means that you will need a reliable server. You may also consider using any cloud service with a dedicated GPU, like Hetzner, Cherryservers etc. (or use a local machine). Whatever you choose, in order to achieve better stability and consistency we recommend you use a dedicated server for each validator node.
Cyber is based on Cosmos-SDK and is written in Go. It should work on any platform which can compile and run programs in Go. We strongly recommend running the validator node on a Linux-based server.
Cyber-rank computations are performed on GPU, so it is required to have it (GPU) on-board your node.
Recommended hardware setup:
CPU: 6 cores
RAM: 32 GB
SSD: 1 TB
Connection: 50+Mbps, Stable and low-latency connection
GPU: Nvidia CUDA-cores; 4+ Gb of video memory*
Software: Ubuntu 20.04 LTS / 22.04 LTS
Cyber runs well on consumer-grade cards like Geforce GTX 1070, but we expect load growth and advise you use Error Correction compatible cards from Tesla or Quadro families. Also, make sure your card is compatible with >= v.410 of NVIDIA driver.
Of course the hardware is your own choice and technically it might be possible to run the node on "even - 1 CUDA core GPU", but you should be aware of performance drop and rank calculation speed decline.
Node setup
To avoid possible misconfiguration issues and simplify the setup of $ENV, we recommend to perform all the commands as root (here root - is literally root, not just a user with root priveliges). For the case of a dedicated server for cybernode it should be concidered as ok from the security side.
Third-party software
The main distribution unit for Cyber is a docker container. All images are located in the default Dockerhub registry. In order to access the GPU from the container, Nvidia driver version 410+ and Nvidia docker runtime should be installed on the host system.
All commands below suppose amd64 architecture, as the different architectures commands may differ accordingly.
Docker installation
Simply copy the commands below and paste into CLI.
- Update the
aptpackage index:
- Install packages to allow apt to use a repository over HTTPS:
- Add Docker’s official GPG key:
|
- Update the apt package index:
- Install the latest version of Docker CE and containerd:
Installing Nvidia drivers
- To proceed, first add the
ppa:graphics-drivers/pparepository:
- Install Ubuntu-drivers:
- Next check what are recommended drivers for your card:
You should see something similar to this:
==
- We need the 410+ drivers release, up to v515 is tested. As you can see the v460 is recommended. The command below will install the recommended version of the drivers:
To install specific version of a driver use sudo apt install nvidia-driver-460
The driver installation takes approximately 10 minutes.
- Reboot the system for the changes to take effect.
- Check the installed drivers:
You should see this: (Some version/driver numbers might differ. You might also have some processes already running)
| |
|
| | | |
| | | |
|===============================+======================+======================|
| | | |
| | | |
| |
| |
|=============================================================================|
| |
Install Nvidia container runtime for docker
- Add package repositories:
distribution=$(. /etc/os-release;echo $ID)
|
|
You should see something like this:
- Install nvidia-container toolkit and reload the Docker daemon configuration
&&
- Test nvidia-smi with the latest official CUDA image
Output logs should coincide as earlier:
| |
|
|| | |
|| | |
| | | |
|=============================+====================+=====================|
| || |
| | | |
| | | |
| |
| |
| |
|========================================================================|
| |
Your machine is ready to launch the node.
Launching cyber fullnode
Make a directory tree for storing your daemon:
- Run the full node: (This will pull and extract the image from cyberd/cyber of latest version, containing all upgrades binaries)
Docker image already contain all binaries to either sync from 0 or start form snapshot.
- Setup some peers to
persistent_peersandseedsto $HOME/.cyber/config/config.toml line 184:
# Comma separated list of seed nodes to connect to
# Comma separated list of nodes to keep persistent connections to
For peers addresses please refer to appropriate section of the networks repo.
- To speed-up sync use chain snapshot (check for most recent pinned snap in Hall of Fame). Download the snapshot, unpack it and replace your node
.cyber/dataand.cyber/wasmfolders to one's from snapshot.
Also adjust your config .cyber/config/app.toml pruning stratege to be similar with snapshot you've selected (pruning = "everything" for pruned snapshot, pruning = "nothing" for archive)
If you would like to sync all the way from the bottom - you may just fill the peers and let thing spin, upgrade block would be handled automatically.
- To apply config changes restart the container:
- Then check the status of your node:
A possible output may look like this:
To check container logs use:
Validator start
After your node has successfully synced, you can run a validator.
Prepare the staking address
- To proceed further you need to add your existing address to the node or generate one and fund it.
To create a new one use:
The above command returns the address, the public key and the seed phrase, which you can use to recover your account if you forget your password later.
Keep you seed phrase safe. Your keys are only your responsibility!
To import existing address use:
You can use your ledger device with the Cosmos app installed on it to sign transactions. Add address from Ledger:
<your_key_name> is any name you pick to represent this key pair. You have to refer to that name later when you use cli to sign transactions.
Send the create validator transaction
Validators are actors on the network committing new blocks by submitting their votes. This refers to the node itself, not a single person or a single account.
The next step is to declare a validator candidate. To declare a validator candidate, run the following command adjusting the stake amount and the other fields:
Verify that you are validating
If you see your <your_node_nickname> with the status Bonded and Jailed false everything is good.
You are validating the network.
Maintenance of the validator
Jailing
If your validator got under slashing conditions, it will be jailed. After such an event an operator must unjail the validator manually:
Back-up validator keys (!)
Your identity as a validator consists of two things:
- your account (to sign transactions)
- your validator private key (to sign stuff on the chain consensus layer)
Please back up $HOME/.cyber/config/priv_validator_key.json along with your seed phrase. In case of occasional node loss you would be able to restore your validator operation with this file and another full node.
Finally, in case you want to keep your cyber node ID consistent during networks please backup $HOME/.cyber/config/node_key.json.
Rebase to snapshot
You can use a snapshot to start a node from scratch, as well as to reduce its disk space.
Please check the latest snapshot here.
Download snapshot
Stop your node
Replace data folder to snapshot
Start node
Check node status and logs after startup