UpgradesSeptember 14, 2026by
EmpoorioChain Core
EmpoorioChain Core

Where EmpoorioChain Runs Today: Two Nodes, One Provider, and the Inventory That Was Wrong

This is what the EmpoorioChain testnet physically is, as of September 2026, and the story of how its documentation came to describe something else.

The inventory, read from the chain

Account (SS58 prefix 2026)Hostp2p portProvider
vxqHYVE5dSniugDjCFJALXuandsMrxuTGL7ygZUrTjXir4XqQ217.160.88.1538443IONOS (AS8560), Logroño
vxsjjK8FgxQqjXVUXTsLCLLk6s2tCcobMFtmENQUebBBaNBe8212.227.108.418447IONOS (AS8560), Logroño

These two accounts are what Session::Validators and Aura::Authorities return from a live node. Node 1 also serves the public RPC at rpc.testnet.empooriochain.org (port 9944 behind nginx, with its own valid TLS); node 2 serves rpc2.testnet.empooriochain.org. The explorer is empooscan.com, hosted separately. That is the whole network.

Note the p2p ports: 8443 and 8447, not Substrate's default 30333. A new operator documenting their own node should state the port they actually opened; the guide was corrected to say so.

What the report used to say

The May 2026 decentralization report described three validators in us-east-1, eu-west-1 and ap-southeast-1. The network has never had three validators and has never run on AWS.

The source was data/Genesis/validators.json, which contained placeholder entries using Substrate's development accounts — the ones every tutorial calls Bob, Charlie and Dave. Someone had scaffolded the file and never replaced the placeholders; the report treated the file as inventory.

Worse, the script cited as the reproducible source of truth, scripts/testnet_validator_audit.py, never consulted the chain. Run against a deliberately refused connection (--rpc http://127.0.0.1:1), it returned the same three fictional validators and exited with code 0. A verification step that cannot fail is not a verification step.

The fix

On 5 September 2026 the script was rewritten to read Session::Validators from one or more RPC endpoints, compare the result with the inventory file, and exit non-zero if they disagree or if no endpoint answers. The inventory was replaced with the two real accounts above. The report was reissued with a correction block at the top explaining exactly what had been wrong.

python3 scripts/testnet_validator_audit.py \
  --network testnet \
  --rpc https://rpc.testnet.empooriochain.org \
  --rpc https://rpc2.testnet.empooriochain.org \
  --output artifacts/decentralization/testnet/public-rpcs.json

The JSON it produces — with date, commit and endpoints — is the evidence the report now cites. Nothing about validator count is allowed to come from a hand-edited file again.

The lesson, generalised

The same weeks turned up the same pattern elsewhere: a post_upgrade hook that asserted storage was empty without checking whether its migration had run; a compliance check that could never evaluate to false. The rule that came out of it is now part of every review: ask what would have to be true for this check to fail. If the answer is "nothing", the check is decoration.

Why this matters for you

If you are considering running a validator, this is the network you would be joining: two nodes, one provider, zero fault tolerance, and a team that has decided to say so rather than draw three clouds on a map. The operator guide and the decentralization gate are written for exactly that person.

Based on DECENTRALIZATION_REPORT.md and RED.json, both verified against the live chain on 2026-09-05 and 2026-09-12 respectively.

Share this article