Before you begin: This guide assumes you have already bridged your Sovereign license NFT from Arbitrum One to Autheo Mainnet. Complete that step first.Make sure you are bridging to the address you intend to use for creating the validator. That address must have enough THEO tokens for self-delegation and signing transactions. If you do not have a wallet yet, see Key management to create one and obtain its address before bridging.See: Bridging your Sovereign license NFT to Autheo Mainnet
https://docs.autheo.com/web-apps/bridge/overview
1. Chain reference
Ports (single node defaults):
2. Infrastructure requirements
Size your server to meet the following minimums before proceeding. Under-provisioned nodes are more likely to miss blocks and get jailed.3. Method A: systemd
3.1 Prerequisites
3.2 Build the binary
3.3 Join the network
All official configuration files are in the autheo-blockchain/networks repository.3.4 Configure the node
$HOME/.autheo/config/config.toml
$HOME/.autheo/config/app.toml
$HOME/.autheo/config/client.toml
3.5 Start with systemd
Create a dedicated, unprivileged system user to run the node as — do not run it as your own login user or asroot:
/etc/systemd/system/autheod.service, adjusting User, WorkingDirectory, and ExecStart for your system user:
4. Method B: Docker
The official image is published atghcr.io/autheo-blockchain/autheod.
Available tags:
For production validators, pin to a specific release tag rather than
latest so that container restarts do not pull an unexpected upgrade. Find release tags on the GHCR package page.4.1 Pull the image
4.2 Prepare the data directory
The node home inside the container is/root/.autheo. Mount a host directory to persist state across container restarts.
All
autheod commands inside the container must use --home /root/.autheo. To run commands against a running container from the host, use docker exec autheo-node autheod <command> --home /root/.autheo.4.3 Join the network
4.4 Configure the node
Apply config changes directly to the host-side directory. Use the samesed commands from section 3.4 — they operate on $HOME/.autheo/config/ which is mounted into the container.
4.5 Run the container
5. Sync methods
After completing the join and configure steps for your chosen method, select one of the following sync strategies.Option A: State sync (recommended)
Downloads a recent snapshot from a live sentry and syncs only the remaining blocks.State sync does not retain historical data before the snapshot height. If you need a full archive node, use genesis sync instead.
Option B: Genesis sync
Replays every block from block 1. Required only for a full archive node.The chain has had no governance upgrades since genesis — no additional setup is needed for current genesis sync.
mainnet/upgrades.json in the networks repo, following this structure:
plan_name is the exact string used in MsgSoftwareUpgrade. For each entry, create a matching cosmovisor directory with the corresponding binary.
6. Verify the node
Sync status —catching_up must be false when fully synced:
7. Key management
This chain useseth_secp256k1 keys.
Create a new key:
Address (hex) value (prefixed with 0x) when bridging your Sovereign license NFT and transferring THEO tokens to this address. Complete both steps before proceeding.
Keyring backends:
Import an existing key:
If you already have a wallet (MetaMask, Keplr, or any BIP-39 compatible wallet), import it using its mnemonic. The imported address must be the same one you bridged the Sovereign license NFT to and that holds enough THEO for self-delegation. Only do this if you understand the risk: entering a mnemonic on a server exposes it to that environment.
autheo...). All on-chain transactions must use this address, not the 0x hex form. Convert your EVM hex address (without the 0x prefix) using:
Bech32 Acc value from the output for all Autheo chain transactions.
8. Create a validator
Requirements:- Node is fully synced (
catching_up: false) - Sufficient
aauthbalance for self-delegation and fees - A Sovereign license owned by this account and bound to this validator address in BOUND status
x/licensedstaking module enforces at the MsgCreateValidator level that a Sovereign license in BOUND status exists on the validator address. The transaction is rejected if this condition is not met.
Step 1 — Verify your Sovereign license is BOUND:
create-validator triggers the BOUND→ACTIVE license transition automatically.
Step 3 — Verify the validator and license are active:
9. Troubleshooting
Cannot connect to EVM JSON-RPC
Confirm the JSON-RPC server is enabled and bound correctly inapp.toml:
Node not producing blocks / stuck
systemd:10. Claiming rewards
Once your validator isACTIVE, two independent reward streams accrue in parallel — neither one claims automatically, and neither expires.
NFT emission rewards (from your Sovereign license, via x/licensedistribution):
x/distribution — includes your commission):
docker exec autheo-node ... and --home /root/.autheo for Docker deployments.
See Staking and rewards for the full breakdown of both reward streams, rates by license tier, and the global emissions cap.