Asentum

Run a Node

Run a Validator

End-to-end guide · Estimated read time: 10 minutes

Updated 2026-09-09: chain 1418, Aura block production plus GRANDPA finality, 500 ASE minimum bond, validator client live via the VPS installer and Operator app.

Testnet live

The validator program is live on the public testnet (chain 1418). Multiple validators across three continents produce ~2-second blocks under Aura block production, with GRANDPA providing stake-weighted, two-thirds finality. Anyone can join today using any of the three methods below.

TL;DR

Three ways to run a validator, all producing the same blocks with the same consensus code:

  • Desktop app - download Asentum Operator, create a wallet, click Stake. Zero terminal.
  • VPS one-liner - curl -fsSL testnet.asentum.com/install/validator | bash on a fresh Ubuntu/Debian box. Fully automated.
  • Build from source, a from-source build path is planned for a future release. Method 1 and Method 2 already run the same node software today.

Minimum stake: 500 ASE. Get test ASE from the faucet.

How Asentum validators work

Asentum produces blocks with Aura (slot-based, one validator assigned per slot) and finalizes them with GRANDPA (stake-weighted, two-thirds). Every validator who has bonded at least 500 ASE into the staking system contract is eligible for a proposer slot. The validator set scales to hundreds.

  • Liveness-aware committee. Validators can come and go without halting the chain. A slow or offline validator costs at most a skipped slot, not a stalled chain, so if your laptop sleeps the schedule simply moves on to the next validator and keeps producing.
  • Post-quantum signatures. Every block proposal and GRANDPA vote is signed with ML-DSA-65 (Dilithium3). Your validator key is a Dilithium3 keypair, not ECDSA.
  • HTTP networking. Nodes sync via HTTP pull-based block fetching and POST-based vote gossip. No libp2p, no TCP sockets to configure.
  • ~2-second slots. Aura targets a 2-second slot time. GRANDPA finality trails the head by a few blocks and is stake-weighted, so a small or offline minority cannot freeze finality.

Requirements

ResourceMinimum
CPU2-core x86_64 or ARM64
RAM4 GB
Storage10 GB free (SSD recommended)
NetworkBroadband internet
Stake500 ASE minimum (no hard cap; 10% per-block reward cap handles concentration)
OSmacOS 12+, Windows 10+, Ubuntu 22.04+, Debian 12+

Method 1 - Desktop app (macOS / Windows)

The easiest path. No terminal, no config files. Download from the downloads page.

  1. Download and install. Open the .dmg (macOS) or run the .exe installer (Windows).
  2. Create your wallet. On first launch, set a password. The app generates a Dilithium3 keypair and encrypts it with scrypt + AES-GCM-256.
  3. Sync the chain. The app syncs from genesis via the public testnet peers. A progress bar shows live sync state. Typical first sync: 2-10 minutes.
  4. Fund your wallet. Click the faucet button in the dashboard to request test ASE. You need at least 500 ASE to bond.
  5. Stake. Enter your password, click "Stake & Start Validating." The app signs a bond(pubKey) transaction and broadcasts it. Your node enters the active set within ~10 blocks.
  6. Leave it running. Close the window - the app minimizes to the system tray and keeps producing blocks in the background. Quit from the tray menu to fully stop.

For the full desktop app guide, see Asentum Operator.

Method 2 - VPS one-liner (Ubuntu / Debian)

For headless servers. One command does everything - installs dependencies, downloads the node bundle and a chain snapshot, generates a validator key, sets up systemd, syncs remaining blocks from peers, funds via faucet, and auto-bonds into the active set.

curl -fsSL https://testnet.asentum.com/install/validator | bash

What the installer does, step by step:

  1. Installs Node.js 22 if not present.
  2. Downloads the validator bundle (~45 MB) to /opt/asentum/chain.
  3. Downloads a chain snapshot (~32 MB) to /opt/asentum/data - skips full replay from block 0, only syncs the remaining blocks from peers.
  4. Generates a Dilithium3 validator keypair at /opt/asentum/data/validator-key.json.
  5. Creates a systemd service (asentum-validator) and starts the node.
  6. Shows a live sync progress bar until the node catches up (usually under a minute).
  7. Polls the faucet to fund the validator address with enough ASE to bond.
  8. Signs and submits a bond(pubKey) transaction.
  9. Installs the asentum-validator CLI wrapper on PATH.

After install, use the CLI wrapper to manage your node:

asentum-validator status      # node + validator status
asentum-validator balance     # wallet balance
asentum-validator earnings    # rewards earned
asentum-validator logs        # live log stream
asentum-validator restart     # restart the systemd service
asentum-validator update      # pull latest chain code + snapshot, restart

