logo

Cosmos

ATOM
  • Network:

    Mainnet

  • Chain ID:

    cosmoshub-4

  • Current Node Version:

    v25.2.0

Overview

Cosmos is an ecosystem of interoperable, application-specific blockchains designed to create an “Internet of Blockchains.” Instead of relying on a single monolithic chain where all applications share the same execution environment, Cosmos enables independent blockchains to communicate and exchange value through standard protocols. The Cosmos Hub, secured by the ATOM token, acts as a key routing and coordination center within this network.

Cosmos separates core blockchain functions into modular components: consensus, networking, and application logic. Using the Cosmos SDK and CometBFT (formerly Tendermint), developers can build sovereign chains that define their own state machines, tokens, and governance rules, while still remaining connected to the wider ecosystem. This “app-chain” model lets projects optimize their chains for specific use cases such as DeFi, gaming, infrastructure, or identity.

Interoperability in Cosmos is powered by the Inter-Blockchain Communication (IBC) protocol. IBC allows blockchains to securely send tokens, messages, and other data between each other without relying on centralized bridges. This creates a composable environment where applications on different chains can integrate, share liquidity, and coordinate functionality.

Cosmos’ architecture leads to three major advantages:

  • Interoperability – IBC enables secure, standardized communication and asset transfer across many independent chains.
  • Sovereignty – Each chain controls its own governance, economics, and upgrades while still participating in the wider Cosmos ecosystem.
  • Customization & scalability – The Cosmos SDK makes it easier to build specialized blockchains that scale horizontally by adding more chains instead of overloading a single one.

In summary, Cosmos provides a modular, interoperable framework for building and connecting sovereign blockchains, making decentralized networks more flexible, scalable, and collaborative.

Public Endpoints

TypeEndpointLink
RPChttps://cosmos-mainnet-rpc.crouton.digital arrow right icon
APIhttps://cosmos-mainnet-api.crouton.digital arrow right icon
gRPCcosmos-mainnet-grpc.crouton.digital:14990
peerdef524b19130cbbc671ea6635d18f426f4afaa96@5.9.95.101:14956

Guide

INFOINFO

This guide provides a complete and reliable setup for running a Cosmos mainnet node and validator. Here you’ll find everything you need - from downloading binaries and configuration files to initializing the node, managing keys, applying snapshots, and maintaining a stable validator environment. Follow the steps carefully to ensure a smooth and secure deployment on the Cosmos network.

Prepare

Update and install packages

sudo apt update && sudo apt upgrade -y && \ sudo apt install curl tar wget clang pkg-config libssl-dev libleveldb-dev jq build-essential bsdmainutils git make ncdu htop screen unzip bc fail2ban htop -y

Installing Go

VER="1.22.0" cd $HOME && \ wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz" && \ sudo rm -rf /usr/local/go && \ sudo 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_profile && \ source $HOME/.bash_profile && \ go version

Binary

git clone unknow cosmos cd cosmos git checkout v25.2.0 make install gaiad version --long | grep -e version -e commit # version: v25.2.0 # commit: 6e74cf647f60ef59f4dfade16bd41ff890539fb0

Initialization

Initialize the node (replace VALIDATOR_NAME with your own)

gaiad init VALIDATOR_NAME --chain-id cosmoshub-4 && \ gaiad config chain-id cosmoshub-4 && \ gaiad config keyring-backend os

Genesis

Download genesis

wget https://storage.crouton.digital/mainnet/cosmos/files/genesis.json -O $HOME/.gaia/config/genesis.json

Addrbook

Download addrbook

wget https://storage.crouton.digital/mainnet/cosmos/files/addrbook.json -O $HOME/.gaia/config/addrbook.json

Configuration

EXTERNAL_IP=$(wget -qO- eth0.me) NODE_NUMBER="1" sed -i.bak \ -e "s/\(proxy_app = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))58\"/" \ -e "s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))57\"/" \ -e "s/\(pprof_laddr = \"\)\([^:]*\):\([0-9]*\).*/\1localhost:$(($NODE_NUMBER + 60))60\"/" \ -e "/\[p2p\]/,/^\[/{s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))56\"/}" \ -e "/\[p2p\]/,/^\[/{s/\(external_address = \"\)\([^:]*\):\([0-9]*\).*/\1${EXTERNAL_IP}:$(($NODE_NUMBER + 266))56\"/; t; s/\(external_address = \"\).*/\1${EXTERNAL_IP}:$(($NODE_NUMBER + 266))56\"/}" \ -e "s/\(prometheus_listen_addr = \":\)\([0-9]*\).*/\1$(($NODE_NUMBER + 266))60\"/" $HOME/.gaia/config/config.toml sed -i.bak \ -e "/\[api\]/,/^\[/{s/\(address = \"tcp:\/\/\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 13))17\4/}" \ -e "/\[grpc\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 90))90\4/}" \ -e "/\[grpc-web\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 90))91\4/}" \ -e "/\[json-rpc\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 85))45\4/}" \ -e "/\[json-rpc\]/,/^\[/{s/\(ws-address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 85))46\4/}" $HOME/.gaia/config/app.toml echo "export NODE=http://localhost:$(($NODE_NUMBER + 266))57" >> $HOME/.bash_profile && \ source $HOME/.bash_profile && \ gaiad config node $NODE

