DevelopersSeptember 14, 2026by
EmpoorioChain Core
EmpoorioChain Core

Reading the Runtime Map: The Pallet Reference and Stable Indexes

The first thing a developer sees when connecting Polkadot.js to EmpoorioChain is a list of 140 pallets. This post is the map for reading it.

Indexes are addresses

Every pallet in construct_runtime! has an integer index. System is 0, Balances is 4, Dex is 44. That index appears in every encoded call and every event, which is how wallets, indexers and SDKs know what a transaction does without a schema handshake.

The rule that follows: once a network has live state, indexes never move. Reordering pallets would make old blocks undecodable and old storage unreachable. New pallets get new indexes at the end of their group; removed pallets leave gaps. This is why the map below has holes and why nobody will ever tidy them.

A related trap: within a pallet, call indexes can be explicit (#[pallet::call_index(90)]) and need not match the order in the source file. A tool that enumerated calls by position produced eight false mismatches against runtime 218. Read indexes from metadata, never from line order.

The groups

RangeGroupExamples
0–14Core systemSystem, Timestamp, Aura, Grandpa, Balances, TransactionPayment, Sudo, Session, Mmr, Beefy, Evm, Ethereum, BaseFee, DynamicFee, EvmChainId
15–24Identity and governance baseIdentity, Privacy, IdentitySsi, Vesting, EmpStaking, CommunityGovernance, Assets, Uniques
25–37AI and DRACMA infrastructureProptech, AiRegistry, AiRemuneration, AiVerification, AiOracles, AiMarketplace, AiloosRewards, Guardian, EmpDomains, CarbonCredits
38–53Utility and DeFi baseUtility, Preimage, Scheduler, Multisig, BugBounty, Marketplace, Dex, Derivatives, Stablecoins, Oracle, Treasury, Compliance, Airdrop, NFT
54–64Compliance and AI extensionsRWA, ZK storage and verifier, Sanctions, AI governance/serving/jobs, Audit, Tips, Bounties, Randomness
65–79NFT, commerce and DeFi productsDynamicNft, Sbt, music/video NFT, Gaming, Paymaster, Insurance, Escrow, Subscription, PredictionMarkets, Funds, Vaults, Lending, Logistics
80–87Native Ethereum-competitor featuresAccountAbstraction, Permit, Flashloan, NftRoyalties, NftWallet, BlobStorage, MevProtection, StorageOracle
88–89Network economicsReputation, StateRent
102–107IoT suiteDeviceRegistry, EnergyMarket, IotTelemetry, MeshRewards, ProofOfRelay, SolarGeneration
108–110Cloud and computeComputeMarket, NodeUptime, storage coordination
111–115Space suiteSatelliteRegistry, RocketOwnership, OrbitalCompute, SatelliteRelay, LaunchSlots
116–122SkoopoS adsAdEngine, Analytics, Auctions, Targeting, Campaign, Publisher, Audience

The presence of a pallet in this map does not mean it has carried real traffic. The DEX, for example, was wired for months and settled its first real swap on 14 September 2026, once its treasury account was created. "Wired" and "exercised" are different columns, and the ecosystem now tracks both.

The authoritative source

The reference document (PALLET_REFERENCE.md) gives the functional map. The runtime metadata — fetched from any node with state_getMetadata — is the truth for exact SCALE types, call indexes and event variants. It changes in every runtime upgrade, because the spec version is part of it; refresh it every time.

Custom RPC methods

Beyond standard Substrate and Ethereum RPC, the node exposes an emp_ namespace. Methods observed in the node's method list include emp_getAiModelStatus, emp_getBlobData, emp_getDomainOwner, emp_getTrackInfo and emp_getValidatorScore. They have not yet been enumerated against rpc_methods and documented for publication — which is why the developer docs say "not published" rather than listing them with invented signatures.

Suites in the repository

Pallets are organised into crates by domain: emp-core-suite, emp-defi-suite, emp-gaming-suite, emp-ai-engine, emp-commerce-suite, emp-governance-suite, emp-compliance-suite. Adding a pallet follows a written ten-step path — crate, workspace, Config/storage/events/errors/calls/weights, mock and tests, benchmarks, runtime impl Config, construct_runtime! entry, SDK/CLI support, documentation. The pallet reference and the EIP coverage table are updated as part of that path, not afterwards.

Based on PALLET_REFERENCE.md, ARCHITECTURE.md and DEVELOPER_GUIDE.md; the runtime entry count from runtime/src/lib.rs at spec 220.

Share this article