update is the one-shot upgrade path after we ship a new chain release: it downloads the fresh validator bundle, verifies its integrity, wipes local blocks/ + state/, extracts the latest snapshot, and restarts the systemd service. Your validator.key and on-chain bond are untouched.

For the full VPS guide, see VPS Installation.

Troubleshooting

My node is bonded but showing as dormant / not signing

This is normal for the first ~2 hours after a fresh bond. The chain rotates the active signing committee once per epoch (about 2 hours). Your node auto-submits an entry transaction at the next epoch window and joins the signing set in the epoch after that. Check back after two block-hours.

If it's been longer than 4 hours, your broadcastUrl may not be reachable from the rest of the cluster. Hit your own URL from a different machine (e.g. curl http://YOUR-IP:8545 -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'). If it doesn't return a JSON response, open inbound TCP 8545 on your firewall / cloud security group.

After an update, "validator status: not in set"

The status field is computed locally and lags while the node re-syncs the gap between the snapshot height and current head (usually 1-5 minutes). Run asentum-validator status again after sync catches up, or check the on-chain truth at testnet.asentum.com/validators - your address appears there with status: "active" if the bond is intact.

Installer aborts at "Downloading validator bundle"

Almost always a download integrity issue. The installer verifies gzip headers before extracting, so if you see gzip: stdin: unexpected end of file, the bundle on the server is truncated. Wait 10 minutes and retry - we ship a fresh bundle whenever this surfaces. Persistent failures: report at #devlog on Telegram.

"Couldn't read validator address from node metadata"

The node didn't print its address before the installer tried to read it from the journal. Usually means the service crashed early - run journalctl -u asentum-validator to see what happened. The most common cause is a corrupted data directory left over from a prior install; remove /opt/asentum/data and re-run the one-liner.

Recovering after a chain reset / hard fork

Run asentum-validator update - it pulls the latest snapshot (which contains the new genesis), wipes the local fork, and restarts. Your bond is on the post-reset chain already if you bonded before the reset; if not, re-run the installer from scratch.

Backing up your validator key

The 32-byte seed at /opt/asentum/data/validator.key IS the secret. The installer also writes a hex-encoded copy to validator.key.hex. Copy one of those to a password manager / encrypted USB. Anyone with this file can sign as your validator. Never run it on a second machine simultaneously - double-signing is slashable.

Method 3 - Build from source

The node software is already live and installable through Method 1 (Operator desktop app) and Method 2 (VPS one-liner). Both run the same client that powers the public testnet. A standalone from-source build path will be published alongside a future release.

Until then, use Method 1 or Method 2 to run a validator. Both use the same node software and connect to the same testnet.

Staking & bonding

Validators bond ASE into the on-chain staking system contract to join the active set. The bond transaction calls bond(pubKey) with your Dilithium3 public key and attaches ASE via msg.value.

  • Minimum bond: 500 ASE (chain-enforced via the staking contract).
  • Maximum bond: No hard cap. Stake concentration is handled by the 10% per-block reward cap, not by capping bonds.
  • Activation: ~10 blocks after bonding (graceful quorum transition).
  • Additional bonds: you can call bond(pubKey) again to increase your stake, up to the max cap.

Unbonding & withdrawing

To leave the validator set and retrieve your stake:

  1. Unbond. Call unbond(amount) on the staking contract. Your ASE enters a 14-day unbonding queue (604,800 blocks at 2s).
  2. Wait. During the unbonding period, your stake is locked. You are removed from the active set but cannot withdraw yet.
  3. Withdraw. After the unbonding period, call withdraw() to transfer the matured ASE back to your wallet.

Partial unbonding is supported, but your remaining stake must stay above 500 ASE. To fully exit, unbond your entire stake. Use getWithdrawable(address) to check if you have matured funds ready to withdraw.

Slashing

Double-signing, signing two different blocks at the same height with the same key, is the primary slashable offense. Double-sign evidence is submitted on-chain and results in stake slashing and ejection from the validator set.

Downtime is handled by the liveness-aware committee, not by slashing. If your node goes offline, it simply drops out of the active committee (last 30 blocks). When it comes back online and proposes a block, it re-enters automatically. No penalty, no manual intervention. For full details, see Slashing Risks.

Monitoring your node

  • Desktop app: the dashboard shows block height, peer count, consensus quorum, validator status, stake, and wallet balance in real time.
  • VPS: use asentum-validator status for a quick health check, or asentum-validator logs for a live log stream.
  • Explorer: check your validator address on testnet.asentum.com to see proposed blocks and transaction history.
  • RPC: query GET /validators on your local node or the public testnet to see the full validator set and your stake.

For detailed monitoring setup, see Monitoring & Logs.

Read next