Testnet
This document outlines the steps to join an existing testnet.
Pick a Testnet
You specify the network you want to join by setting the genesis file and seeds. If you need more information about past networks, check our testnets repo.
Testnet Chain ID | Description | Site | Version | Status |
---|---|---|---|---|
evmos_9000-4 | Evmos_9000-4 Testnet | Evmos 9000-4 | v16.0.0-rc5 | Live |
evmos_9000-3 | Evmos_9000-3 Testnet | Evmos 9000-3 | v1.0.0-beta1 | Stale |
evmos_9000-2 | Olympus Mons Incentivized Testnet | Olympus Mons | v0.3.x | Stale |
evmos_9000-1 | Arsia Mons Testnet | Arsia Mons | v0.1.x | Stale |
Server Timezone Configuration
Make sure your server timezone configuration is UTC.
To know what is your current timezone, run the timedatectl
command.
🚨 DANGER: Having a different timezone configuration
may cause a LastResultsHash
mismatch error.
This will take down your node!
Install evmosd
Follow the installation document to install the Evmos binary evmosd.
Make sure you have the right version of evmosd installed.
Save Chain ID
We recommend saving the testnet chain-id
into your evmosd's
client.toml
. This will make it so you do not have to manually pass in the chain-id
flag for every CLI command.
See the Official Chain IDs for reference.
evmosd config chain-id evmos_9000-4
Initialize Node
We need to initialize the node to create all the necessary validator and node configuration files:
evmosd init <your_custom_moniker> --chain-id evmos_9000-4
Monikers can contain only ASCII characters. Using Unicode characters will render your node unreachable.
By default, the init
command creates your ~/.evmosd
(i.e $HOME
) directory with subfolders config/
and data/
.
In the config
directory, the most important files for configuration are app.toml
and config.toml
.
Genesis & Seeds
Copy the Genesis File
Check the genesis.json
file from the archive
and copy it over to the config
directory: ~/.evmosd/config/genesis.json
. This is
a genesis file with the chain-id and genesis accounts balances.
sudo apt install -y unzip wget
wget -P ~/.evmosd/config https://archive.evmos.dev/evmos_9000-4/genesis.json
Then verify the correctness of the genesis configuration file:
evmosd validate-genesis
Add Seed Nodes
Your node needs to know how to find peers. You'll need to add healthy seed nodes
to $HOME/.evmosd/config/config.toml
. The testnets
repo contains links to
some seed nodes.
Edit the file located in ~/.evmosd/config/config.toml
and the seeds
to the following:
#######################################################
### P2P Configuration Options ###
#######################################################
[p2p]
# ...
# Comma separated list of seed nodes to connect to
seeds = "<node-id>@<ip>:<p2p port>"
You can use the following code to get seeds from the repo and add it to your config:
SEEDS=`curl -sL https://raw.githubusercontent.com/evmos/testnets/main/evmos_9000-4/seeds.txt | awk '{print $1}' | paste -s -d, -`
sed -i.bak -e "s/^seeds =.*/seeds = \"$SEEDS\"/" ~/.evmosd/config/config.toml
For more information on seeds and peers, you can the Tendermint P2P documentation.
Add Persistent Peers
We can set the persistent_peers
field in ~/.evmosd/config/config.toml
to specify peers that your node will maintain persistent
connections with. You can retrieve them from the list of
available peers on the testnets
repo.
A list of available persistent peers is also available in the #find-peers
channel in the
Evmos Discord. You can get a random 10 entries from the peers.txt
file in the PEERS
variable by running the following command:
PEERS=`curl -sL https://raw.githubusercontent.com/evmos/testnets/main/evmos_9000-4/peers.txt | sort -R | head -n 10 | awk '{print $1}' | paste -s -d, -`
Use sed
to include them into the configuration. You can also add them manually:
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" ~/.evmosd/config/config.toml
Run a Testnet Validator
Claim your testnet tEvmos on the faucet using your validator account address and submit your validator account address:
For more details on how to run your validator, follow these instructions.
evmosd tx staking create-validator \
--amount=1000000000000atevmos \
--pubkey=$(evmosd tendermint show-validator) \
--moniker="EvmosWhale" \
--chain-id=<chain_id> \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1000000" \
--gas="auto" \
--gas-prices="0.025atevmos" \
--from=<key_name>
Start testnet
The final step is to start the nodes. Once enough voting power (+2/3) from the genesis validators is up-and-running, the testnet will start producing blocks.
evmosd start
Upgrading Your Node
These instructions are for full nodes that have ran on previous versions of and would like to upgrade to the latest testnet version.
Reset Data
If the version <new_version> you are upgrading to is not breaking from the previous one, you should not reset the data. If this is the case you can skip to Restart
First, remove the outdated files and reset the data.
rm $HOME/.evmosd/config/addrbook.json $HOME/.evmosd/config/genesis.json
evmosd tendermint unsafe-reset-all --home $HOME/.evmosd
Your node is now in a pristine state while keeping the original priv_validator.json
and config.toml
. If you had
any sentry nodes or full nodes setup before,
your node will still try to connect to them, but may fail if they haven't also
been upgraded.
Make sure that every node has a unique priv_validator.json
. Do not copy the priv_validator.json
from an old node to multiple new nodes. Running two nodes with the same priv_validator.json
will cause you to double sign.
Restart
To restart your node, just type:
evmosd start
Share your Peer
You can share your peer to posting it in the #find-peers
channel in the Evmos Discord.
To get your Node ID use
evmosd tendermint show-node-id
State Syncing a Node
If you want to join the network using State Sync (quick, but not applicable for archive nodes), check our State Sync page