Dymension Node Installation and Validator Setup
Setting up a Dymension node requires careful configuration of the underlying Linux environment and the Cosmos-based dymd binary. This guide outlines the end-to-end process from server preparation to validator registration.
Hardware Requirements
Section titled “Hardware Requirements”To ensure network stability and avoid slashing during high-traffic periods, verify your infrastructure meets the following minimum specifications:
| Resource | Minimum Requirement |
|---|---|
| CPU | 8 Cores |
| RAM | 64GB |
| Storage | 1TB NVMe SSD |
| Network | 100 Mbps symmetric bandwidth |
Server Preparation
Section titled “Server Preparation”Install Dependencies
Section titled “Install Dependencies”Update the system packages and install the essential build tools required for compiling Go-based blockchain applications.
sudo apt update && sudo apt upgrade -ysudo apt install curl lz4 tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc chrony liblz4-tool -yInstall Go Toolchain
Section titled “Install Go Toolchain”Dymension requires a specific version of the Go programming language. The following script installs Go version 1.21.3 and updates your environment variables.
cd $HOMEver="1.21.3"wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"sudo rm -rf /usr/local/gosudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"rm "go$ver.linux-amd64.tar.gz"echo "export PATH=\$PATH:/usr/local/go/bin:\$HOME/go/bin" >> $HOME/.bash_profilesource $HOME/.bash_profilego versionBinary Installation
Section titled “Binary Installation”Build from Source
Section titled “Build from Source”Clone the official repository and check out the recommended version tag for the current network.
cd $HOMEgit clone https://github.com/dymensionxyz/dymension.gitcd dymensiongit checkout v2.0.0-alpha.8make installVerification
Section titled “Verification”Confirm the installation by checking the binary version and commit hash.
dymd version --longNode Initialization
Section titled “Node Initialization”Initialize Configuration
Section titled “Initialize Configuration”Create the initial configuration files by defining your node moniker and the target chain ID.
dymd init mynode --chain-id=froopyland_100-1dymd config chain-id froopyland_100-1Wallet Management
Section titled “Wallet Management”Create a new wallet or restore an existing one using your mnemonic phrase.
# Create a new walletdymd keys add <wallet_name>
# OR Restore existing walletdymd keys add <wallet_name> --recoverNetwork Configuration
Section titled “Network Configuration”Download the latest genesis.json and addrbook.json to ensure your node can connect to the peer-to-peer network.
# Genesiswget https://raw.githubusercontent.com/111STAVR111/props/main/Dymension/Testnet/genesis.json -O $HOME/.dymension/config/genesis.json
# Addrbookwget -O $HOME/.dymension/config/addrbook.json "https://raw.githubusercontent.com/111STAVR111/props/main/Dymension/Testnet/addrbook.json"Connectivity and Gas Settings
Section titled “Connectivity and Gas Settings”Configure seeds, persistent peers, and minimum gas prices to facilitate block propagation.
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0udym\"/;" ~/.dymension/config/app.tomlexternal_address=$(wget -qO- eth0.me)sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:26656\"/" $HOME/.dymension/config/config.toml
peers="e7857b8ed09bd0101af72e30425555efa8f4a242@148.251.177.108:20556,3410e9bc9c429d6f35e868840f6b7a0ccb29020b@46.4.5.45:20556"seeds="ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@testnet-seeds.polkachu.com:20556"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.dymension/config/config.tomlsed -i.bak -e "s/^seeds =.*/seeds = \"$seeds\"/" $HOME/.dymension/config/config.tomlPerformance Optimization
Section titled “Performance Optimization”Pruning Configuration
Section titled “Pruning Configuration”To save disk space, configure custom pruning settings that retain only the most recent states.
sed -i \ -e 's|^pruning *=.*|pruning = "custom"|' \ -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \ -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \ -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \ $HOME/.dymension/config/app.tomlService Management (systemd)
Section titled “Service Management (systemd)”Create a systemd unit file to ensure the node runs in the background and restarts automatically on failure.
sudo tee /etc/systemd/system/dymd.service > /dev/null <<EOF[Unit]Description=Dymension NodeAfter=network.target
[Service]Type=simpleUser=$USERExecStart=$(which dymd) startRestart=on-failureRestartSec=10LimitNOFILE=65535
[Install]WantedBy=multi-user.targetEOF
sudo systemctl daemon-reloadsudo systemctl enable dymdState Sync and Snapshot
Section titled “State Sync and Snapshot”Using a snapshot significantly reduces the time required for a new node to catch up to the current block height.
cd $HOMEsudo systemctl stop dymdcp $HOME/.dymension/data/priv_validator_state.json $HOME/.dymension/priv_validator_state.json.backuprm -rf $HOME/.dymension/datacurl -L https://snapshots.kjnodes.com/dymension-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.dymensionmv $HOME/.dymension/priv_validator_state.json.backup $HOME/.dymension/data/priv_validator_state.jsonsudo systemctl restart dymd && journalctl -u dymd -f -o catValidator Creation
Section titled “Validator Creation”Once your node is fully synchronized, you can register it as a validator. Ensure your wallet has sufficient funds for the self-delegation and gas fees.
dymd tx staking create-validator \--amount 1000000000000000000adym \--pubkey $(dymd tendermint show-validator) \--moniker="Your_Moniker_Name" \--identity="KEYBASE_ID" \--details="Description of your node" \--website="https://yourwebsite.com" \--chain-id="froopyland_100-1" \--commission-rate="0.10" \--commission-max-rate="0.20" \--commission-max-change-rate="0.01" \--min-self-delegation="1" \--from=<wallet_name> \--gas="auto" \--gas-adjustment=1.5 \--fees 7000000000000000adym -yNode Uninstallation
Section titled “Node Uninstallation”Warning: These commands will permanently delete all node data, including keys and database files.
sudo systemctl stop dymdsudo systemctl disable dymdsudo rm /etc/systemd/system/dymd.servicesudo systemctl daemon-reloadcd $HOMErm -rf dymension .dymensionrm -rf $(which dymd)