End-to-end instructions for running a Terra Classic mainnet validator.

Versions and network endpoints

ComponentVersion
Terra Corev3.6.0Copy v3.6.0
Oracle Feederv3.1.6Copy v3.1.6
Gogo1.22.12Copy go1.22.12
EndpointURL
RPChttps://terra-classic-rpc.publicnode.com
LCDhttps://terra-classic-lcd.publicnode.com
gRPCgrpc://terra-classic-grpc.publicnode.com:443Copy grpc://terra-classic-grpc.publicnode.com:443

Tip

Keep Binodes (https://api-lunc-rpc.binodes.comCopy https://api-lunc-rpc.binodes.com, https://api-lunc-lcd.binodes.comCopy https://api-lunc-lcd.binodes.com) configured as secondaries. Mirror your own sentry relay to avoid depending entirely on public endpoints.

Hardware prerequisites

  • Linux server (Ubuntu or Debian recommended)
  • 6+ CPU cores (8+ recommended)
  • 64 GB RAM minimum
  • Swap space configured for cases of memory pressure
  • 2 TB NVMe SSD (1 TB may work for fully pruned nodes but is not recommended)

Install toolchain and build terrad

  1. Follow the instructions in System configuration and Build Terra Core.

Bootstrap chain data

  1. Initialise the node configuration.

    BASH
    terrad init <moniker>
  2. Download the latest address book and genesis files.

    BASH
    cd ~/.terra/config
    wget -O addrbook.json "https://snapshots.hexxagon.io/cosmos/terra-classic/columbus-5/addrbook.json"
    wget -O genesis.json "https://snapshots.hexxagon.io/cosmos/terra-classic/columbus-5/genesis.json"
  3. In config/app.tomlCopy config/app.toml, disable fast IAVL (iavl-disable-fastnode = trueCopy iavl-disable-fastnode = true) before restoring snapshots. Terra Classic Core v3 enables fast-node by default; validate this flag matches snapshot provider requirements.

  4. Fetch a recent snapshot (replace the URL with the most recent archive).

    BASH
    cd ~/.terra
    mv data data~backup
    wget -O snapshot.tar.lz4 "https://snapshots.publicnode.com/terra-classic-pruned-25311240-25311250.tar.lz4"
    # or
    # wget -O snapshot.tar.lz4 "https://snapshots.hexxagon.io/cosmos/terra-classic/columbus-5/snapshot-goleveldb-25309877.tar.lz4"
    lz4cat snapshot.tar.lz4 | tar xvf -
  5. Start the node and confirm sync progress.

    BASH
    terrad start
    terrad status

Join the validator set

  1. Create a signing key.

    BASH
    terrad keys add valwallet
    terrad keys list
  2. Fund valwalletCopy valwallet with LUNC from an exchange or an existing wallet. Keep at least 10,000 LUNC to buffer against gas prices and oracle feeder set up.

  3. Submit the validator registration (adjust commission and moniker as required).

    BASH
    terrad tx staking create-validator \
      --amount "10000000uluna" \
      --commission-max-change-rate "0.01" \
      --commission-max-rate "0.2" \
      --commission-rate "0.05" \
      --min-self-delegation 1 \
      --pubkey "$(terrad tendermint show-validator)" \
      --moniker "myvalidator" \
      --chain-id columbus-5 \
      --gas auto \
      --gas-prices 28.325uluna \
      --gas-adjustment 1.4 \
      --from valwallet
  4. Verify the validator status.

    BASH
    terrad q staking validators | grep -A6 "myvalidator"

Warning

Some validator parameters (for example commission-max-rateCopy commission-max-rate) are immutable once set. Double-check every flag before broadcasting create-validatorCopy create-validator.

Oracle feeder setup

  1. Create an authorised feeder key and delegate privileges.

    BASH
    terrad keys add feederwallet
    terrad tx oracle set-feeder <feederwallet> --from valwallet --chain-id columbus-5 --gas auto --gas-prices 30uluna --gas-adjustment 2
  2. Enable the LCD API locally by editing ~/.terra/config/app.tomlCopy ~/.terra/config/app.toml and setting enable = trueCopy enable = true in the [api]Copy [api] section, then restart the node. Set max-open-connectionsCopy max-open-connections to at least 1000Copy 1000 if exposing to feeders and tooling.

  3. Deploy the oracle price server using Docker Compose or systemd. The binary now ships via GitHub releases; review the oracle-feeder repository for updated flags. Example command:

    BASH
    npm start vote -- \
      -d http://localhost:8532/latest \
      --lcd-url http://127.0.0.1:1317 \
      --validators <your-valoper-address> \
      --password <wallet-password>

Unbonding and shutdown checklist

  • Use terrad tx staking unbondCopy terrad tx staking unbond to undelegate your stake before powering down the validator:

    BASH
    terrad tx staking unbond <your-valoper-address> 10000000uluna --from valwallet --chain-id columbus-5 --gas auto --gas-prices 30uluna --gas-adjustment 2
  • Confirm the validator reports status: BOND_STATUS_UNBONDINGCopy status: BOND_STATUS_UNBONDING before shutting down services.

Troubleshooting

  • Feeder wallet not found: Ensure the feeder address holds a small LUNC balance so the chain recognises the account.
  • Feeder not submitting votes: Confirm the LCD API is enabled locally and that the feeder/price server versions match the versions specified above. Check for vote_periodCopy vote_period changes after network upgrades and adjust /etc/systemd/system/oracle-feeder.serviceCopy /etc/systemd/system/oracle-feeder.service accordingly.