Mainnet
This document outlines the steps to join an existing mainnet.
Prerequisite Readings
Mainnet
You need to set the genesis file and seeds. If you need more information about past networks, check our mainnet repo. The table below gives an overview of all Mainnet Chain IDs. Note that, the displayed version might differ when an active Software Upgrade proposal exists on chain.
Chain ID | Description | Site | Version | Status |
---|---|---|---|---|
evmos_9001-2 | DEP Mainnet 2 | DEP | Live | |
evmos_9001-1 | DEP Mainnet 1 | DEP | Stale |
IMPORTANT: If you join mainnet as a validator make sure you follow all the security recommendations!
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 dep
Follow the installation document to install the DEP binary evmosd.
Make sure you have the right version of evmosd installed.
Save Chain ID
We recommend saving the mainnet 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.
dep config chain-id evmos_9001-2
Initialize Node
We need to initialize the node to create all the necessary validator and node configuration files:
dep init <your_custom_moniker> --chain-id evmos_9001-2
Monikers can contain only ASCII characters. Using Unicode characters will render your node unreachable.
By default, the init
command creates your ~/.dep
(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
Download the genesis.json
file from the archive
and copy it over
to the config
directory: ~/.dep/config/genesis.json
. This is a genesis file with the chain-id and genesis
accounts balances.
wget
mv genesis.json ~/.dep/config/
Then verify the correctness of the genesis configuration file:
dep validate-genesis
Add Seed Nodes
Your node needs to know how to find peers.
You'll need to add healthy seed nodes
to $HOME/.dep/config/config.toml
. The mainnet
repo contains links to some
seed nodes.
Edit the file located in ~/.dep/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 | awk '{print $1}' | paste -s -d, -`
sed -i.bak -e "s/^seeds =.*/seeds = \"$SEEDS\"/" ~/.dep/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 ~/.dep/config/config.toml
to specify peers that your node will maintain persistent
connections with.
Run a Mainnet Validator
For more details on how to run your validator, follow the validator these instructions.
dep tx staking create-validator \
--amount=1000000000000aevmos \
--pubkey=$(dep tendermint show-validator) \
--moniker="EvmosWhale" \
--chain-id=<chain_id> \
--commission-rate="0.05" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1000000" \
--gas="auto" \
--gas-prices="0.025aevmos" \
--from=<key_name>
🚨 DANGER: Never create your validator keys using a test
keying backend. Doing so might result in a loss of funds by making your funds remotely accessible via the eth_sendTransaction
JSON-RPC endpoint.
Ref: Security Advisory: Insecurely configured geth can make funds remotely accessible
Start mainnet
The final step is to start the nodes. Once enough voting power (+2/3) from the genesis validators is up-and-running, the node will start producing blocks.
dep start
Share your Peer
You can share your peer to posting it in the #find-peers
channel in the DEP Discord.
To get your Node ID use
dep 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.