#!/bin/sh # cosmos-hub (gaiad) entrypoint — family C, pure CometBFT (no EL). Thin: sources the # shared cometbft-common.sh and orchestrates init + statesync bootstrap + start. # Genesis replay across ~25 gaia governance upgrades is impractical, so we statesync # near head with the current binary. Serves CometBFT RPC :26657 (the dshackle upstream). set -e . /usr/local/bin/cometbft-common.sh HOME_DIR="/root/.gaia" CONFIG_DIR="$HOME_DIR/config" CHAIN_ID="${CHAIN_ID:-cosmoshub-4}" GENESIS_URL="${GENESIS_URL:-https://github.com/cosmos/mainnet/raw/master/genesis/genesis.cosmoshub-4.json.gz}" STATESYNC_RPC="${STATESYNC_RPC:-https://cosmos-rpc.polkachu.com:443}" MIN_GAS="${MIN_GAS:-0.005uatom}" MONIKER="${MONIKER:-rpc-node}" ct_apk curl jq if gaiad init "$MONIKER" --chain-id "$CHAIN_ID" --home "$HOME_DIR" >/dev/null 2>&1; then ct_log "fresh init; fetching genesis" ct_fetch "$GENESIS_URL" "$CONFIG_DIR/genesis.json.gz" required if gzip -t "$CONFIG_DIR/genesis.json.gz" 2>/dev/null; then gunzip -f "$CONFIG_DIR/genesis.json.gz" else mv "$CONFIG_DIR/genesis.json.gz" "$CONFIG_DIR/genesis.json" # served plain, not gzipped fi ct_localize_home "$CONFIG_DIR" ct_set_min_gas_prices "$CONFIG_DIR/app.toml" "$MIN_GAS" else ct_log "already initialized, continuing" fi # Serve RPC on all interfaces (dshackle/traefik upstream); default is 127.0.0.1. sed -i '/^\[rpc\]/,/^\[/{s|^laddr = .*|laddr = "tcp://0.0.0.0:26657"|}' "$CONFIG_DIR/config.toml" ct_patch_p2p "$CONFIG_DIR/config.toml" "$IP" "${P2P_PORT:-26656}" ct_merge_seeds "$CONFIG_DIR/config.toml" "$SEEDS" ct_set_persistent_peers "$CONFIG_DIR/config.toml" "$PERSISTENT_PEERS" ct_set_moniker "$CONFIG_DIR/config.toml" "$MONIKER" ct_configure_statesync "$CONFIG_DIR/config.toml" "$STATESYNC_RPC" # internally skips if data/application.db exists ct_ensure_wasm "$HOME_DIR" "$WASM_SNAPSHOT_URL" # seeds CosmWasm/IBC-08 wasm if missing (statesync omits them) ct_seed_priv_validator_state "$HOME_DIR" exec gaiad start --home "$HOME_DIR" --minimum-gas-prices "$MIN_GAS" "$@"