EmpoorioChain is a Substrate Layer 1. Not a fork of an existing chain, not an application running on someone else's network: a sovereign chain with its own runtime, its own validator set and its own upgrade path.
This note describes what actually runs today, with the numbers that can be checked against the node. Where something is a plan rather than a fact, it says so.
A correction, in the open. An earlier version of this note said EmpoorioChain was built on the Cosmos SDK, used CosmWasm for smart contracts and spoke IBC. None of that was ever true of this chain. The text came from a template and survived several passes of editing. It is corrected here, and the same claim has been removed from every other page of the site.
Substrate and FRAME: 140 pallets in one runtime
The runtime is assembled with Substrate's construct_runtime! macro out of
140 FRAME pallets. A pallet is a self-contained module with its own storage,
its own extrinsics and its own events — staking, governance, balances, identity,
the AI marketplace and the storage market are each one or more pallets, composed
into a single state machine.
Two things follow from that, and they are the reason the framework was chosen:
- The chain is upgradeable without a hard fork. The runtime compiles to
WebAssembly and lives on the chain. An upgrade is a transaction that
replaces that blob, raises
spec_version, and takes effect at a block everyone agrees on. No coordinated client release, no chain split. - Storage migrations are part of the deal. Changing a pallet's storage
layout requires a migration that runs exactly once, and it is tested with
try-runtimeagainst real state before it is executed. The upgrade policy classes every change —normal,security,economic,emergency— with a different minimum timelock and a different bar of evidence.
Aura and GRANDPA: who writes the block, and when it is final
Block production and finality are two separate jobs on a Substrate chain, and EmpoorioChain uses the two standard pieces for them:
- Aura (
pallet_aura) decides whose turn it is to author. Authorities take slots in a known rotation, and a block appears every 6 seconds. - GRANDPA (
pallet_grandpa) decides when a block can no longer be reverted. It finalises in chains rather than block by block, and the measured median on the public testnet is around 17 seconds.
Both are wired into the node, not merely declared as dependencies: the service
calls sc_consensus_aura::start_aura for real authoring and runs the GRANDPA
voter for real finality. BEEFY and MMR are present in the runtime as the
groundwork for light clients and bridges; they are not doing work in production
yet.
The Frontier EVM: Solidity on chain id 2026
Smart contracts on EmpoorioChain are EVM contracts, executed by
Frontier, the Ethereum compatibility
layer for Substrate. Solidity, solc, Hardhat, Foundry, ethers.js, MetaMask —
the Ethereum toolchain works, because the chain answers the same JSON-RPC.
The number that matters most here is the chain id: 2026 (0x7ea). It is not
a label. It goes inside the signature of every EVM transaction under EIP-155,
which means a wallet configured with the wrong id produces signatures this chain
rejects — and, worse, signatures that may be valid on whichever chain really
owns that id. An inventory in August 2026 found three different ids in
circulation for this network; the canonical value now lives in a single file
that everything else reads.
There is no CosmWasm, no CW20 and no MoveVM on EmpoorioChain. What does
exist is an ERC-20 interface over the native balance, exposed through a
precompile, so that a contract or a wallet can treat DMS as a standard token
without DMS being a contract: it lives in pallet_balances, as the chain's own
currency.
DMS, addresses and the shape of the network
- Token: DMS, 18 decimals, the native currency of the chain.
- Addresses: SS58 prefix 2026 in both the runtime and the chain spec.
Until that prefix is registered with
paritytech/ss58-registry, a wallet that does not know it will display addresses in the generic Substrate format. - Network today: a public testnet with two validators and two public RPC endpoints. Two validators tolerate zero failures. That is stated plainly because it is true, and because it is one of the gates mainnet does not cross in this shape.
What this stack is for
The reason for a sovereign Substrate L1 rather than a contract on an existing chain is that several pieces of the Empoorio ecosystem cannot be written as contracts at all. AI training settlement, a storage market billed in bytes, decentralised identity and the rules of the DMS economy are runtime logic: they need their own state, their own weights and their own transaction types. A pallet gives all three. A contract gives none of them.
Checking any of this
Nothing above has to be taken on trust. eth_chainId returns 0x7ea,
web3_clientVersion names the runtime build, state_getRuntimeVersion returns
the spec_version in force, and the pallet list is whatever
construct_runtime! says in the runtime that produced the current blocks. If a
number on this page ever disagrees with the node, the node is right.