Summary
Between the relaunch of the public testnet (31 August 2026, runtime 208 applied 4 September) and the deployment of runtime 211, the chain accepted no EVM transactions at all. Every submission from MetaMask, Hardhat or the Eoonia browser extension was rejected at validation. No funds were at risk — nothing could move — and native Substrate transactions were unaffected once clients encoded the envelope correctly.
Timeline
- 4 Sep — Runtime 208 live.
eth_*RPC methods respond for the first time (eth_chainId→0x7ea). Reads work. - 6 Sep — Measured: every
eth_sendRawTransactionis rejected. Documented in the engineering notes as Frontier NoUnsignedValidator. - ~9 Sep — Runtime 211 deployed with the fix.
- 10 Sep — Confirmed live in runtime 213: real wallet transactions accepted.
Root cause
An Ethereum transaction on a Frontier chain is submitted as an unsigned Substrate extrinsic whose validity is proven by the Ethereum signature inside it. Frontier supports this through the SelfContainedCall trait: the runtime's RuntimeCall must implement it so that pallet-ethereum::transact can validate and dispatch itself.
EmpoorioChain's runtime used a generic UncheckedExtrinsic and did not wire SelfContainedCall. The transaction pool therefore treated every Ethereum transaction as an ordinary unsigned extrinsic with no validator — and rejected it. The RPC layer was correct; the runtime type was incomplete.
Why it was not caught earlier
Before runtime 208 the eth_* methods themselves returned Method not found, so nobody had ever reached the point of sending a transaction. The moment reads worked, writes were tested — and failed. Three documents were still stating the older "EVM not accessible" finding on 5 September; one told a prospective exchange that EVM integration was impossible. RED.json now carries the resolved state with its verification date and the historical entry labelled as history.
Fix
Runtime 211: SelfContainedCall implemented for RuntimeCall, delegating to pallet-ethereum for Ethereum::transact. Verified on 10 September with real signed transactions from MetaMask and Hardhat on chain id 2026. Gas fixed at 1 gwei in runtime 220.
Lessons
- A read path working is not the write path working. Test the transaction, not the RPC.
- Correct documents in the registry, not in prose. The three stale documents were corrected against
RED.json, which is now the only place the EVM's status is asserted. - Measure before and after. The 6 September measurement gave the fix a definition of done: the same transaction, accepted.
Based on the Frontier NoUnsignedValidator finding (2026-09-06), RED.json (rpc_evm_expuesto) and the runtime 211/213 verification.


