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.
Visit the Hardware Specifications section and provision your node hardware.
Follow the instructions on the Node Setup page.
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
Install these prerequisites, which are also listed here.
pkg-config - On Ubuntu, use sudo apt-get install pkg-config
openssl - On Ubuntu, use sudo apt-get install openssl
libssl-dev - On Ubuntu, use sudo apt-get install libssl-dev
Install the Rust casper-client and fund the keys you will use for bonding.
Use the following commands to build the contracts in release mode. Make sure you have installed Rust.
cd casper-node
make setup-rs
make build-client-contracts
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
See the Node Setup instructions if you have not generated and funded your validator keys.
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.
Start the node with the casper-node-launcher:
sudo systemctl start casper-node-launcher
The above Debian package installs a casper-node service for systemd.
For more information, visit GitHub.
While the node is synchronizing, the /status endpoint is available. You will be able to compare this to another node's status endpoint era_id and 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 era_id and height that you can use to determine if your node has completed synchronizing.
Sample output of the /status endpoint
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.