This guide provides a comprehensive approach to deploying various node types for the Supernova extension-chain, a Zenon EVM-compatible blockchain built on Cosmos SDK technology.
A Note on Node Types
- Standard Node: Maintains a full copy of the blockchain and helps propagate transactions and blocks. Ideal for general participation with moderate hardware requirements.
- Pillar Node (Validator): Validates transactions and participates in consensus to secure the network. Requires higher resources and commitment.
- Sentry Node: Acts as a protective layer for validators by filtering network traffic and mitigating attacks. Used by validators to enhance security.
- Archive Node: Stores the entire blockchain history without pruning. Essential for full historical data access; demands significant storage and resources.
- Seed Node: Provides initial peer information to new nodes joining the network, facilitating their connection. Requires high uptime and reliable network availability.
System Requirements
Node Type | vCPUs | RAM | Storage | Swap Space |
---|---|---|---|---|
Pillar (Validator) Node | 4+ | 8GB+ | 500GB+ | 16GB |
Sentry (Standard) Node | 4 | 8GB | 300GB+ | 8GB |
Archive Node | 4+ | 16GB+ | 1TB+ | 32GB |
Seed Node | 2 | 4GB | 100GB+ | 4GB |
Recommended Operating Systems
- Ubuntu 22.04 LTS
- Debian (Latest Stable)
Dependencies:
curl
,wget
,jq
,ufw
,git
,make
,build-essential
Initial System Configuration
System Update and Dependency Installation
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential jq ufw git wget -y
Configure System Limits
Edit /etc/security/limits.conf
to increase file descriptor limits:
* soft nofile 60000
* hard nofile 60000
Apply the new limits:
ulimit -n 60000
Firewall Configuration
sudo ufw enable
sudo ufw allow 22/tcp # SSH
sudo ufw allow 26656/tcp # Tendermint P2P
sudo ufw allow 26657/tcp # Tendermint RPC
sudo ufw allow 1317/tcp # Cosmos SDK REST API
sudo ufw allow 8545/tcp # EVM HTTP RPC
sudo ufw allow 8546/tcp # EVM WS RPC
sudo ufw reload
Swap Space Configuration
Swap space configuration varies by node type:
- Archive Node: 32GB
- xChain Pillar Node: 16GB
- Sentry Node: 8GB
- Seed Node: 4GB
Example Swap Setup:
# For an 8GB Sentry Node
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Node Types and Configuration
1. Sentry (Regular) Node Setup
Binary Installation
# Choose appropriate binary based on system architecture
# For Linux ARM64
wget https://github.com/AliensZone/supernova/releases/download/v0.0.8/supernova_Linux_arm64.tar.gz
tar -xvf supernova_Linux_arm64.tar.gz
# For Linux x86_64
wget https://github.com/AliensZone/supernova/releases/download/v0.0.8/supernova_Linux_x86_64.tar.gz
tar -xvf supernova_Linux_x86_64.tar.gz
Binary Path Configuration
sudo mv bin/supernovad /usr/local/bin/
sudo chmod +x /usr/local/bin/supernovad
Verify installation:
supernovad version
Node Initialization
# Initialize node with a moniker
supernovad init sentry_node --chain-id supernova_73405-1
Configuration Modifications
Edit configuration files in ~/.supernova/config/
:
config.toml
:
# P2P Configuration
pex = true
persistent_peers = "" # Will be added when converting to Sentry
seeds = "ced855d1514b84adabe8590acd474487710ca259@167.235.79.123:26656,f5707786778283258b37b5154a520897ab4b75b5@116.203.187.234:26656"
addr_book_strict = false
db_backend = "rocksdb"
app.toml
:
# Pruning Configuration
pruning = "default"
# Minimum Gas Prices
minimum-gas-prices = "0stake"
# EVM RPC Configuration
[json-rpc]
address = "0.0.0.0:8545"
ws-address = "0.0.0.0:8546"
Systemd Service Configuration
Create /etc/systemd/system/supernova.service
:
[Unit]
Description=Supernova Node Service
After=network.target
[Service]
LimitNOFILE=32768
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/supernovad start
ExecStop=/bin/kill -s SIGTERM $MAINPID
Restart=on-failure
TimeoutStopSec=120s
TimeoutStartSec=30s
[Install]
WantedBy=multi-user.target
Service Management
systemctl daemon-reload
systemctl enable supernova.service
systemctl start supernova.service
2. Converting to Sentry Node
When converting to a Sentry node for a specific pillar/validator:
config.toml
modifications:
pex = true
persistent_peers = "VALIDATOR_NODE_ID@VALIDATOR_IP:26656"
private_peer_ids = "VALIDATOR_NODE_ID"
unconditional_peer_ids = "VALIDATOR_NODE_ID@VALIDATOR_IP:26656"
3. Validator Node Configuration
Additional steps for validator nodes:
- Generate validator key
TO BE CONTINUED…
4. Archival Node Configuration
Key differences for archival nodes:
- Increased storage requirements
- Different pruning configuration
- State sync enablement
app.toml
modifications:
pruning = "nothing"
snapshot-interval = 15000
snapshot-keep-recent = 2
For additional endpoint configuration please read How to Setup Caddy for RPC and state-sync on Supernova
5. Seed Node Configuration
config.toml
modifications:
laddr = "tcp://0.0.0.0:26656"
external_address = "YOUR_PUBLIC_IP:26656"
seed_mode = true
Maintenance and Monitoring
- Regular Updates:
Build from source
cd ~/supernova
git pull
make build
sudo cp build/supernovad /usr/local/bin/
systemctl restart supernova.service
Download latest binary
# Choose appropriate binary based on system architecture
# For Linux ARM64
wget https://github.com/AliensZone/supernova/releases/download/v0.0.8/supernova_Linux_arm64.tar.gz
tar -xvf supernova_Linux_arm64.tar.gz
# For Linux x86_64
wget https://github.com/AliensZone/supernova/releases/download/v0.0.8/supernova_Linux_x86_64.tar.gz
tar -xvf supernova_Linux_x86_64.tar.gz
Move binary to default location:
sudo mv bin/supernovad /usr/local/bin/
- Log Monitoring
journalctl -u supernova.service -f
Network Connectivity
Seed Nodes
ced855d1514b84adabe8590acd474487710ca259@167.235.79.123:26656
f5707786778283258b37b5154a520897ab4b75b5@116.203.187.234:26656