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: Provision Hardware
Visit the Hardware Specifications section and provision your node hardware.
Step 2: Set Up the Node
Follow the instructions on the Node Setup page.
Step 3: Build the Required Contracts
Use the commands below to build all the necessary contracts for bonding, retrieving rewards, and unbonding.
- Clone the casper-node repository.
git clone https://github.com/casper-network/casper-node
- Use the following commands to build the contracts in release mode. Make sure you have installed Rust.
These commands will build all the necessary Wasm contracts for operating as a validator:
activate_bid.wasm- Reactivates an ejected validator
add_bid.wasm- Enables bonding for validator stake
delegate.wasm- Delegates stake
undelegate.wasm- Undelegates stake
withdraw_bid.wasm- Enables unbonding for validator stake
Step 4: Create and Fund Keys for Bonding
See the Node Setup instructions if you have not generated and funded your validator keys.
Step 5: Update the Trusted Hash
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 6: Start the Node
Start the node with the
sudo systemctl start casper-node-launcher
The above Debian package installs a casper-node service for systemd.
For more information, visit GitHub.
Step 7: Confirm the Node is Synchronized
While the node is synchronizing, the
/status endpoint is available. You will be able to compare this to another node's status endpoint
height to determine if you are caught up. You will not be able to perform any
casper-client calls to your
7777 RPC port until your node is fully caught up.
Towards the end of the following output, notice the
height that you can use to determine if your node has completed synchronizing.
Sample output of the
"uptime": "25days 1h 48m 22s 47ms"
Step 8: Send 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.