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
- 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>
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.
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
Note: The
commission-max-change-rate
is 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
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
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.