#!/bin/bash set -e CHAIN_ID="genex-testnet-1" DENOM="agnx" HOME_DIR="/home/genex/.genexd" KEYRING="test" GENESIS="$HOME_DIR/config/genesis.json" echo "[1/6] Initializing chain..." genexd init "genex-us-east-1" --chain-id "$CHAIN_ID" --home "$HOME_DIR" echo "[2/6] Patching genesis for Genex denom (agnx)..." # Replace default denoms with agnx cat "$GENESIS" | jq ' # EVM module: set denom to agnx .app_state.evm.params.evm_denom = "agnx" | .app_state.evm.params.extended_denom_options.extended_denom = "agnx" | # Staking: bond denom .app_state.staking.params.bond_denom = "agnx" | # Mint: mint denom .app_state.mint.params.mint_denom = "agnx" | # Gov: min deposit denom .app_state.gov.params.min_deposit[0].denom = "agnx" | .app_state.gov.params.expedited_min_deposit[0].denom = "agnx" | # Bank: add denom metadata for agnx (18 decimals for EVM compat) .app_state.bank.denom_metadata = [{ "description": "The native staking and gas token of Genex Chain", "denom_units": [ {"denom": "agnx", "exponent": 0, "aliases": ["attoGNX"]}, {"denom": "GNX", "exponent": 18, "aliases": []} ], "base": "agnx", "display": "GNX", "name": "Genex Token", "symbol": "GNX" }] | # FeeMarket: use zero gas for dev .app_state.feemarket.params.min_gas_price = "0.000000000000000000" | .app_state.feemarket.params.base_fee = "1000000000.000000000000000000" ' > "${GENESIS}.tmp" && mv "${GENESIS}.tmp" "$GENESIS" echo "[3/6] Creating validator key..." genexd keys add validator --keyring-backend "$KEYRING" --home "$HOME_DIR" 2>&1 echo "[4/6] Adding genesis account..." ADDR=$(genexd keys show validator -a --keyring-backend "$KEYRING" --home "$HOME_DIR") genexd genesis add-genesis-account "$ADDR" "500000000000000000000000000${DENOM}" --home "$HOME_DIR" --keyring-backend "$KEYRING" echo "[5/6] Creating genesis transaction..." genexd genesis gentx validator "250000000000000000000000000${DENOM}" \ --chain-id "$CHAIN_ID" \ --moniker "genex-us-east-1" \ --commission-rate "0.10" \ --commission-max-rate "0.20" \ --commission-max-change-rate "0.01" \ --min-self-delegation "1" \ --keyring-backend "$KEYRING" \ --home "$HOME_DIR" echo "[6/6] Collecting genesis transactions and validating..." genexd genesis collect-gentxs --home "$HOME_DIR" # Configure node sed -i "s/minimum-gas-prices = \"\"/minimum-gas-prices = \"0${DENOM}\"/" "$HOME_DIR/config/app.toml" # Enable API sed -i "/\[api\]/,/\[/ s/enable = false/enable = true/" "$HOME_DIR/config/app.toml" # Enable JSON-RPC sed -i "/\[json-rpc\]/,/\[/ s/enable = false/enable = true/" "$HOME_DIR/config/app.toml" sed -i "s/address = \"127.0.0.1:8545\"/address = \"0.0.0.0:8545\"/" "$HOME_DIR/config/app.toml" sed -i "s/ws-address = \"127.0.0.1:8546\"/ws-address = \"0.0.0.0:8546\"/" "$HOME_DIR/config/app.toml" # CORS sed -i "s/cors_allowed_origins = \[\]/cors_allowed_origins = [\"*\"]/" "$HOME_DIR/config/config.toml" sed -i "s/laddr = \"tcp:\/\/127.0.0.1:26657\"/laddr = \"tcp:\/\/0.0.0.0:26657\"/" "$HOME_DIR/config/config.toml" # Set EVM chain ID sed -i "s/evm-chain-id = 262144/evm-chain-id = 8888/" "$HOME_DIR/config/app.toml" 2>/dev/null || true echo "" echo "Genesis initialization complete!" echo "Chain ID: $CHAIN_ID" echo "Validator: $ADDR" echo "EVM Chain ID: 8888" echo "Denom: $DENOM (GNX, 18 decimals)"