Full node build
Install Go
Feel free to skip this step if you already have Go and Cosmovisor.
Install Go
We will use Go v1.20.4
as example here. The code below also cleanly removes any previous Go installation.
sudo rm -rvf /usr/local/go/
wget https://golang.org/dl/go1.20.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.20.4.linux-amd64.tar.gz
rm go1.20.4.linux-amd64.tar.gz
Configure Go
Unless you want to configure in a non-standard way, then set these in the ~/.profile
file.
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
Install Node
Install the current version of node binary.
git clone https://github.com/EmpowerPlastic/empowerchain && \
cd empowerchain && \
cd chain && \
make install
Configure Node
Initialize Node
Please replace YOUR_MONIKER
with your own moniker.
empowerd init YOUR_MONIKER --chain-id empowerchain-1
Download Genesis
URL=https://github.com/EmpowerPlastic/empowerchain/raw/main/mainnet/empowerchain-1/genesis.tar.gz
curl -L $URL | tar -xz -C $HOME/.empowerchain/config/
Check Genesis
sha256sum $HOME/.empowerchain/config/genesis.json
Result: 819d33d14c35bbfbc5997db9bf545eb7a5504b5870a307ce90c3813add4b316b
Configure Seeds
Using a seed node to bootstrap is the best practice in our view. Alternatively, you can use addrbook or persistent_peers.
seeds="[email protected]:26656,6740fa259552a628266a85de8c2a3dee7702b8f9@empower-mainnet-seed.itrocket.net:14656,e16668ddd526f4e114ebb6c4714f0c18c0add8f8@empower-seed.zenscape.one:26656"
sed -i -e 's|^seeds *=.*|seeds = "'$seeds'"|' $HOME/.empowerchain/config/config.toml
Update Node configs
We can use sed
to update various node configuration values without having to manually edit each file - which can be a pain.
Replace the values below with your own. These commands will update the following:
minimum_gas_prices
pruning
configssnapshot
configs
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.025umpwr\"|" $HOME/.empowerchain/config/app.toml
sed -i -e "s|^pruning *=.*|pruning = \"custom\"|" $HOME/.empowerchain/config/app.toml
sed -i -e "s|^pruning-keep-recent *=.*|pruning-keep-recent = \"113\"|" $HOME/.empowerchain/config/app.toml
sed -i -e "s|^pruning-keep-every *=.*|pruning-keep-every = \"0\"|" $HOME/.empowerchain/config/app.toml
sed -i -e "s|^pruning-interval *=.*|pruning-interval = \"17\"|" $HOME/.empowerchain/config/app.toml
sed -i -e "s|^snapshot-interval *=.*|snapshot-interval = \"0\"|" $HOME/.empowerchain/config/app.toml
sed -i -e "s|^snapshot-keep-recent *=.*|snapshot-keep-recent = \"2\"|" $HOME/.empowerchain/config/app.tom
Updating node ports
We'll use a powerful tool called sed
for this process. sed
is a stream editor that can perform operations, like substitutions, on a text file.
We will specifically focus on updating the ports to use a standardized prefix for your chain. This ensures consistency and improves overall system organization. It will also allow you to run multiple chains on a single server.
Let's start by understanding what we're updating:
proxy_app: This is the address used for inter-process communication between the ABCI application and the consensus engine.
laddr: This is the address that your node listens on for incoming connections.
pprof_laddr: This is the address for the profiling server to listen on.
prometheus_listen_addr: This is the address for the Prometheus metrics server to listen on.
address: These are various addresses that your node may use to listen for different types of connections.
Set Your Chain and Port Prefix
Your chain in this case is Empower. For Empower, we want to set the port prefix as 139
. The port prefix will be used to replace the first 2 or 3 digits of the original ports.
# Set the prefix
export PREFIX=118
Update config.toml
Next, we will update the config.toml
file. For 5-digit ports, the first 3 digits will be replaced. Here is how to calculate the new port values and update the config.toml
file:
PROXY_APP_PORT=$(echo 26658 | awk -v prefix=$PREFIX '{print prefix substr($0,4)}')
LADDR_PORT1=$(echo 26657 | awk -v prefix=$PREFIX '{print prefix substr($0,4)}')
LADDR_PORT2=$(echo 26656 | awk -v prefix=$PREFIX '{print prefix substr($0,4)}')
PPROF_LADDR_PORT=$(echo 26660 | awk -v prefix=$PREFIX '{print prefix substr($0,4)}')
PROMETHEUS_LISTEN_PORT=$(echo 26660 | awk -v prefix=$PREFIX '{print prefix substr($0,4)}')
sed -i.bak -e "\
s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:$PROXY_APP_PORT\"%; \
s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://0.0.0.0:$LADDR_PORT1\"%; \
s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:$PPROF_LADDR_PORT\"%; \
s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:$LADDR_PORT2\"%; \
s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":$PROMETHEUS_LISTEN_PORT\"%" \
$HOME/.empowerchain/config/config.toml
Update app.toml
For 4-digit ports, the first 2 digits will be replaced. Here is how to calculate the new port values and update the app.toml
file:
sed -i.bak -e "\
s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:$ADDRESS_PORT1\"%; \
s%^address = \":8080\"%address = \":$ADDRESS_PORT2\"%; \
s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:$ADDRESS_PORT3\"%; \
s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:$ADDRESS_PORT4\"%" \
$HOME/.empowerchain/config/app.toml
ADDRESS_PORT1=$(echo 1317 | awk -v prefix=$PREFIX '{print prefix substr($0,3)}')
ADDRESS_PORT2=$(echo 8080 | awk -v prefix=$PREFIX '{print prefix substr($0,3)}')
ADDRESS_PORT3=$(echo 9090 | awk -v prefix=$PREFIX '{print prefix substr($0,3)}')
ADDRESS_PORT4=$(echo 9091 | awk -v prefix=$PREFIX '{print prefix substr($0,3)}')
Setup Cosmovisor
Follow the Setup Cosmovisor instructions to setup cosmovisor and start the node.
Upgrade to a validator
Do not attempt to upgrade your node to a validator until the node is fully in sync as per the previous step.
To upgrade the node to a validator, you will need to submit a create-validator
transaction:
empowerd tx staking create-validator \
--amount 1000000umpwr \
--commission-max-change-rate "0.1" \
--commission-max-rate "0.20" \
--commission-rate "0.1" \
--min-self-delegation "1" \
--details "validators write bios too" \
--pubkey=$(empowerd tendermint show-validator) \
--moniker $MONIKER_NAME \
--chain-id empowerchain-1 \
--gas-prices 0.025umpwr \
--from <KEYNAME>
The above transaction is just an example. There are many more flags that can be set to customise your validator, such as your validator website, or keybase.io id, etc. To see a full list:
empowerd tx staking create-validator --help
Backup critical files
There are certain files that you need to backup to be able to restore your validator if, for some reason, it damaged or lost in some way. Please make a secure backup of the following files located in ~/.empowerchain/config/
:
priv_validator_key.json
node_key.json
It is recommended that you encrypt the backup of these files.
Last updated
Was this helpful?