This setup runs on loopback addresses. It creates fresh local state and test keys in a directory you choose. Local test funds only; no live ZRN balance or reward entitlement.
Before you start
Go 1.25.14, Git, make and the platform C build tools.
Python 3.11+ and a terminal on Linux or macOS.
A new, dedicated home directory and free loopback ports 47656 and 47657.
Network access for the source and Go dependencies during the build.
Run these commands in order. The start command stays open; use a second terminal for the final check.
01
Get the pinned source
Where A directory where zerone-local-source does not exist
Terminal
git clone https://github.com/cambridgetcg/zerone-core.git zerone-local-source
cd zerone-local-source
git checkout --detach f1503840c3c6f9be1179dbc8d567da3d5d9a337b
Check git rev-parse HEAD reports f1503840c3c6f9be1179dbc8d567da3d5d9a337b.
02
Build the local binary
Where zerone-local-source
Terminal
GOTOOLCHAIN=go1.25.14 make build
./build/zeroned version --long
Check The build succeeds and the binary reports the pinned source revision.
03
Check the setup helper
Where zerone-local-source
Terminal
python3 -c 'import hashlib; from pathlib import Path; actual = hashlib.sha256(Path("scripts/local-node.py").read_bytes()).hexdigest(); assert actual == "9da37ea914857cf613753222a92eae51a5ea42f4f691872e170c65b5a2dfbcb8", "Setup helper digest mismatch"; print(actual)'
Check The helper SHA-256 is 9da37ea914857cf613753222a92eae51a5ea42f4f691872e170c65b5a2dfbcb8.
Check Read result.node_info.network and result.sync_info.latest_block_height from your local node.
Optional: send local test funds
Send 100 uzrn from the funded local user to the local validator, with a 250000 uzrn test fee. This signs a local transaction; it uses no live funds.
Where zerone-local-source, in the second terminal while the node remains running
Terminal
LOCAL_HOME="$HOME/zerone-local"
LOCAL_BIN="$LOCAL_HOME/bin/zeroned"
TX_HASH=""
python3 scripts/local-node.py status --home "$LOCAL_HOME" &&
RECIPIENT=$("$LOCAL_BIN" keys show validator -a --home "$LOCAL_HOME" --keyring-backend test) &&
LOCAL_TX_OUTPUT=$("$LOCAL_BIN" tx bank send user "$RECIPIENT" 100uzrn --home "$LOCAL_HOME" --chain-id zerone-local-1 --keyring-backend test --node http://127.0.0.1:47657 --fees 250000uzrn --gas 250000 --yes --output json) &&
printf '%s\n' "$LOCAL_TX_OUTPUT" &&
TX_HASH=$(printf '%s' "$LOCAL_TX_OUTPUT" | python3 -c 'import json,re,sys; result=json.load(sys.stdin); txhash=result.get("txhash", ""); assert result.get("code") == 0 and re.fullmatch("[0-9A-Fa-f]{64}", txhash), "No accepted transaction hash returned"; print(txhash)')
Confirm it was committed
In the same terminal, query the captured hash until the result has height greater than zero and code 0. The initial send response at height 0 is only mempool acceptance.
Terminal
if [ -n "$TX_HASH" ]; then
"$LOCAL_BIN" query tx "$TX_HASH" --home "$LOCAL_HOME" --node http://127.0.0.1:47657 --output json
else
printf 'No accepted transaction hash was captured.\n'
fi
If the transaction is not indexed yet, retry only the query. Repeating the send creates another transaction and spends another local test fee.
02 · Public observations
Read zerone-1.
A custodial network with a disclosed sole-validator trust model. Gateway reads are observations, not independent proofs; the upstream node hop uses HTTP.
Available · no account
Inspect public records
Open a selected read endpoint, or use the dashboard. These links return public observations; this guide does not poll the network.
Read the returned denom and amount; a failed request means unavailable, not zero.
For automated reads, send an honest application User-Agent, such as zerone-node-guide/1.0, and set a timeout. Some generic client signatures are blocked by the gateway. Treat non-200 responses as unavailable.
A dated ledger census records application height 1261575 on 2026-09-09. It is a historical checkpoint, not a claim of current freshness. Read the census ↗ · Settlement history ↗
03 · Bring your work
Find a place to contribute.
Start with an integration, a reproducible observation, or a source change. Existing account tools and the participation principles are also available to inspect.
Build an agent integration
Run the local node and test against its local RPC using the pinned API and SDK.
Compare public records, reproduce local results, and contribute a bounded issue or source change. Share public evidence, never keys or private account material.