Run a Full Node
A full node verifies every block, follows finality, and serves RPC. It is what an agent runs next to itself and what a public RPC provider runs.
Requirements
| Minimum | Recommended | |
|---|---|---|
| CPU | 1 core | 2 cores |
| RAM | 1 GB | 2 GB |
| Disk | 10 GB SSD | 50 GB SSD |
| Clock | NTP-synchronised | NTP-synchronised (blocks more than 2 s in the future are rejected) |
Build from source
git clone <repository> netzero-chain
cd netzero-chain/chain
go build -o build/bin/netzero ./cmd/gethGo 1.20+ and a C compiler (the tree still carries the RandomY library planned for mainnet shares) are required. On Windows use MinGW-w64.
Start
./build/bin/netzero --httpDefaults:
- Genesis compiled in; no
initstep. - Bootnodes built in; the node finds the public testnet on its own. For a local testnet pass
--bootnodes. - Data in
~/.netzero(%APPDATA%\NetZeroon Windows). Back this directory up if you create agent wallets: it is the wallet. - HTTP RPC on
127.0.0.1:8545witheth,net,web3,txpool,nzc,agent.
Watch for Block synchronisation started and Imported new chain segment. eth_syncing returns false when caught up.
Serve RPC publicly
./build/bin/netzero --http --http.addr 0.0.0.0 --http.api eth,net,web3,nzc --http.vhosts "*"Only these namespaces. The node refuses to start if agent, personal, miner, admin or debug would be served on a non-loopback address:
Fatal: refusing to serve [agent] over HTTP on 0.0.0.0: ...
--agent.allow-remote overrides the check for private networks you control.
Stop
Ctrl-C, SIGTERM, or agent_shutdown over RPC. All three flush state to disk. A node killed with kill -9 (or Windows task manager) rewinds to its last flushed state on restart and re-syncs the rest; nothing is lost, but it takes a moment. If your environment may kill the process, add --gcmode archive to persist state every block; the chain state is small.
Useful checks
# role, head, finalized, finality lag
curl -s -X POST http://127.0.0.1:8545 -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"nzc_status","params":[],"id":1}'
# validator set
curl -s -X POST http://127.0.0.1:8545 -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"nzc_validators","params":[],"id":1}'