- installation guide
- snapshots
- create validator
- validator attestation
- monitoring
- security hardening
- skill
- contributions
Starknet full node — installation guide
A Starknet validator is a Starknet full node plus an attestation service. This page covers the full node. Two clients are supported by the staking protocol, and both are documented here:
| Client | Maintainer | Language | Default RPC port | Data layout |
|---|---|---|---|---|
| Pathfinder | Equilibrium | Rust | 9545 | single SQLite database |
| Juno | Nethermind | Go + Rust | 6060 | Pebble key-value database |
Either client satisfies the validator requirement. Pick one per host, run it to a verified synced state, and only then attach the attestation service (Validator attestation).
Hardware
Reference sizing for a mainnet validator node. Starknet state grows continuously — size disks for at least 12 months of growth, not for today.
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores | 8 cores |
| RAM | 16 GB | 32 GB |
| Disk | 1 TB NVMe SSD | 2 TB NVMe SSD |
| Network | 100 Mbit/s | 1 Gbit/s, unmetered |
Notes from production operation:
- NVMe is not optional. Both clients are IO-bound during sync and during attestation block-hash lookups; SATA SSD or network storage causes missed attestation windows.
- Juno's full mainnet database is significantly larger than Pathfinder's. A pruned Juno snapshot is the smaller option if you only need recent state.
- Raise the open-file limit. Under load both clients exceed the default 1024
descriptors, which surfaces as
Too many open filesand a stalled sync.
Prerequisites
1. Docker
Both clients ship official container images, and Docker is the recommended runtime for validators. Install it from docs.docker.com/get-started/get-docker.
2. Ethereum WebSocket endpoint (mandatory)
A Starknet full node verifies state against the Starknet core contract on Ethereum L1. Without a reliable WebSocket Ethereum endpoint the node cannot follow L1 and will stop advancing verified state.
- Starknet Mainnet settles on Ethereum Mainnet.
- Starknet Sepolia settles on Ethereum Sepolia.
- The URL must be
ws://orwss://, nothttp(s)://.
Keep the endpoint credential in an environment file readable only by the node
user (chmod 600), never in the compose file, never in shell history, never in
a public repository. Treat an L1 endpoint outage as a validator incident: the
attestation service depends on the node staying current.
3. Dedicated system user and file limits
Log out and back in, then verify with ulimit -n.
Option A — Pathfinder
A.1 Run with Docker
Pin an exact image tag in production (eqlabs/pathfinder:vX.Y.Z) instead of
latest, so that a restart never silently changes the client version.
A.2 Run with Docker Compose (recommended for validators)
Compose is preferred because the node and the attestation service are then one unit with one restart policy and one upgrade path.
A.3 Build from source (optional)
A.4 Verify Pathfinder
starknet_syncing returning false means the node is at chain head.
While syncing it returns the current and highest known block.
The RPC path carries the RPC version: /rpc/v0_8, /rpc/v0_9. The attestation
service requires a path it supports — check both sides before wiring them
together, because a version mismatch fails at runtime, not at startup.
Option B — Juno
B.1 Run with Docker
B.2 Run with Docker Compose
B.3 Standalone binary
Download the release archive for your platform from Juno releases:
B.4 Build from source (optional)
Requires Go 1.25+, Rust 1.87+, a C compiler and jemalloc.
B.5 Verify Juno
Mainnet chain ID is SN_MAIN (0x534e5f4d41494e), Sepolia is SN_SEPOLIA.
Always assert the chain ID before attaching a validator: an attestation service
pointed at the wrong network silently earns nothing.
Syncing faster
Syncing mainnet from genesis takes days. Use a database snapshot instead — see Snapshots for the download, checksum and restore procedure for both clients.
Choosing between the clients
- Both are accepted by the staking protocol; there is no reward difference.
- Pathfinder pairs with Equilibrium's attestation service, Juno pairs with
Nethermind's
starknet-staking-v2. Either attestation service can talk to any compliant JSON-RPC node, but the tested combinations are the ones above. - Running two different clients across two hosts is the strongest configuration for a validator: a client-specific bug then costs you one node, not your attestation record.
Next steps
- Snapshots — sync in hours instead of days.
- Create validator — accounts, stake, commission, delegation pool.
- Validator attestation — the service that earns rewards.
- Monitoring — what to alert on.
- Security — address hierarchy and key custody.
Reference
- Starknet docs — Running a full node
- Pathfinder repository
- Juno documentation