Docs
v1

Guide

Node troubleshooting

What the common tenraid start-up errors mean and how to fix them, and what to check when a node finds no peers or falls behind.

On this page

The node does not start

MessageFix
testnet has no built-in genesis manifest …Pass the network's manifest with --manifest. Mainnet and development have one built in
--network … does not match the … manifestThe manifest decides the network. Drop --network or use the right manifest
standard public swarm needs a peer to connect to …A testnet has no built-in peers. Give a --peer, or set bootstrap_peers in node.json
mainnet checks blocks on the full TenQ dataset …Add --tenq-threads <N>, or --tenq-light if memory is short
mainnet requires storage.disk_pressure in enforce modeAdd the disk pressure guard to node.json
a production validator requires validator_overlay listenersAdd validator_overlay to node.json
validator_overlay requires a configured validator keyRemove the section, or give the node its validator key
a validator on mainnet must build the TenQ datasetValidators cannot use --tenq-light
validator.heartbeat requires a configured validator keyAdd consensus_key_file and password_file to the validator section
… do not override it with --validator-key-fileRemove --validator-key-file; the key belongs in node.json
validator.heartbeat.validator_id must be 96 …Copy the ID again from tenrai-wallet positions
the heartbeat fee key must differ …Export a separate fee key, see Run a validator
validator key file has unsafe local access controlsSee A private file is refused
the configured validator is absent from finalized stateThe registration is not final yet, or validator_id is wrong
the configured validator consensus key does not match …consensus_key_file holds another key than the registered one, for example after a rotation
validators and automatic validator heartbeats cannot use pruned storageSwitch to full or archive and resync from genesis
Validator or heartbeat requires complete historyThe database lacks old block bodies, for example after a snapshot start. Resync it from genesis
--tenq-prefetch needs --tenq-threadsPrefetching only exists with the full dataset
P2P options need a swarmAn option such as --max-inbound was given without --listen, --peer, --sync-peer or public_p2p

The same messages name testnet or testnet100 on those networks.

A private file is refused

The node keeps its identity in files only their owner may read, and refuses to use them otherwise. The same applies to validator key, fee key and password files. This happens after copying files to another folder or machine.

Linux

Shell
chmod 600 ~/.tenrai/mainnet/network/host.key ~/.tenrai/mainnet/network/mldsa65.seed

macOS

Shell
chmod 600 ~/.tenrai/mainnet/network/host.key ~/.tenrai/mainnet/network/mldsa65.seed

Windows

The message is private file inherits Windows access rules. Remove the inherited rules and leave full control to your own account only:

PowerShell
icacls "$env:LOCALAPPDATA\Tenrai\mainnet\network\mldsa65.seed" /inheritance:r /grant:r "${env:USERNAME}:F"

No peers

  • Check the address and port of --peer or --sync-peer. A value with an identity in front must carry the identity of that node.
  • Open UDP and TCP port 28700 in the firewall and forward it on the router, or try --upnp.
  • A peer on another chain or protocol version is dropped after the handshake. Compare the manifest with the peer's operator.

The node falls behind

CauseFix
--tenq-light on a machine with few CPU threadsUse --tenq-threads with the 2 GiB dataset
A slow diskMove the data directory to an SSD

GET /v1/node/sync shows behind_by and the peers the node compares itself with.

The API refuses requests

AnswerMeaning
403 to a web pageIts origin is not in browser_origins. Add it with --browser-origin
429 rate_limitedThe per-address limit of the rpc section; wait retry_after_millis
503 unavailableThe node is busy with a cut, or the disk guard is active. Retry shortly; check the free space if it stays

A reset command fails

reset-db, reset-peers and reset-identity need --yes, and the node must be stopped first. cannot delete …; is the node still running? means a running node still holds the files.

The miner waits

tenrai-miner, the stratum bridge and the pool get no work while their node is catching up or has no peer to confirm its height. A dip of up to 30 seconds keeps the work coming; after that they pause, log it once, remind once a minute and start again by themselves when the node hands out work. Wait for synced. On a private network, enable mine_when_not_synced in node.json or start the node with tenraid run --mine-when-not-synced.

Type to search guides, concepts and reference pages.