Node Prerequisites
Hardware Requirements
Elastos Council Supernode (Full Stack, All Components)
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 8 cores | 16 cores |
| RAM | 32 GB | 64 GB |
| Storage | 500 GB SSD | 1 TB NVMe SSD |
| Network | 100 Mbps symmetrical | 1 Gbps |
| IP | Static public IPv4 | Static public IPv4 |
BPoS Supernode (ELA Only)
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores | 8 cores |
| RAM | 16 GB | 32 GB |
| Storage | 200 GB SSD | 500 GB SSD |
| Network | 50 Mbps | 100 Mbps |
| IP | Static public IPv4 | Static public IPv4 |
ESC/EID RPC Node
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores | 8 cores |
| RAM | 16 GB | 32 GB |
| Storage | 200 GB SSD | 500 GB SSD |
| Network | 50 Mbps | 100 Mbps |
Storage grows over time. Plan for ~50 GB/year for ELA chain data and ~100 GB/year for each EVM sidechain. Monitor disk usage and provision accordingly.
Financial Requirements
Running a BPoS supernode requires a financial commitment:
| Requirement | Amount | Notes |
|---|---|---|
| Node deposit | 2,000 ELA | Locked for the duration you choose at registration |
| Transaction fees | ~0.001 ELA | For registration, activation, and claiming transactions |
| Penalty buffer | 200+ ELA (recommended) | Covers one potential slash without causing jailing |
You need the Elastos Essentials wallet (iOS) to manage your ELA, register your node, vote, and claim rewards.
If you plan to self-stake, keep extra ELA beyond the 2,000 deposit. Self-staking increases your voting rights and helps you reach the 80,000 voting rights activation threshold faster.
VPS Providers
Any reputable VPS provider with the hardware specifications above will work. Community-tested options:
| Provider | Approximate Cost | Notes |
|---|---|---|
| Contabo | $70–120/year | Best value for high-RAM plans |
| Vultr | $120–200/year | Predictable pricing, many regions |
| DigitalOcean | $120–200/year | Developer-friendly, good monitoring |
| Linode (Akamai) | $120–200/year | Reliable uptime, good network |
Prices vary by region and configuration. A BPoS-only node can run on plans starting around $10-15/month.
Operating System
Supported:
- Ubuntu 22.04 LTS (recommended)
- Ubuntu 20.04 LTS (still supported)
- Ubuntu 24.04 LTS (supported)
Experimental:
- Any Linux distribution with Bash 4+ and x86_64 architecture
- ARM64 (aarch64): behind feature flag; oracle compilation requires
make,gcc,g++
The node.sh script validates Ubuntu 20.04+ on x86_64 at startup. Running on other distributions is possible but unsupported; you assume responsibility for dependency compatibility.
Do not run as root. The script explicitly warns against sudo execution. Create a dedicated service user:
sudo adduser --disabled-password --gecos "" elastos
sudo su - elastos
System Packages
sudo apt-get update
sudo apt-get install -y \
jq \
lsof \
apache2-utils \
curl \
openssl
| Package | Why |
|---|---|
jq | JSON parsing for config generation and RPC responses |
lsof | Process/port inspection for status commands |
apache2-utils | Provides rotatelogs for log rotation |
curl | Binary downloads, RPC calls, external IP detection |
openssl | Keystore password generation via openssl rand |
Node.js v23.10.0 is auto-downloaded by node.sh when initializing Oracle services. You do not need to install it separately.
Network & Firewall
Your server needs a static public IP address. The external IP is detected automatically via https://checkip.amazonaws.com and embedded in configuration files.
Open the following ports based on your deployment profile. See the Port Reference for the complete port table.
Minimum for ELA full node:
sudo ufw allow 20338/tcp # ELA P2P (required — peer discovery)
sudo ufw allow 20339/tcp # ELA BPoS (required for supernodes)
For ESC RPC node (standalone — no ELA needed):
sudo ufw allow 20636/tcp # ESC JSON-RPC
sudo ufw allow 20638/tcp # ESC P2P
sudo ufw allow 20638/udp # ESC P2P discovery
Do NOT expose RPC ports to the public internet unless you are intentionally running a public RPC endpoint. By default, ELA RPC binds to 127.0.0.1 with a whitelist.
System Tuning
The node.sh script sets ulimit -n 40960 at startup to increase the open file descriptor limit. For persistence across reboots, add to /etc/security/limits.conf:
elastos soft nofile 40960
elastos hard nofile 40960
For high-throughput ESC/EID RPC nodes, also tune:
# /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.core.netdev_max_backlog = 65535
vm.swappiness = 10
Apply with sudo sysctl -p.
Swap Configuration
If your server has the minimum RAM (16 GB for BPoS, 32 GB for full supernode), configure swap space to prevent out-of-memory kills during chain sync or high load:
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
Verify the swap is active:
free -h
You should see 8 GB under the Swap row. Combined with vm.swappiness = 10 from the System Tuning section above, the kernel will prefer RAM but use swap as a safety net.