Run a full node

For validators, developers, or users who need full control and don’t want to rely on public endpoints, you can run your own synced node.

Join the Devnet

Running a full node gives you complete control, better performance, and eliminates dependency on public infrastructure.

Prerequisites

  • Minimum hardware requirements:
    • 4+ CPU cores
    • 8GB+ RAM
    • 500GB+ SSD storage
    • Reliable internet connection

Quick Setup

  1. Install dependencies (Ubuntu/Debian):
sudo apt update && sudo apt install -y \
  build-essential git curl wget jq lz4 liblz4-tool \
  protobuf-compiler pkg-config unzip
  1. Install Go 1.22+:
GO_VERSION=1.22.4
curl -LO "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
tar -C /usr/local -xzf "go${GO_VERSION}.linux-amd64.tar.gz"
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc
  1. Build the binary:
git clone https://github.com/cosmos/evm.git
cd evm
make install  # installs 'evmd'
  1. Initialize your node: evmd init "your-node-name" --chain-id 4321

  2. Get the genesis file: curl -s https://devnet-1-rpc.ib.skip.build/genesis | jq .result.genesis > ~/.evmd/config/genesis.json

  3. Configure peers (add to ~/.evmd/config/config.toml):

persistent_peers = "peer1@ip1:26656,peer2@ip2:26656"
seeds = "seed1@ip1:26656,seed2@ip2:26656"
  1. Start syncing: evmd start

State Sync (Faster Alternative)

Instead of syncing from genesis, use state sync for faster setup:

config.toml
# Configure state sync in config.toml
[statesync]
enable = true
rpc_servers = "https://devnet-1-rpc.ib.skip.build:443,https://devnet-1-rpc.ib.skip.build:443"
trust_height = 1000000
trust_hash = "TRUST_HASH_HERE"

Endpoints After Setup

Once your node is running, it will expose:

Cosmos RPC:     http://localhost:26657
Cosmos gRPC:    http://localhost:9090
Cosmos REST:    http://localhost:1317
EVM RPC:        http://localhost:8545
EVM WebSocket:  ws://localhost:8546

Monitoring

Monitor your node’s sync status:

# Check if syncing
evmd status | jq .SyncInfo.catching_up

# View latest block
evmd status | jq .SyncInfo.latest_block_height

Next Steps

  • Validator Setup: If you want to become a validator, see the validator guide
  • Configuration: Tune your node for performance and security
  • Monitoring: Set up alerting and metrics collection
  • Backup: Implement backup strategies for your validator key

Your node will now be fully synced with the devnet and can be used for any purpose - from development to validation to serving your own applications.