Becoming a Validator
Thank you for choosing to run Synternet Data Layer node. This guide will provide instructions on setting it up and other tasks needed to participate in the Mainnet.
The primary point of communication for the genesis process and future updates will be the #synt-mainnet-public channel on the Synternet Discord. This channel is private by default in order to keep it free of spam and unnecessary noise. To join the channel, please send a message to @dziugas_c or @gedminiux to add yourself and any team members.
Hardware Requirements
To run a full or validator node, server needs to meet these hardware requirements:
- x86-64 (amd64) multi-core CPU (AMD / Intel)
- Minimum 2 cores, 4 recommended.
- 32GB RAM
- Minimum 16GB if API/gRPC/RPC are disabled.
- 1TB NVMe SSD Storage
- Depends on pruning configuration.
- 100Mbps bi-directional Internet connection
- Make sure your firewall rules allow TCP traffic on 26656 port both ways (or your custom p2p port)
Mainnet SYNT
To run a validator, you will need to obtain SYNT on mainnet Cosmos network.
Upgrade History
The following table presents a list of the validator versions.
Version | Starting Block | Upgrade name | Binary |
---|---|---|---|
v0.11.0 | 0 (Genesis) | - | linux/amd64 |
v0.14.0 | 505094 | v0.14 | linux/amd64 |
v0.19.1 | 2192309 | v0.19 | linux/amd64 |
Peers
Synternet
2eed7e175d204680af243e008e21950f81b8d455@34.89.206.173:26656
External
74fc274769eedb14025aa66d4e9fb49d3a1bd3bf@136.243.41.225:26656
6f76ec0b365da744e893b470eac72a87482359d5@176.9.125.13:2220
ac6ec924a0501b55db82c6a76aab893aed9a8630@65.109.122.249:26656
95b14ec701608044c261ebd15d0b3bd84e295acb@72.46.84.135:26656
Cosmovisor
Cosmovisor serves as a potent tool in managing Cosmos SDK-based chain binary versions. Its core function facilitates seamless binary upgrades without requiring a complete node restart or manual intervention.
Even without auto-upgrades, Cosmovisor efficiently handles different Synternet chain binary versions by automatically switching based on block height, minimizing errors during manual management, aiding validators.
While Cosmovisor automates new binary downloads, node operators must ensure their trustworthiness by checking sha256 signature declared in the proposal and the downloaded binary. Operators should vigilantly verify upgrades and binaries independently.
For more control, manual upgrades are an option for node operators.
More information about Cosmovisor can be found in the official documentation.
Install Cosmovisor
Before using Cosmovisor you must have Go version 1.21 or higher. To verify what Go version you have, run this:
go version
You can install Cosmovisor with:
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@latest
and check that the installation has been successful with:
cosmovisor
Replay from Genesis
This is the slowest (and most secure) way to sync your node, as your node goes through every block since the genesis block. First, create the required directories by executing the following commands:
mkdir -p "${HOME}"/.amber/cosmovisor/genesis/bin
mkdir "${HOME}"/.amber/cosmovisor/upgrades
Download the genesis binary:
curl https://github.com/Synternet/synternet-chain-releases/releases/download/v0.11.0/syntd-linux-amd64-v0.11.0-mainnet --output syntd
NOTE: Make sure you have correct access token. Verify the downloaded binary has a proper checksum:
sha256sum syntd
You can obtain the checksum either from the upgrade proposal, or by executing (always double check):
curl https://github.com/Synternet/synternet-chain-releases/releases/download/v0.11.0/syntd-linux-amd64-v0.11.0-mainnet.sha256
Make sure the binary is executable:
chmod +x syntd
Then copy the syntd binary to the genesis/bin folder:
cp syntd "${HOME}"/.amber/cosmovisor/genesis/bin
Additionally, to sync to the latest binary, you must download all the upgrade versions (verified by on-chain proposals) and place them into the appropriate directories like this: "${HOME}"/.amber/cosmovisor/upgrades/{UpgradeName}/bin/syntd
. {UpgradeName}
is the name that can be found in the upgrade proposal or in the table above.
This name is different than the binary version, but usually follows it closely. E.g. if the binary version is v0.13.1
, then the Upgrade Name is v0.13
.
If syncing from a state snapshot or using state-sync, only the latest upgrade binary is required.
Choose a moniker for your node and initialise node home directory (default configuration, genesis, and private keys) by executing:
"${HOME}"/.amber/cosmovisor/genesis/bin/syntd init <your chosen moniker>
This will create the initial configuration, genesis file, validator private keys, etc. Note that managing validator and p2p private keys is out of scope for this guide. Please follow the best security practices to ensure that priv_validator_key.json
is kept as secure as possible. It is essential for validator security.
Make sure to download correct genesis file by fetching it from an available rpc:
curl -s https://rpc.synternet.com/genesis | jq '.result.genesis' > "${HOME}"/.amber/config/genesis.json
Configure ~/.amber/config/app.toml
to your liking (API, telemetry, gRPC, gRPC Gateway, etc.). Add persistent peers in ~/.amber/config/config.toml
.
Consider changing default max_num_inbound_peers
and max_num_outbound_peers
to higher value to allow better connectivity with the Synternet network. This will decrease the likelyhood
of your validator losing connection to other validators and missing blocks. Recommended values:
# Maximum number of inbound peers
max_num_inbound_peers = 60
# Maximum number of outbound peers to connect to, excluding persistent peers
max_num_outbound_peers = 30
# Set true to enable the peer-exchange reactor
pex = true
After completing these steps, you can proceed with configuring Cosmovisor. Once it is properly configured and started, it will automatically switch binaries after each upgrade and resume the syncing process.
Using the Latest Snapshot
Currently Polkachu provides snapshots for the Synternet blockchain. You can find detailed instructions here.
Using state-sync
State sync is yet another way to sync your local copy of the chain to the Synternet blockchain quickly. However, the security of this method depends on the operator's choice of trusted block hash. It is best to be familiar with the state sync by reading the official CometBFT docs.
The first step is to determine the latest block hash. This can be achieved by looking at the Explorer, or running this command:
curl -s https://rpc.synternet.com/commit | jq "{height: .result.signed_header.header.height, hash: .result.signed_header.commit.block_id.hash}"
You need to enter these values in config.toml
configuration file under [statesync]
section after you set enable = true
as trust_height
and trust_hash
.
Also, you must provide at least two comma separated rpc_servers
for it to work.
Configure Cosmovisor
This step assumes that the home directory was initialised previously and "Replay from genesis" step is completed.
Add the necessary environment variables, for example, by adding these variables to the profile that will be running Cosmovisor. You can edit the ~/.profile
file by adding the following content:
export DAEMON_HOME="${HOME}"/.amber
export DAEMON_RESTART_AFTER_UPGRADE=true
export DAEMON_ALLOW_DOWNLOAD_BINARIES=false
export DAEMON_NAME=syntd
export UNSAFE_SKIP_BACKUP=false
Run Cosmovisor as a Service
This step assumes that the home directory was initialised previously.
You can create a service file with:
sudo nano /etc/systemd/system/cosmovisor.service
and add the following content by making sure to change the <your-user>
, <path-to-cosmovisor>
and <path-to-syntd>
with your values:
[Unit]
Description=cosmovisor
After=network-online.target
[Service]
User=<your-user>
ExecStart=/<path-to-cosmovisor>/cosmovisor run start
Restart=always
RestartSec=3
LimitNOFILE=4096
Environment="DAEMON_NAME=syntd"
Environment="DAEMON_HOME=/<path-to-syntd>/.amber"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="DAEMON_LOG_BUFFER_SIZE=512"
Environment="UNSAFE_SKIP_BACKUP=false"
[Install]
WantedBy=multi-user.target
You can now reload the systemctl daemon:
sudo -S systemctl daemon-reload
and enable Cosmovisor as a service:
sudo -S systemctl enable cosmovisor
You can now start Cosmovisor by executing:
sudo systemctl start cosmovisor
Make sure to check that the service is running by executing:
sudo systemctl status cosmovisor
You can monitor node logs by executing:
sudo journalctl -u cosmovisor -f
Create a Validator
Operating a validator can be challenging and rewarding experience. Synternet blockchain runs on the same principles as any other Cosmos based chain. So to better understand how to operate a validator node you can refer to this Cosmos Hub guide.
In order to create a validator you can use the following command:
syntd tx staking create-validator \
--amount=10000000usynt \
--pubkey=$(syntd tendermint show-validator) \
--moniker="choose a moniker" \
--chain-id=synternet-1 \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--gas="auto" \
--gas-adjustment="1.3" \
--gas-prices="0.01usynt" \
--from=<key_name>
This will create a validator, and self-delegate 10000000usynt
coins.