Skip to content
On this page

Run a Full Node

System Configuration

This documentation assumes that a Linux operating system is being used. All commands have been tested against Ubuntu 20.04 LTS, but other distributions of Linux can be used in place of this. Recent versions of macOS can also be used to compile the empowerd daemon.

Hardware Requirements

Hardware requirements for Empowerchain vary based on the purpose of the full node. RPC nodes, validators, and archive nodes all serve different purposes with different system recommendations. For example, an archive node will need more storage than an RPC or Validator node require. The below recommendation is a starting point and should be modified to fit the node's use case. Since CosmWasm is active on the network, higher system specifications are needed compared to other cosmos-sdk chains.

  • 4 CPU Cores
  • 16GB RAM
  • 500+ GB SSD (SATA or NVMe)

Installation Prerequisites

Linux Dependencies

Install the following build dependencies

sudo apt update
sudo apt install -y curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool


Golang version 1.20.0 or higher is required to build empowerd. Go can be installed as a stand-alone installation or as a managed installation through gvm.

gvm requires the bison package to be installed in addition to the previous Linux package dependencies.

sudo apt install -y bison

The gvm documentation provides an installation script to get started with gvm and go quickly.


Inspect the file to ensure that you are aware of what it is doing on the system.

cat gvm-installer

Once inspected, change permissions on the file to make it executable and install it.

chmod +x gvm-installer

Since Empowerchain requires a modern version of go, version 1.4 is needed to compile later versions of go through gvm. Starting at go1.20 and above, gvm has issues compiling when using go1.4, so it is recommended to use the binary download of go1.19 and compile go1.20+ with that. Install go1.19 and set the GOROOT_BOOTSTRAP value to the $GOROOT to configure this.

gvm install go1.19 -B
gvm use go1.19

Once go1.19 is installed, other version of go can be compiled. go1.20.3 can be installed through gvm.

gvm install go1.20.3
gvm use go1.20.3 --default

Check to ensure that version 1.20.3 is being used as the system's default go version.

$ go version

go version go1.20.3 linux/amd64

Stand Alone Installation

Download the golang tarball

curl -OL

Unpack the tarball

sudo tar -C /usr/local -xvf go1.20.3.linux-amd64.tar.gz

Open the ~/.profile file to add Golang environment variables

nano ~/.profile

Edit the contents of ~/.profile to include the following variables

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin

Refresh the active profile

source ~/.profile

Verify go is installed

$ go version

go version go1.20.3 linux/amd64

Build Empowerd

Clone the Empowerchain source code and enter the directory

git clone
cd empowerchain

Checkout the desired version to build. The latest release tag can be found on the EmpowerChain Release Page

git checkout v1.0.0

Compile the empowerd binary

cd chain && make install

Verify empowerd was built and can be found in the existing PATH.

empowerd version --long

Configure Empowerd

Initialize the Empowerchain Node

Replace the <chain-id> field with the chain-id of the desired network.

empowerd init "custom_moniker" --chain-id <chain-id>

Example for the empowerchain-1 mainnet:

empowerd init "custom_moniker" --chain-id empowerchain-1

Retrieve the Genesis File

Retrieve a copy of the genesis file for the desired chain. The genesis file defines the initial state of the chain.

For the circulus-1 testnet use:

wget -O $HOME/.empowerchain/config/genesis.json

For empowerchain-1 mainnet use:

URL= && \
curl -L $URL | tar -xz -C $HOME/.empowerchain/config/

Set Seed nodes

Retrieve seeds from the Empowerchain official repo. All addresses follow the format of <NODE-ID>@<IP-ADDRESS>:<PORT>

For circulus-1 testnet use:

seeds="d6a7cd9fa2bafc0087cb606de1d6d71216695c25@" && \
sed -i -e 's|^seeds *=.*|seeds = "'$seeds'"|' $HOME/.empowerchain/config/config.toml

For empowerchain-1 mainnet use:

seeds=",,," && \
sed -i -e 's|^seeds *=.*|seeds = "'$seeds'"|' $HOME/.empowerchain/config/config.toml

Set the minimum gas price

The minimum gas price should be set in the empowerd configuration. The following command adds a minimum gas value of 0.025umpwr to the configuration.

sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025umpwr\"/" $HOME/.empowerchain/config/app.toml

Syncing Empowerd

There are three main ways to sync a node on Empowerchain: from scratch, state sync, and snapshots. Each of these has its own benefits and drawbacks.

Sync from genesis- Full network history is processed during the sync- Slow
- Requires the most disk space
- Upgrades must be handled at their appropriate block heights
- Required for Archive nodes
State Sync- Very Fast
- Low Disk Usage
- May be reliable than snapshots- Must be using the latest empowerd version
Snapshot- Reliable
- Moderately Fast
- Slower than state sync
- May require more disk space than state sync

Sync from genesis

To sync from genesis, simply start the empowerd daemon. No additional configuration is needed to set up this sync method.

State Sync

To sync from a state sync server, the config.toml file needs to be edited to include the state sync server details.

The values are not static, and will typically be provided by the state sync provider. The rpc_servers, trust_height, trust_hash, and trust_period values within the [statesync] section need to be set. Once set, state sync can be enabled by setting enabled = true in the [statesync] section of the config file.


Exact snapshot instructions will vary by provider, but the concept is the same for all of them. A compressed archive of the current chain data is downloaded, uncompressed, and extracted into the ~/.empowerd/data directory. Most snapshot providers include a script or set of instructions on how to download and extract the data properly based on their setup.

Starting Empowerd

Once configured, the daemon can be directly started to connect to the network. However, it is recommended to either use a systemd service file or Cosmovisor to control the empowerd daemon.

To start it directly, run the following:

empowerd start

To use a systemd service file without Cosmovisor, the service file must be created.

sudo tee /etc/systemd/system/empowerd.service > /dev/null <<EOF
Description=EmpowerChain Node

ExecStart=$(which empowerd) start


To use Cosmovisor to handle automatic upgrades, refer to the Cosmovisor Setup page.