Skip to main content
ALL CHAINS

Node Prerequisites

Hardware Requirements

Elastos Council Supernode (Full Stack, All Components)

ResourceMinimumRecommended
CPU8 cores16 cores
RAM32 GB64 GB
Storage500 GB SSD1 TB NVMe SSD
Network100 Mbps symmetrical1 Gbps
IPStatic public IPv4Static public IPv4

BPoS Supernode (ELA Only)

ResourceMinimumRecommended
CPU4 cores8 cores
RAM16 GB32 GB
Storage200 GB SSD500 GB SSD
Network50 Mbps100 Mbps
IPStatic public IPv4Static public IPv4

ESC/EID RPC Node

ResourceMinimumRecommended
CPU4 cores8 cores
RAM16 GB32 GB
Storage200 GB SSD500 GB SSD
Network50 Mbps100 Mbps
info

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:

RequirementAmountNotes
Node deposit2,000 ELALocked for the duration you choose at registration
Transaction fees~0.001 ELAFor registration, activation, and claiming transactions
Penalty buffer200+ 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.

tip

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:

ProviderApproximate CostNotes
Contabo$70–120/yearBest value for high-RAM plans
Vultr$120–200/yearPredictable pricing, many regions
DigitalOcean$120–200/yearDeveloper-friendly, good monitoring
Linode (Akamai)$120–200/yearReliable 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.

danger

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
PackageWhy
jqJSON parsing for config generation and RPC responses
lsofProcess/port inspection for status commands
apache2-utilsProvides rotatelogs for log rotation
curlBinary downloads, RPC calls, external IP detection
opensslKeystore password generation via openssl rand
tip

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
danger

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.