Set Up a BPoS Supernode
End-to-end installation for a community BPoS validator running the Elastos main chain. A BPoS node only needs the main chain (ELA) — node.sh calls this the mainchain profile, so you skip the EVM side chains and the arbiter entirely. Follow these steps in order and you'll end up with a registered, activated supernode earning rewards.
Running for the Elastos DAO Council? You need the full ecosystem (ELA + ESC + EID + PG + Arbiter), not just the main chain. Follow Set Up Your Council Node instead.
- Who: Anyone running a community BPoS validator
- What you need: A Ubuntu 22.04 LTS (or newer) server, 2,000 ELA deposit, Elastos Essentials wallet
- How long: ~15 minutes 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. Server requirements
- OS: Ubuntu 22.04 LTS or newer (Ubuntu only —
node.shis not tested or supported on other distributions) - 4+ CPU cores
- 8+ GB RAM (16 GB recommended)
- 100+ GB storage
- SSH access
2. Install Elastos Node for Ubuntu
One command downloads node.sh, verifies its published SHA-256 checksum and runs a syntax check, then installs it to ~/node:
curl -fsSL https://raw.githubusercontent.com/elastos/Elastos.Node/master/build/skeleton/install.sh | bash
3. Install dependencies, then initialize (choose the mainchain profile)
Install the packages node.sh needs, then initialize the chain. When setup asks for a profile, choose mainchain so it runs only ELA (no side chains, no arbiter):
sudo apt-get install -y jq lsof apache2-utils curl openssl
~/node/node.sh setup # choose the 'mainchain' profile; press Enter for an auto keystore password
~/node/node.sh swap # optional: 16G swap headroom for the initial sync
~/node/node.sh firewall # opens 20338/20339; detects your SSH port and asks before enabling
~/node/node.sh set_cron # restart on reboot + log compression
What each step does:
- Dependencies — the packages
node.shrequires:jq,lsof,apache2-utils,curl,openssl. setup— downloads the ELA binary and creates the keystore, prompting for a password (press Enter to auto-generate; stored in~/.config/elastos/).swap(optional) — adds 16G of swap headroom for the initial sync.firewall— opens only the ELA peer/consensus ports (20338,20339). It detects your real SSH port (sshd -T+$SSH_CONNECTION) and asks for confirmation before enablingufw, so a non-22 SSH session is never locked out. The ELA RPC (20336) stays bound to127.0.0.1and is never exposed to the internet.set_cron— enables autostart on reboot and log compression.
If node.sh was set up as full before, switch it to main-chain-only any time with ~/node/node.sh profile set mainchain. The profile governs which chains start, stop, status, and update act on.
4. Start the node
~/node/node.sh start
Runs in the background. Initial sync may take 24–72 hours depending on server performance.
5. Check sync status
~/node/node.sh summary # state, height, peers, sync
~/node/node.sh health # one-line verdict; non-zero exit if unhealthy
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.
6. Register your node in Essentials
First, copy your node's public key (you'll paste it into the registration form):
~/node/node.sh ela status --verbose
Copy the Public Key value from the ela block — the 66-character hex string starting with 02 or 03. Then, with your node fully synced:
- Open Elastos Essentials
- Swipe to the BPoS Voting page (third page)
- Tap the
+icon in the upper right - 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)
- Set the node public key to the one you copied above — a mismatch here means your node will never produce blocks
- 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.
7. Activate BPoS
After the registration transaction confirms, activate the validator role on your server:
~/node/node.sh ela activate_bpos
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.
Stay up — get alerted. Report your node's status to a monitor so you hear about an outage before it costs you blocks. The node reports outbound, so no inbound port is opened and no credentials are shared:
~/node/node.sh monitor <https-monitor-url> # e.g. the community monitor; ~/node/node.sh monitor off to stop
Keep current:
~/node/node.sh update_script # update node.sh itself (checksum-verified)
~/node/node.sh update # update the chain binaries
Ongoing operations:
- BPoS Supernode Operations — claim rewards, update node info, deregister and reclaim deposit
- Jailing & Slashing — penalties and how to recover from
Illegalstatus - Node Monitoring — alerting on missed blocks, sync lag, disk usage
Related
- Node Prerequisites — full hardware and network reference
- Set Up Your Council Node — full-ecosystem version for elected council members
- Run for the Council — different path entirely, if governance is the goal