Run A Full Node
Run a regular Shielded Vote full node to follow the chain from a verified snapshot and independently check finalized vote tallies. This is not a validator: it does not generate validator keys, join the validator set, run a vote-share helper, or expose a public URL.
-
Provision The Full Node Host
Minimum recommendation before restoring the latest zvote-1 snapshot.
- Platform
- Linux amd64
- CPU
- 2 vCPU
- Memory
- 4 GB RAM
- Storage
- 120 GB NVMe
Linux arm64 is also supported. macOS is useful for local development and audit work.
-
Run The Full-Node Installer
The installer discovers the active chain version from voting config, downloads the matching
svotedrelease, validates genesis, restores the latest snapshot, and installs a local service.curl -fsSL https://shielded-vote.nyc3.digitaloceanspaces.com/join-full.sh | bash -
Wait For The Tip
The installer exits after
catching_up=false. After that, keep the service running so your local state continues to track the chain tip.svoted status --home ~/.svoted-full | jq '{height: .sync_info.latest_block_height, catching_up: .sync_info.catching_up}'
-
Install Source Build Requirements
Use the active chain version reported by the public seed node.
sudo apt-get update sudo apt-get install -y curl git jq lz4 ca-certificates build-essential pkg-config clang lld command -v mise >/dev/null 2>&1 || curl https://mise.run | sh export PATH="$HOME/.local/bin:$HOME/go/bin:$PATH" -
Build The Active Chain Version
git clone https://github.com/valargroup/vote-sdk.git cd vote-sdk mise install VOTING_CONFIG_URL="${VOTING_CONFIG_URL:-https://voting.valargroup.org/prod/dynamic-voting-config.json}" VOTING_CONFIG=$(curl -fsSL "$VOTING_CONFIG_URL") SEED_URL=$(echo "$VOTING_CONFIG" | jq -r '.vote_servers[0].url') NODE_INFO=$(curl -fsSL "${SEED_URL%/}/cosmos/base/tendermint/v1beta1/node_info") CHAIN_BINARY_VERSION=$(echo "$NODE_INFO" | jq -r '.application_version.version') git fetch --tags git checkout "$CHAIN_BINARY_VERSION" mise install mise run build:quick -
Initialize, Restore Snapshot, And Start
The automatic script is the canonical reference for manual steps. It keeps the node observer-only.
SVOTE_LOCAL_BINARIES=1 SVOTE_SKIP_SERVICE=1 ./join-full.sh svoted start --home ~/.svoted-full