Running a Full Node

Instructions to Run Full Node

Hardware

Supported

  • Operating System (OS): Ubuntu 20.04
  • CPU: 1 core
  • RAM: 2GB
  • Storage: 25GB SSD

Recommended

  • Operating System (OS): Ubuntu 20.04
  • CPU: 2 core
  • RAM: 4GB
  • Storage: 50GB SSD

A) Setup

1) Install Golang (go)

1.1) Remove any existing installation of go

sudo rm -rf /usr/local/go

1.2) Install latest/required Go version (installing go1.17.2)

curl -O https://dl.google.com/go/go1.17.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.17.2.linux-amd64.tar.gz

1.3) Update env variables to include go

cat <<'EOF' >>$HOME/.profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
EOF

source $HOME/.profile

1.4) Check the version of go installed

go version

2) Install required software packages

sudo apt-get update && sudo apt-get install git curl build-essential make jq -y

3) Install ethermint

git clone https://github.com/vulcanize/ethermint.git
cd ethermint
git fetch --all
git checkout v0.1.0-dev
make install

4) Verify your installation

ethermintd version --long

On running the above command, you should see a similar response like this. Make sure that the version and commit
hash
are accurate

name: ethermint
server_name: ethermintd

5) Initialize Node

Not required if you have already initialized before

ethermintd init <your-node-moniker> --chain-id ethermint_81337-1

On running the above command, node will be initialized with default configuration. (config files will be saved in node’s
default home directory (~/.ethermintd/config)

NOTE: Backup node and validator keys. You will need to use these keys at a later point in time.


B) Starting Node

1) Download Final Genesis

Use curl to download the genesis file
Replace your genesis file with published genesis file

curl http://146.71.79.179:26657/genesis | jq .result.genesis > ~/.ethermintd/config/genesis.json

Verify sha256 hash of genesis file with the below command

jq -S -c -M '' ~/.ethermintd/config/genesis.json | shasum -a 256

genesis sha256 hash should be

4e5b68b5652a608c44c33e669c84ac179d9c0e301f958b5448f037a53c5cbb4e

2) Update Peers & Seeds in config.toml

peers="5ad2e6c35f2c84ff3ee31d89a95b34d92cb6afb1@45.61.53.19:26656,defc95b08547b6ef254723ad9621967a7e819020@45.61.53.123:26656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" ~/.ethermintd/config/config.toml

3) Start the Full Node

3.1) Start node as systemctl service

3.1.1) Create the service file

sudo tee /etc/systemd/system/ethermintd.service > /dev/null <<EOF
[Unit]
Description=EthermintD Daemon 
After=network-online.target

[Service]
User=$USER 
ExecStart=$(which ethermintd) start --gql-playground --gql-server 
Restart=always 
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target 
EOF

3.1.2) Load service and start

sudo systemctl daemon-reload 
sudo systemctl enable ethermintd 
sudo systemctl start ethermintd

3.1.3) Check status of service


sudo systemctl status ethermintd

NOTE:
A helpful command here is journalctl that can be used to:

a) check logs


journalctl -u ethermintd

b) most recent logs


journalctl -xeu ethermintd

c) logs from previous day


journalctl --since "1 day ago" -u ethermintd

d) Check logs with follow flag


journalctl -f -u ethermintd

1 Like