Summary
Until 27 August 2026 the EmpoorioChain runtime declared its SS58 address prefix as 42 — the generic prefix every Substrate development chain uses — while the chain spec's properties declared 2026. The same 32-byte account therefore had two textual forms depending on which source a tool read. No funds were affected; addresses encode the same key either way. But a user copying an address from one tool and pasting it into another could be told it was invalid, and the ecosystem's documentation showed both.
How it happened
A new Substrate runtime starts with SS58Prefix = 42. The chain spec was updated to the chosen prefix (2026 — matching the EVM chain id, deliberately) when the network was named. The runtime constant was not. Polkadot.js reads the chain spec's system_properties and showed 2026; SDKs reading the runtime constant showed 42.
Why it was not caught
Both values are "correct" in their own scope, and Substrate does not require them to agree. The bytes are identical; only the checksum-bearing text differs. Tests compared bytes.
Detection
The network inventory of 27 August — the same one that found three EVM chain ids and six hosts of which one resolved — listed the divergence.
Fix
Decision by the owner the same day: 2026 in both places. Runtime constant updated. RED.json records the resolution and the remaining step: submitting the prefix to the community ss58-registry, so that generic tools recognise it. Until that lands, a tool that does not know prefix 2026 renders addresses in the generic format — still the same account, with a note in the exchange-integration guide explaining exactly that.
Why the title
The previous version of this page told a story about token thieves on another chain. There were no bandits here — only an address that looked like two. It is kept as a postmortem because the class of bug matters: two sources of truth for one parameter, each internally valid. The ecosystem now has one file for network parameters and a script that checks the chain against it, precisely so that a value like this cannot drift in one place without the other noticing.
Lessons
- Every network parameter has one source —
RED.json— and the runtime, chain spec, SDKs and docs are checked against it. - "Same bytes" is not "same address" to a user. Test the text.
- Register public identifiers (SS58 prefix, EVM chain id) in their community registries early; until then, document the fallback rendering.
Based on RED.json (substrate._divergencia) and INTEGRACION_EXCHANGES.md.


