MIP-8: page-aware storage for the EVM
Monad Foundation
@monad (opens in new tab)- Published on
- · 4 min read
MIP-8 (Page-ified Storage State) is a draft proposal from Category Labs that massively reduces the cost of reading multiple contiguous EVM storage slots. The improvement is accomplished by reorganizing the Ethereum merkle trie to be aware of the fact that disk reads and writes are done in chunks of 4 kb pages.
For a guided walkthrough, watch Category Labs engineer Kevin Kuehler’s tech talk on MIP-8.
The intuition
A smart contract sees storage as a long list of 32-byte slots, numbered 0 to 2^256. The SSDs underneath the chain work in much bigger units — 4 KB chunks called pages, each holding 128 slots’ worth of data. When a node reads one slot that isn’t already in memory, the SSD pulls the entire page off disk anyway, pulling another 127 slots’ worth of data.
Intuitively, one would expect that storage slots 0 to 127 would be assigned to the same disk page. However, this isn't the case because the Ethereum Merkle trie hashes slot keys before storing them — a legacy measure to keep the trie balanced. As a result, logically-adjacent slots are scattered across unrelated disk pages, and every storage slot read requires pulling a different page.
What if we adjusted the Merkle trie to make each chunk of 128 consecutive storage slots map to the same page? Then whenever a second storage slot in a previously-read chunk needs to be read, the disk wouldn't have to do any work. That's the improvement that MIP-8 makes.
What changes
Pages become a functional unit in the EVM. The protocol groups slots into 4 KB pages of 128 consecutive slots — slots 0–127 in page 0, slots 128–255 in page 1, and so on. The page is now visible to both the gas schedule and the storage layer.
Gas pricing follows pages. The first slot read from a page in a transaction pays the full “cold” price. Every other slot on the same page is “warm” for the rest of that transaction, at a small fraction of the cost. Writes work the same way: the first write to a page pays the heavy charges, and later writes to that page are cheap.
The Merkle trie stores pages as one unit. The trie commits to whole pages instead of individual slots, so the 128 slots that share a logical page also share a physical location on disk. That makes the gas savings real — when you pay the warm price, the data is genuinely already in memory.

What this means for contracts
- Structs, arrays, and packed state variables benefit automatically. Solidity already lays them out contiguously, so they sit on the same page. Touching several adjacent fields pays one cold charge and warm prices for the rest. No code changes required.
- Single-value mappings cost about what they do today. Solidity hashes mapping keys, so each lookup lands on a fresh, otherwise-empty page.
- Mappings of structs are now much cheaper than parallel mappings. Three separate
mapping(address => uint)declarations scatter each field onto its own disk page, so reading all three values for one user costs three cold-page reads. Folding them into a singlemapping(address => UserData)puts every field on the same page — one cold read covers them all. This is now the clearly preferred design pattern for grouped per-key state. - Apps that touch clusters of related data — balances, positions, configuration — get cheaper. That covers a lot of real-world workloads.
Try it
The MIP Land demo walks through how slots map to pages and shows how gas changes when multiple reads land on the same page: MIP Land.
Bottom line
MIP-8 keeps the EVM programming model intact. The protocol now treats pages — the unit the underlying hardware already uses — as a first-class concept in both pricing and storage layout. The first access to a region pays the full cold price; every subsequent access in that region is warm. Developers writing ordinary Solidity are rewarded for storage layouts they were already using.
MIP-8 is one example of the kind of work Monad is doing on the EVM itself. There’s plenty more — places where the protocol’s pricing, storage, and execution can be brought closer to what the hardware actually does. The MIP process is where those proposals get drafted, debated, and refined in public. More are coming.
Links
- MIP-8 Specification
- Discussion on the Monad Research Forum
- Tech talk on MIP-8 from Category Labs engineer Kevin Kuehler
- MIP-8 visual explainer on MIPLand