The change
Until runtime 213 the storage market billed in whole gigabytes. A 3 KB file was charged as a gigabyte or as nothing, depending on rounding — either absurd or free, and free storage for small files is an invitation to store a million of them.
Runtime 213 moved billing to bytes:
- Prices remain quoted per GB (the unit providers and users understand).
- Cost is computed on the exact bytes stored, rounded up to the smallest billing unit, so a tiny file always costs something.
- Existing storage records were migrated from GB-denominated to byte-denominated — the first storage migration applied to the live chain in place.
Upgrade class: economic (it changes what users pay). Timelock, simulation and try-runtime dry run per the policy; the post_upgrade hook verifies the migration's effect on the storage records.
Why it matters
Ouranoos — the encrypted-cloud app — is the storage market's first consumer, and a user's files are mostly small. Per-byte billing is the difference between a usable cost model and one that either overcharges every document or gives away the service. It is also what makes the blob-storage commitment fee (0.000095 DMS per MB on the testnet) meaningful as a floor.
The quirk it surfaced
While verifying EVM behaviour on 213, Eoonia's team found that eth_getCode(address, 'latest') returns 0x for a contract that has code; only eth_getCode(address, 'pending') returns the bytecode. A deployment script that confirms success by reading code at latest reports failure for a successful deployment.
Workaround adopted across the ecosystem: confirm deployment by the deployer's nonce increment and by the receipt's contract address, not by eth_getCode at latest. Filed as a Frontier-integration issue for a future runtime.
Also in 213
Confirmation that runtime 211's SelfContainedCall fix holds: real MetaMask and Hardhat transactions included and finalized on the live chain.
Against the mainnet gate
The upgrade policy requires the testnet to rehearse an upgrade with a storage migration before mainnet. Runtime 213 is that rehearsal — done, with its manifest, try-runtime report and post-upgrade verification.
The old page
Described validators adopting another network's client update. This page records a billing model change and a quirk, both on the live chain, both verifiable.
Based on the runtime 213 notes, the storage-market change record and the eth_getCode finding.


