Join as a Validator
This guide provides comprehensive instructions for joining the Verana testnet as a validator.
Table of Contents
- What is a Validator?
- Prerequisites
- Environment Parameters
- Security Considerations
- Create Validator
- Validator Operations
- System Configuration
- Maintenance
- Troubleshooting
- Best Practices
What is a Validator?
Validators are responsible for committing new blocks to the blockchain through an automated voting process. They participate in consensus by voting on blocks and are rewarded for their service. A validator's stake can be slashed if they:
- Become unavailable
- Sign blocks at the same height (double-signing)
- Violate network rules
Prerequisites
Prerequisite: Ensure the
veranadbinary is installed and up-to-date.
See Install or Update Veranad Binary.
Tip: If you have not created an account yet, see [Create and Fund an Account]( -> linking to /docs/next/run/network/run-a-node/prerequisites#create-and-fund-an-account).
- A running full node (see Join Testnet)
- At least 1,000,000 VNA tokens for self-delegation
- A secure server with the following specifications:
- 32GB RAM
- 4+ CPU cores
- 1TB+ SSD storage
- Reliable internet connection (100+ Mbps)
- Static IP address
- 99.9% uptime
Environment Parameters
| Parameter | Value |
|---|---|
| Chain ID | vna-testnet-1 |
| API | http://node1.testnet.verana.network:1317 |
| RPC | http://node1.testnet.verana.network:26657 |
| Explorer | https://explorer.testnet.verana.network |
| Faucet | https://faucet-vs.testnet.verana.network/invitation |
Security Considerations
Sentry Node Architecture
We strongly recommend implementing a sentry node architecture to protect your validator from DDoS attacks:
+----------------+
| |
| Sentry Node 1 |
| |
+----------------+
^
|
v
+----------------+ +----------------+ +----------------+
| | | | | |
| Sentry Node 2 |->| Validator |<-| Sentry Node 3 |
| | | | | |
+----------------+ +----------------+ +----------------+
Key Management
- Separate Keys: Keep your validator key separate from your node.
- Hardware Security: Use a hardware wallet for the validator key.
- Backup: Regularly backup your keys and configuration.
- Access Control: Implement strict access controls to your validator server.
Create Validator
1. Create a New Account
# Create a new key
veranad keys add <key-name> --keyring-backend test
Note: Save the mnemonic phrase securely. You'll need it to recover your account.
2. Get Testnet Tokens
Request testnet tokens from the Verana Faucet.
/to verana1sxau0xyttphpck7vhlvt8s82ez70nlzw2mhya0
(Replace the address with your account address. You can use the command veranad keys list --keyring-backend test to find your address.)
3. Set Environment Variables
Set the following variables for convenience (replace values as needed):
export validatorName=<key-name>
export NODE_RPC=http://node1.testnet.verana.network:26657
export CHAIN_ID=vna-testnet-1
4. Prepare Validator Transaction
# Fetch the validator operator address
validatorOperatorAddress=$(veranad keys show $validatorName --keyring-backend test --bech val --address)
# Check if the validator exists
validatorStatus=$(veranad q staking validator $validatorOperatorAddress --node $NODE_RPC 2>&1)
# Use provided pubkey or fetch from local tendermint
pubkey_json=$(veranad tendermint show-validator)
pubkey=$(echo $pubkey_json | jq -r '.key')
# Create the JSON file for joining the validator
echo '{
"pubkey": {
"@type": "/cosmos.crypto.ed25519.PubKey",
"key": "'"$pubkey"'"
},
"amount": "990000000uvna",
"moniker": "'"${validatorName}"'",
"commission-rate": "0.1",
"commission-max-rate": "0.2",
"commission-max-change-rate": "0.01",
"min-self-delegation": "1000000"
}' > joiningvalidator.json
5. Create Validator Transaction
Tokens are required to complete this step. If you don't have tokens yet, refer to step 2.
Note: The
commission-max-change-rateis the maximum percentage point change per day. For example, 1% to 2% is a 1 percentage point change.
# Execute the create-validator transaction
veranad tx staking create-validator ./joiningvalidator.json --from $validatorName --fees 600000uvna --chain-id $CHAIN_ID --node $NODE_RPC --keyring-backend test --yes
To verify that the transaction was successful, run the following command (you should not see any errors):
# Replace FB5EF0A6CC8460F77A6D33C2A8AC43CA2ADFBBBDDEAAA72292714297C74D196F with the txhash returned by the previous command
veranad q tx FB5EF0A6CC8460F77A6D33C2A8AC43CA2ADFBBBDDEAAA72292714297C74D196F --node $NODE_RPC
Validator Operations
1. View Validator Information
# View validator details
veranad query staking validator $(veranad keys show $validatorName --bech val -a)
# Check voting power
veranad status | grep voting_power
# View signing information
veranad query slashing signing-info $(veranad tendermint show-validator)
2. Unjail Validator
If your validator gets jailed:
veranad tx slashing unjail --from=$validatorName --chain-id=$CHAIN_ID --keyring-backend test --node $NODE_RPC
System Configuration
1. Configure Firewall
# Allow only necessary ports
sudo ufw allow 26656/tcp # P2P
sudo ufw allow 26657/tcp # RPC
sudo ufw allow 1317/tcp # API
2. Set Up Monitoring
Install and configure monitoring tools:
# Install Prometheus
sudo apt-get install prometheus
# Install Node Exporter
sudo apt-get install prometheus-node-exporter
# Install Grafana
sudo apt-get install grafana
3. Configure System Limits
Create or edit /etc/security/limits.conf:
* soft nofile 65535
* hard nofile 65535
Maintenance
1. Backup
Regularly backup your validator's state:
# Backup the validator state
tar -czf validator-backup.tar.gz ~/.verana
# Backup keys
veranad keys export $validatorName --unarmored-hex --unsafe > validator-key.txt
2. Updates
When network upgrades are announced:
- Monitor the Verana Discord for announcements.
- Update your node software.
- Restart your validator.
3. Graceful Shutdown
To halt your validator at a specific height:
veranad start --halt-height <height>
Troubleshooting
Common Issues
-
Validator Not in Active Set
- Check if you have enough voting power.
- Verify your commission rate is competitive.
- Ensure your node is fully synced.
- Check if you're in the top 100 validators by voting power.
-
Node Not Syncing
- Check your internet connection.
- Verify your peers are connected.
- Check system resources (CPU, RAM, disk space).
- Review logs for errors:
journalctl -u veranad -f
-
Validator Jailed
- Check for double-signing.
- Verify uptime.
- Check system time synchronization.
- Review slashing parameters.
-
High Resource Usage
- Monitor system resources.
- Check for memory leaks.
- Verify disk I/O performance.
- Review network bandwidth usage.
Best Practices
-
Regular Maintenance
- Monitor system resources.
- Check validator status.
- Review logs for errors.
- Update software regularly.
-
Security
- Keep software updated.
- Use strong passwords.
- Implement firewall rules.
- Regular security audits.
-
Performance
- Monitor voting power.
- Track missed blocks.
- Check commission rates.
- Review delegations.