$ 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→ >= 200awk '/MemTotal/ {print int($2/1024/1024)}' /proc/meminfo→ >= 16command -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
roguedprocesses with the samepriv_validator_key.json. Double-sign = 5% slash + permanent tombstone (irreversible). - Back up
~/.evmd/config/priv_validator_key.jsonAND~/.evmd/data/priv_validator_state.jsonbefore 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