Create a service file

sudo tee /etc/systemd/system/gaiad.service > /dev/null <<EOF [Unit] Description=cosmos_node After=network.target [Service] User=$USER Type=simple ExecStart=$(which gaiad) start --home $HOME/.gaia Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF

Start the node

sudo systemctl daemon-reload && \ sudo systemctl enable gaiad && \ sudo systemctl restart gaiad && \ sudo journalctl -u gaiad -f -o cat

Snapshot

Block HeightSizeIndexerLast SnapshotDownload
594Gnull arrow right icon

Restore node from snapshot

sudo apt install lz4 -y && \ sudo systemctl stop gaiad && \ cp $HOME/.gaia/data/priv_validator_state.json $HOME/.gaia/priv_validator_state.json.backup && \ rm -rf $HOME/.gaia/data && \ curl https://storage.crouton.digital/mainnet/cosmos/snapshots/cosmos_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.gaia && \ mv $HOME/.gaia/priv_validator_state.json.backup $HOME/.gaia/data/priv_validator_state.json && \ sudo systemctl restart gaiad && \ sudo journalctl -u gaiad -f

State Sync

Restore node from state sync

SNAP_RPC="https://cosmos-mainnet-rpc.crouton.digital:443" && \ sudo systemctl stop gaiad && \ cp $HOME/.gaia/data/priv_validator_state.json $HOME/.gaia/priv_validator_state.json.backup && \ gaiad tendermint unsafe-reset-all --home $HOME/.gaia --keep-addr-book && \ peers="def524b19130cbbc671ea6635d18f426f4afaa96@5.9.95.101:14956" && \ sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.gaia/config/config.toml && \ LATEST_HEIGHT=$(curl -s "$SNAP_RPC/block" | jq -r .result.block.header.height) && \ BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000)) && \ TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) && \ echo "$LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH" && sleep 2 && \ sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"| ; s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $HOME/.gaia/config/config.toml && \ mv $HOME/.gaia/priv_validator_state.json.backup $HOME/.gaia/data/priv_validator_state.json && \ sudo systemctl restart gaiad && \ sudo journalctl -u gaiad -f

Upgrade Node

VER="v25.2.0" git clone unknow cosmos && \ cd $HOME && \ rm -rf cosmos && \ git clone unknow cosmos && \ cd cosmos && \ git checkout tags/$VER -b $VER && \ make install && \ sudo systemctl restart gaiad && \ sudo journalctl -u gaiad -f

Delete Node

sudo systemctl stop gaiad && \ sudo systemctl disable gaiad && \ sudo rm -rf /etc/systemd/system/gaiad.service && \ sudo rm "$(which gaiad)" && \ sudo rm -rf "$HOME/.gaia"

Key management

# This command generates a new wallet with a unique keypair. # Use this to create a secure, brand-new wallet for transactions. # Your wallet name = "wallet" gaiad keys add wallet

Validator management

gaiad tx staking create-validator \ --amount 1000000uatom \ --moniker "VALIDATOR_NAME" \ --identity "" \ --website "" \ --details "" \ --from wallet \ --commission-rate 0.1 \ --commission-max-rate 0.2 \ --commission-max-change-rate 0.01 \ --min-self-delegation 1 \ --pubkey $(celestia-appd tendermint show-validator) \ --chain-id cosmoshub-4 \ --gas auto \ --gas-adjustment 1.4 \ --gas-prices 0.002uatom \ -y

Validator commands

# Retrieves comprehensive information regarding the validator. # This command is utilized to fetch details about the current validator, including its address, public key, and associated data. # Your wallet name = "wallet" gaiad q staking validator $(gaiad keys show wallet --bech val -a)

Onchain

# Withdraw all accumulated rewards from your account. # This command retrieves and withdraws all rewards earned from staking. # Your wallet name = "wallet" gaiad tx distribution withdraw-all-rewards --from wallet --chain-id cosmoshub-4 --gas-adjustment=1.15 --gas auto --gas-prices 0.002uatom -y

Chat With Us

Connect directly with our team by filling out the contact form. Whether you’re looking to optimize staking yields, deploy validator nodes, integrate RPC services, or find a reliable validator partner for your blockchain or project — we’re here to help.

We can explore Web3 and blockchain infrastructure solutions together and tailor our support to your long-term goals. Schedule a meeting, and let’s discuss your long-term goals.

Crouton Digital respects your privacy. By submitting this form, you are acknowledging that you have read and agree to our Privacy Policy, which details how we collect and use your information.