A SuperNode is a service machine connected to your validator.
- Validator: on-chain identity; you sign the registration transaction from the validator host.
- SuperNode host: runs the SuperNode software and exposes network ports.
- SuperNode Account (
SN_ACCOUNT): a wallet address (lumera1...) used for LEP-3 stake validation. It can be- your own wallet, or
- a foundation-funded vesting wallet (temporary/permanent lock).
Never run validator and SuperNode on the same server.
- Validator is installed, configured, and running.
- NOTE: The validator can be in the bonded or unbondig
- You control the validator operator key (
<val_key>) on the validator host
Recommended baseline (adjust as the network evolves):
- Ubuntu 22.04+ (recommended)
- Enough CPU/RAM/NVMe for your expected workload
Firewall / inbound ports on the SuperNode host
4444/tcp(SuperNode gRPC API)8002/tcp(REST Gateway)4445/tcp(P2P)
To qualify for SuperNode registration, your validator self-delegation had to meet the minimum requirement by itself.
Eligibility can be met by combining:
- validator self-delegation (must exist), plus
- delegation from a SuperNode Account (
SN_ACCOUNT) (optional, but often used)
Key point: the eligibility check still requires your validator to have some self-delegation (non-zero).
LEP-3 adds extra stake on top via SN_ACCOUNT.
The foundation does not delegate on your behalf.
Instead:
- you provide a fresh
SN_ACCOUNTaddress (lumera1...) - the foundation sends funds to it while creating a vesting account:
- temporarily locked (delayed vesting): unlocks over time / after a delay
- permanently locked (permanent vesting): never unlocks
- you delegate from
SN_ACCOUNTto your validator
Those delegated vesting funds count for LEP-3 Dual-Source Stake.
All operators must choose one of these. They differ only by where SN_ACCOUNT comes from and who funds it.
- You fund and delegate enough stake from your validator/self wallets
SN_ACCOUNTcan be a normal SuperNode key you create during setup (or any wallet you control)
- You create a fresh key on the SuperNode host (becomes
SN_ACCOUNT) - Foundation funds it as vesting (temporary/permanent lock)
- You delegate from
SN_ACCOUNTto your validator
- You create a fresh wallet key somewhere safe
- Foundation funds it as vesting
- You import/recover that key on the SuperNode host (or any machine you’ll use to delegate)
- You delegate from
SN_ACCOUNTto your validator
CHAIN_ID(example:lumera-testnet-2)VALOPER= your validator operator address (lumeravaloper...)SN_ENDPOINT="<SN_PUBLIC_IP>:4444"SN_ACCOUNT= SuperNode Account address (lumera1...)
Get VALOPER on the validator host:
VALOPER=$(lumerad keys show <val_key> --bech val -a)
echo "$VALOPER"sn-manager provides:
- stable install layout
- lifecycle control
- safe auto-updates (stable-only, same-major, and defers while gateway is busy)
curl -L https://github.com/LumeraProtocol/supernode/releases/latest/download/supernode-linux-amd64.tar.gz | tar -xz
install -D -m 0755 sn-manager "$HOME/.sn-manager/bin/sn-manager"
"$HOME/.sn-manager/bin/sn-manager" versionecho 'export PATH="$HOME/.sn-manager/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc && hash -r
command -v -a sn-manager
readlink -f "$(command -v sn-manager)"sudo rm -f /usr/local/bin/sn-manager || true
hash -r
command -v -a sn-manager
readlink -f "$(command -v sn-manager)"
Replace <YOUR_USER>:
sudo tee /etc/systemd/system/sn-manager.service >/dev/null <<EOF
[Unit]
Description=Lumera SuperNode Manager
After=network-online.target
[Service]
User=<YOUR_USER>
Environment=HOME=/home/<YOUR_USER>
WorkingDirectory=/home/<YOUR_USER>
ExecStart=/home/<YOUR_USER>/.sn-manager/bin/sn-manager start
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
Enable and start:
sudo systemctl daemon-reload
sudo systemctl enable --now sn-manager
journalctl -u sn-manager -f
Note: systemd does not inherit your shell’s environment. If you initialized with --keyring-passphrase-env SUPERNODE_PASSPHRASE, set SUPERNODE_PASSPHRASE in the systemd unit via Environment= or EnvironmentFile=.
Note: Unrecognized flags to sn-manager init are passed through to supernode init.
sn-manager initexport SUPERNODE_PASSPHRASE="your-secure-passphrase"
sn-manager init -y \
--auto-upgrade \
--keyring-backend file \
--keyring-passphrase-env SUPERNODE_PASSPHRASE \
--key-name mySNKey \
--supernode-addr 0.0.0.0 \
--supernode-port 4444 \
--lumera-grpc https://grpc.lumera.io:443 \
--chain-id <CHAIN_ID>If you use -y with --recover, you must also provide --mnemonic (or omit -y and follow the interactive prompts).
export SUPERNODE_PASSPHRASE="your-secure-passphrase"
sn-manager init -y \
--auto-upgrade \
--keyring-backend file \
--keyring-passphrase-env SUPERNODE_PASSPHRASE \
--key-name mySNWallet \
--recover \
--mnemonic "word1 word2 ... word24" \
--supernode-addr 0.0.0.0 \
--supernode-port 4444 \
--lumera-grpc https://grpc.lumera.io:443 \
--chain-id <CHAIN_ID>Use whichever key name you created/imported above:
lumerad keys show <sn_key_name> -aRecord it as:
SN_ACCOUNT=<lumera1...>
If you are using foundation support:
- Provide
SN_ACCOUNTto the foundation (must be fresh) - Foundation sends funds (vesting: temporary or permanent lock)
- You delegate from SN_ACCOUNT to your validator:
Run this on the machine that has the SN_ACCOUNT key (often the SuperNode host):
VALOPER="<lumeravaloper...>"
lumerad tx staking delegate "$VALOPER" <amount>ulume \
--from <sn_key_name> \
--chain-id <CHAIN_ID> --gas auto --gas-adjustment 1.3 --fees 7000ulumeAlso keep some validator self-delegation (non-zero), typically from <val_key>:
VALOPER=$(lumerad keys show <val_key> --bech val -a)
lumerad tx staking delegate "$VALOPER" <small_amount>ulume \
--from <val_key> \
--chain-id <CHAIN_ID> --gas auto --gas-adjustment 1.3 --fees 7000ulumeRegistration is signed by your validator operator key and must be run on the validator host.
VALOPER=$(lumerad keys show <val_key> --bech val -a)
SN_ENDPOINT="<SN_PUBLIC_IP>:4444"
SN_ACCOUNT="<lumera1...>"
lumerad tx supernode register-supernode \
"$VALOPER" "$SN_ENDPOINT" "$SN_ACCOUNT" \
--from <val_key> --chain-id <CHAIN_ID> \
--gas auto --gas-adjustment 1.3 --fees 5000ulumesn-manager status
sn-manager check
sn-manager ls
sn-manager ls-remote
sn-manager get <version>
sn-manager use <version>
sn-manager supernode status
sn-manager supernode start
sn-manager supernode stopStart/Stop behavior note:
If systemd runs sn-manager and you call sn-manager stop, it exits cleanly (not a crash), so systemd may not restart it automatically. Use:
sudo systemctl start sn-manager
Use this if you want to fully manage installation and upgrades yourself.
sudo curl -L -o /usr/local/bin/supernode \
https://github.com/LumeraProtocol/supernode/releases/latest/download/supernode-linux-amd64
sudo chmod +x /usr/local/bin/supernode
supernode versionIf your keyring backend is file or os, you must provide a passphrase at init time.
Supported:
--keyring-passphrase--keyring-passphrase-env--keyring-passphrase-file
Example:
export SUPERNODE_PASSPHRASE="your-secure-passphrase"
supernode init --key-name mySNKey --keyring-backend file --keyring-passphrase-env SUPERNODE_PASSPHRASE --chain-id <CHAIN_ID>supernode init --key-name mySNKey --chain-id <CHAIN_ID>supernode init --key-name mySNWallet --recover --chain-id <CHAIN_ID>
Replace <YOUR_USER>:
sudo tee /etc/systemd/system/supernode.service >/dev/null <<EOF
[Unit]
Description=Lumera SuperNode
After=network-online.target
[Service]
User=<YOUR_USER>
ExecStart=/usr/local/bin/supernode start --basedir /home/<YOUR_USER>/.supernode
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOFEnable and start:
sudo systemctl daemon-reload
sudo systemctl enable --now supernode
journalctl -u supernode -f
Note: systemd does not inherit your shell’s environment. If your keyring is configured with --keyring-passphrase-env, set that environment variable in the systemd unit via Environment= or EnvironmentFile=.
lumerad keys show <sn_key_name> -aSame as in Path A:
- Provide
SN_ACCOUNTto the foundation (fresh address) - Foundation sends vesting funds (temporary/permanent lock)
- You delegate from
SN_ACCOUNTto your validator:
VALOPER="<lumeravaloper...>"
lumerad tx staking delegate "$VALOPER" <amount>ulume \
--from <sn_key_name> \
--chain-id <CHAIN_ID> --gas auto --gas-adjustment 1.3 --fees 7000ulumeKeep some validator self-delegation (non-zero):
VALOPER=$(lumerad keys show <val_key> --bech val -a)
lumerad tx staking delegate "$VALOPER" <small_amount>ulume \
--from <val_key> \
--chain-id <CHAIN_ID> --gas auto --gas-adjustment 1.3 --fees 7000ulumeVALOPER=$(lumerad keys show <val_key> --bech val -a)
SN_ENDPOINT="<SN_PUBLIC_IP>:4444"
SN_ACCOUNT="<lumera1...>"
lumerad tx supernode register-supernode \
"$VALOPER" "$SN_ENDPOINT" "$SN_ACCOUNT" \
--from <val_key> --chain-id <CHAIN_ID> \
--gas auto --gas-adjustment 1.3 --fees 5000ulumeVALOPER=$(lumerad keys show <val_key> --bech val -a)
lumerad q supernode get-supernode "$VALOPER"Expected state: SUPERNODE_STATE_ACTIVE
If you see stake/eligibility failures:
- confirm validator has non-zero self-delegation
- confirm
SN_ACCOUNTyou registered is the same account that delegated to your validator - confirm the delegation of at least 25K (on mainnet) from
SN_ACCOUNTto your validator exists
- Separate hosts: validator ≠ SuperNode
- Back up mnemonics:
- validator operator key mnemonic
SN_ACCOUNTmnemonic
- Prefer
keyring-backend oson production servers when available and operationally supported - Minimize exposed ports to only what’s required (4444/8002/4445)
- Treat
SN_ACCOUNTas operational-critical: if you lose the key, you may lose the ability to manage delegation flow (even if funds are vesting-locked)
Most common causes:
- validator has zero self-delegation
SN_ACCOUNTdid not delegate to your validator (funds sitting idle)- you registered with a different
SN_ACCOUNTthan the one that delegated
sn-manager must be installed under a user-writable path (recommended: ~/.sn-manager/bin/sn-manager).
Remove any /usr/local/bin/sn-manager copy and ensure command -v sn-manager resolves to your home install.
- verify firewall rules on
4444/tcp,8002/tcp,4445/tcp - confirm your
SN_ENDPOINTmatches your public IP/DNS and port4444 - check logs:
journalctl -u sn-manager -f- or
journalctl -u supernode -f
Before registration
- SuperNode host is up and ports are open (4444/8002/4445)
-
SN_ACCOUNTkey exists and you can sign transactions with it - validator has non-zero self-delegation
- if foundation-funded: funds arrived to SN_ACCOUNT and you delegated SN_ACCOUNT → validator
Registration
- run
register-supernodeon validator host signed by<val_key> - pass correct
SN_ENDPOINTand correctSN_ACCOUNT
After
- query
get-supernodeand confirmACTIVE - monitor service logs and system health
© Lumera Protocol — SuperNode Guide (sn-manager + LEP-3 Dual-Source Stake)