Skip to main content
HOW-TO
MAIN CHAIN

Set Up a BPoS Supernode

End-to-end installation for a community BPoS validator running the Elastos main chain. Follow these eight steps in order and you'll end up with a registered, activated supernode earning rewards.

Council members

Running for the Elastos DAO Council? You need the full ecosystem (ELA + ESC + EID + Arbiter), not just mainchain. Follow Set Up Your Council Node instead.

At a glance
  • Who: Anyone running a community BPoS validator
  • What you need: A Linux server, 2,000 ELA deposit, Elastos Essentials wallet
  • How long: ~1 hour hands-on, 24–72 hours background sync
  • What you'll end up with: A registered, activated BPoS node working toward the 80,000-voting-rights activation threshold

1. Preparation

  • 4+ CPU cores
  • 8+ GB RAM (16 GB recommended — if you stay at 8 GB, add swap in this step)
  • 100+ GB storage
  • Ubuntu 20.04 LTS or newer
  • SSH access

Install system dependencies

sudo apt-get update && sudo apt-get install -y curl wget jq unzip build-essential git apache2-utils

Add 8 GB swap

Required if you're running on the 8 GB RAM minimum — prevents the node from being killed during memory spikes.

sudo cp /etc/fstab /etc/fstab.bak
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

2. Download node.sh

mkdir -p ~/node && cd ~/node
curl -O https://raw.githubusercontent.com/elastos/Elastos.Node/master/build/skeleton/node.sh
chmod a+x node.sh

3. Initialize the ELA main chain

Downloads the ELA package, prompts for a keystore password, creates the config, and prints your node's public key at the end — you'll need that public key in Step 6.

Run ela init twice

The first run only sets the network. You'll be prompted to choose:

  • Press Enter for MainNet
  • Type 2 then press Enter for TestNet

The script exits after recording your choice. Run it again — this time it actually downloads and initializes ELA, prompting for your keystore password.

~/node/node.sh ela init
~/node/node.sh ela init

When the second run completes, copy the node public key that's printed at the end. If you miss it, you can show it again any time with ~/node/node.sh ela status.

4. Start the ELA node

~/node/node.sh ela start

Runs in the background. Initial sync may take 24–72 hours depending on server performance.

5. Open firewall ports

ELA needs three TCP ports open for P2P, RPC, and wallet traffic. If your SSH port is different from 22, replace 22/tcp before running.

sudo bash -c 'ufw allow 22/tcp && ufw allow 20336/tcp && ufw allow 20338/tcp && ufw allow 20339/tcp && ufw --force enable && ufw status verbose'
PortPurpose
20336/tcpELA P2P
20338/tcpELA RPC
20339/tcpELA wallet service

6. Check sync status

~/node/node.sh status
# or just the ELA chain:
~/node/node.sh ela status

Watch the height. Do not proceed to registration until your node has caught up to current network height — registering an unsynced node wastes the deposit and may get the node jailed.

7. Register your node in Essentials

Once your node is fully synced, register it on-chain:

  1. Open Elastos Essentials
  2. Swipe to the BPoS Voting page (third page)
  3. Tap the + icon in the upper right
  4. Confirm the warning, then fill in the registration form:
    • Node name — your validator's display name
    • Country/region — your node's location
    • Lock duration — 100 to 1,000 days (longer lock = higher vote weight)
  5. Set the node public key to the one you copied in Step 3 — a mismatch here means your node will never produce blocks
  6. Tap Register and confirm the 2,000 ELA deposit transaction

For the CLI alternative and the full reference (lock-block math, region overrides, fee details), see BPoS Supernode Operations → Registration.

8. Activate BPoS

After the registration transaction confirms, activate the validator role on your server:

~/node/node.sh ela activate_bpos

9. Auto-start on reboot

So your node comes back up automatically after a server reboot:

crontab -e

Add this line at the very end of the file, save, and exit (in nano: Ctrl+O, Enter, Ctrl+X):

@reboot ~/node/node.sh ela start

What's next

Your node is registered and activated but it's still in the candidate pool. To become an active block producer, you need to accumulate 80,000+ voting rights:

Voting Rights = Staked ELA × log₁₀(Lock Days)

That can come from your own stake and from community voters. Until you cross the threshold, your node sits inactive (no penalty, no rewards). Build community support, demonstrate uptime, and the votes will follow.

Ongoing operations: