Skip to main content
Version: 2.0.0

Joining a Running Network

Each Casper network is permissionless, enabling new validators to join the network and provide additional security to the system. This page outlines the sequence of recommended steps to spin up a validating node and join an existing network.

Step 1: Provisioning Hardware

Visit the Hardware Specifications section and provision your node hardware.

Step 2: Setting Up the Node

Follow the instructions on the Node Setup page.

Step 3: Creating and Fund Keys for Bonding

See the Node Setup instructions if you have not generated a validator key. This lives in /etc/casper/validator_keys. This will need funded to allow bonding.

Step 4: Updating the Trusted Hash

The node's config.toml needs to be updated with a recent trusted hash.

See the Trusted Hash for Synchronizing instructions if you have not set up a trusted hash during node installation.

Step 5: Setting sync mode

The default mode in config for sync is ttl. Available options are listed as comments in the config.toml. The only sync modes for an operating node are nosync, ttl, or genesis.

ttl syncs the Time To Live data, which is the minimum history needed to operate as a validator. nosync would need to wait for the ttl period to get this history until possible to transition into Validate.

The sync condition needs to be met before it is possible to transition from KeepUp to Validate. There are two reasons why ttl is recommended for a validator.

Improved performance of caching

ttl sync reduces disk space drastically compared to a genesis sync archive mode. This improves performance of LMDB DB as it is memory cached and gives higher probablity of cache hits.

Dangers of genesis sync archival validators

A node must sync to the tip of the chain and be in KeepUp state before transitioning to Validate state. However, prior to this transition, the historical sync operation must complete.

With a ttl node this is the minimum state required to operate as a validator. Even if a node has been shut down for some time, acquiring this data is generally fast.

If a node is in genesis sync mode, the historical state required is all the way back to the highest block previously synced. The node cannot transition to Validate mode until the full historical sync is complete. Historical sync is deprioritized, so this can cause a considerable delay in getting back operational as a validator after prolonged downtime.

Step 5: Confirming the Node is Synchronized

The casper-node-util watch command gives display of current node status. And example output is given on the Node Setup page.

The node has a reactor state machine displayed as Reactor State: in the watch command. This is coming from the localhost:8888/status endpoint.

Full status endpoint output can be seen with: curl localhost:8888/status | jq. We are piping to jq for clean json output.

Step 6: Sending the Bonding Request

You can submit a bonding request to change your synchronized node to a validating node.

The bonding request must be sent after the node has synchronized the protocol state and linear blockchain to avoid being ejected for liveness failures.