$ agent --node validator

last_verified: 2026-06-20 · raw markdown · human version

Validator node — agent instructions

CONSTANTS

CHAIN_ID=rogue_4221-1
BINARY=rogued
DENOM=arogue
DECIMALS=18
NODE_HOME=~/.evmd
GENESIS_URL=http://dl.roguelayer.one/genesis.json
GENESIS_SHA256=1899469fc55dc292891e4d3d12d997524939a5bd7f1ddb1a37f4a831a8e5bf4d
# Binaries served gzip-compressed: curl the .gz, `gunzip -f`, then sha256 the decompressed file.
INSTALL_URL_AMD64=http://dl.roguelayer.one/rogued-linux-amd64.gz
INSTALL_SHA256_AMD64=a7f310a3211b49093e0ba2b30d93a0025ccbf08c5de11d1907a596638818b086  # decompressed
INSTALL_URL_ARM64=http://dl.roguelayer.one/rogued-linux-arm64.gz
INSTALL_SHA256_ARM64=3ad2e0130c6e504a12f79d993c404484d606b035801626695ee0008aa06ad729  # decompressed
SEED=a4a5cdc25a5809acaedc68325019855f01fa8b35@seed.roguelayer.one:26656
VALIDATOR_JSON_TMPL=http://dl.roguelayer.one/validator.json.tmpl
FAUCET_URL=https://faucet.roguelayer.one
FAUCET_GRANT_ROGUE=11000
MIN_GAS_PRICE=0.0001arogue
P2P_PORT=26656

KEY FACTS

Fact Value
Chain ID (Cosmos / all tx) rogue_4221-1
EVM chain-id (MetaMask only) 4221
Node home ~/.evmd
Denom arogue (18 decimals; 1 ROGUE = 1000000000000000000arogue)
Key type eth_secp256k1, coin-type 60
Keyring --keyring-backend file
CometBFT subcommand rogued comet … (NOT tendermint)
Validator JSON style SDK v0.53 JSON file (NOT flag form)
Sync method blocksync only (no state-sync available)
Faucet `https://faucet.roguelayer.one/send?address=<rogue1…

PREFLIGHT

Abort if any check fails.

  • df -BG ${HOME} | awk 'NR==2 {print $4}' | tr -d G → >= 200
  • awk '/MemTotal/ {print int($2/1024/1024)}' /proc/meminfo → >= 16
  • command -v jq curl → both exist
  • Disk is NVMe/SSD (CometBFT fsyncs every block; HDD will cause jail)

STEPS

# ─── STEP 1 — one-command install ──────────────────────────────────────────
# Installs binary, genesis, peers, cosmovisor, systemd service, starts node.
bash <(curl -sL http://dl.roguelayer.one/install.sh)

# Verify service is running:
systemctl is-active rogued          # expect: active
rogued version                      # expect: version string

# ─── STEP 2 — wait for blocksync ───────────────────────────────────────────
until rogued status 2>&1 | jq -e '.sync_info.catching_up == false' >/dev/null 2>&1; do
  sleep 30
done
# Verify:
rogued status 2>&1 | jq '.sync_info | {latest_block_height, catching_up}'
curl -s localhost:26657/net_info | jq '.result.n_peers'   # must be > 0

# ─── STEP 3 — create operator key ──────────────────────────────────────────
rogued keys add validator --keyring-backend file
# STOP: record mnemonic and keyring password offline before continuing.
rogued keys show validator -a --keyring-backend file      # rogue1... address

# ─── STEP 4 — fund operator address (public faucet) ────────────────────────
ADDR=$(rogued keys show validator -a --keyring-backend file)
curl -s "https://faucet.roguelayer.one/send?address=$ADDR"   # ~11,000 ROGUE, 1/address/24h
# Grant lands in the next block (~5s). Then verify:
sleep 6
rogued q bank balances "$ADDR"
# Abort if balance is zero (re-check after a few blocks; respect the 24h rate limit).

# ─── STEP 5 — create validator (SDK v0.53 JSON form) ───────────────────────
PUBKEY=$(rogued comet show-validator)
MONIKER="${MONIKER:-agent-validator}"

cat > ~/validator.json <<EOF
{
  "pubkey": ${PUBKEY},
  "amount": "10000000000000000000000arogue",
  "moniker": "${MONIKER}",
  "identity": "",
  "website": "",
  "security": "",
  "details": "",
  "commission-rate": "0.10",
  "commission-max-rate": "0.20",
  "commission-max-change-rate": "0.01",
  "min-self-delegation": "1000000000000000000"
}
EOF

rogued tx staking create-validator ~/validator.json \
  --from validator \
  --keyring-backend file \
  --chain-id rogue_4221-1 \
  --gas auto --gas-adjustment 1.5 \
  --gas-prices 0.0001arogue \
  -y
# Record the tx hash from output.

VERIFY_FINAL

rogued q staking validator \
  $(rogued keys show validator --bech val -a --keyring-backend file)
# Expect: status: BOND_STATUS_BONDED

rogued q slashing signing-info $(rogued comet show-address)
# Watch missed_blocks_counter — must stay low.

FAILURE_MODES

Code / symptom Cause Fix
catching_up: true forever, n_peers: 0 Firewall or seed unreachable nc -vz seed.roguelayer.one 26656; open inbound 26656
insufficient funds (tx code 5) Balance too low or wrong denom Verify balance is in arogue; top up at https://faucet.roguelayer.one (1 grant/address/24h)
out of gas (tx code 11) gas-adjustment too low Retry with --gas-adjustment 2.0
key not found: validator Wrong keyring backend Add --keyring-backend file
Node halts at specific height Scheduled upgrade Replace binary (or pre-stage in cosmovisor) and restart

SAFETY

  • NEVER run two rogued processes with the same priv_validator_key.json. Double-sign = 5% slash + permanent tombstone (irreversible).
  • Back up ~/.evmd/config/priv_validator_key.json AND ~/.evmd/data/priv_validator_state.json before STEP 5.
  • Downtime: miss >50 of rolling 100 blocks → 1% slash + 10-min jail. Unjail: rogued tx slashing unjail --from validator --keyring-backend file --chain-id rogue_4221-1 --gas auto --gas-prices 0.0001arogue