Run a light node
Follow Tenzro Network without staking: run a light node that checks finality certificates and serves verified reads to your wallet or app.
A light node follows Tenzro Network without proposing blocks or voting. It checks what it receives against finality certificates, the ML-DSA-65 signed certificates validators produce for every finalized checkpoint, so it does not have to trust the peer or RPC provider that served the data. Use one behind a wallet, a read-only service, a bridge relayer or any app that wants verified reads without the cost of a validator.
Prerequisites
- A Linux, Windows or macOS machine with a TPM 2.0 or a Secure Enclave, or a key held in another machine's TPM through a key holder: every node needs a hardware key and refuses to start without one. A light node needs no GPU and no stake.
- The
tenzro-nodeandtenzrobinaries from Downloads, checked as described in Verify your download, or built from source. See Supported hardware. - On Linux, run
tenzro-node tpm provisiononce before the first start.
1. Install the node
The same binary runs every role. The light role simply skips proposing and voting.
Easy path: install Tenzro (curl -fsSL https://downloads.tenzro.com/install.sh | sh on Linux and macOS, irm https://downloads.tenzro.com/install.ps1 | iex in PowerShell on Windows), then run tenzro to check the machine and set up your keys. See Install and first run. Then go to step 2.
Advanced: build from source.
git clone https://github.com/tenzro/tenzro-network.git
cd tenzro-network
cargo build --release -p tenzro-node -p tenzro-cli2. Start in light mode
tenzro-node --roles light --data-dir ./light-data --genesis genesis.tomlgenesis.toml is the genesis file published with the release; check it first (see Verify your download). With no --boot-nodes the node finds the network through the genesis validators named in the archive's network profile. The RPC listens on 127.0.0.1:8545.
3. Let it catch up
On this release a fresh light node joins by block replay from genesis: it replays the chain from block 0, checking each finality certificate, and is in step when it reports the network's finalized height. Starting from a state snapshot whose root matches a certified checkpoint arrives in an update. From there it follows new checkpoints, checking each certificate's signatures against the validator set it already trusts.
Watch progress:
tenzro node syncing
tenzro node statussyncing returns false once the node is at the head. A node that shows peers but a low height on a quiet chain is not stuck; it advances with the next finalized block.
4. Read finalized state
Point any SDK, wallet or script at the local RPC:
curl -s http://127.0.0.1:8545 -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tenzro_getFinalizedBlock","params":[]}'
curl -s http://127.0.0.1:8545 -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tenzro_getBalance","params":["0x<address>"]}'Expected output is a JSON-RPC result such as {"jsonrpc":"2.0","id":1,"result":"0x..."}. These are open methods and need no key.
From TypeScript, use the SDK against the local node:
import { TenzroClient } from "tenzro-sdk";
const tz = TenzroClient.local();5. Keep it running
Run the light node as a service so it stays current. Upgrades replace the binary and keep the data directory. Because a light node holds no stake, it can be stopped and restarted at any time; it resumes from the last checkpoint it verified.
Next steps
- Finality certificates: what a certificate contains and how to verify one yourself.
- State and snapshots.
- Run a validator node when you are ready to stake.