Run a Gravity Mainnet VFN
Run a Gravity Mainnet (L1) Validator Full Node. Covers validator VFN-network seeds, deployment, optional public listener, database warm start, and sync verification.
This guide walks you through running a Validator Full Node (VFN) on Gravity Mainnet (L1, Chain ID 127001). A VFN dials one or more validators on the VFN network and can expose a public listener for downstream PFNs.
A VFN is not part of the validator set and does not need validator stake. Access depends on which validator seed you connect to:
Connecting to Gravity mainnet genesis validator seeds is currently invite-only. You need approved validator VFN-network seed information.
Connecting to validators that you deploy and operate yourself does not require a Gravity mainnet invite.
Required version. Mainnet nodes must run v1.9.1 before 2026-08-18 02:00:00 UTC. See Gravity Mainnet Hardforks.
Placeholders. Commands below use
<YOUR_...>placeholders. Replace each value before running. Never reuse another node's private identity or safety storage.
Network Role
Gravity traffic flows outward from validators to VFNs, then to PFNs:
validators --VFN net--> VFN --public net--> PFN / RPCUse a VFN when you want:
a full node close to a validator or validator operator;
a relay point for one or more PFNs;
a node that follows validator-network data without joining consensus.
Prerequisites
A Linux x86-64 host, preferably Ubuntu 24.04 LTS.
gravity_nodeandgravity_cli.git clone https://github.com/Galxe/gravity-sdk.git cd gravity-sdk git checkout v1.9.1 RUSTFLAGS="--cfg tokio_unstable" \ cargo build --profile quick-release -p gravity_node -p gravity_cliMainnet
genesis.jsonandwaypoint.txt. Use the canonical mainnet artifacts fromgravity-sdk/genesis/mainnet; do not regenerate genesis locally.Validator VFN-network seed information. Each validator seed needs
account_address, host,vfn_port, andnetwork_public_key. Genesis validator seeds require approval; self-operated validator seeds do not.SSD/NVMe storage sized for current chain data plus growth.
1. Gather Validator Seed Information
For each validator you will dial, collect its public identity values from identity.public.yaml:
You also need the validator host and VFN-network port, commonly 6190.
In a standalone VFN config, prefer explicit seed entries:
Avoid seeds = [{ from = "<id>" }] unless the seed validator is also defined in the same TOML. The deploy script needs that validator's host and vfn_port from the same config.
2. Write cluster-vfn.toml
Download the canonical mainnet artifacts where the config below expects them:
Create a config such as:
public_port is optional but useful if PFNs should sync from this VFN. Keep RPC private unless you intentionally expose it behind your own gateway and access controls.
If you load identity from a secret manager, pin a fixed version rather than latest:
3. Generate Identity and Deploy
Expected layout:
The public identity generated for the VFN is written to:
If downstream PFNs will use this VFN as a seed, share the VFN sidecar account_address, network_public_key, host, and public_port.
4. Optional: Warm Start From an Existing Node
To speed up initial sync, copy only chain databases from an existing RPC/PFN or VFN you control:
Do not copy rand_db or secure_storage.json from another node. secure_storage.json contains node-specific safety state and can make the node behave as if it belongs to a different identity.
5. Start and Verify
Check logs:
Check RPC height:
Compare with the public head:
Troubleshooting
seeds: from=<id>: missing host or vfn_port in cluster.toml
Use explicit seed entries, or define the seed validator in the same TOML.
VFN does not advance
Verify validator seed peer_id, host, vfn_port, and network_public_key; also verify genesis and waypoint.
Downstream PFNs cannot connect
Confirm public_port is open, reachable, and advertised with the VFN network_public_key.
Paths render as <node>/data/<node>
data_dir should be the node deploy directory, not the final database directory.
Identity-related errors after copying data
Remove any copied secure_storage.json; it must not be reused across nodes.
See Also
Last updated
Was this helpful?

