{
  "id": 7923,
  "title": "EIP-7923: Linear, Page-Based Memory Costing",
  "status": "Draft",
  "type": "Standards Track",
  "category": "Core",
  "summary": "Linearizes EVM memory with 4KB pages: 100-gas allocation, 6-gas thrash, 64MB cap. Contracts that hit quadratic expansion limits finish with the same logic but steadier gas usage, allowing for more efficient memory management and predicatble gas costs.",
  "impacts": [
    "Transaction gas for memory-heavy calls may be lower, wallets are better at estimating gas to spend.",
    "Account for page allocation (4096 B) and thrash costs; 32-bit addresses; 64 MiB tx memory cap; MSIZE unchanged. Better ways to address memory with new optimizations. The changes are backwards compatible.",
    "Update simulators/estimators to model page allocation and thrash costs; surface OOM exceptional halts.",
    "Clients, tracers, profilers need LRU(512) page tracking and new gas accounting; optional mmap-style backing.",
    "EVM-equivalent chains must adopt new costing/limits; reassess proving and sequencer cost models for compatibility.",
    "More predictable resource bounds via transaction-global memory limit, RPC providers can revise eth_call policies and DoS assumptions.",
    "This change doesn't touch the consensus layer.",
    "Implementation of new linear, page-based costing, LRU thrash checks, and OOM halts while preserving MSIZE semantics while maintaining compatibility with the old model.",
    "Replaces quadratic memory expansion with linear, page-based costing for predictable gas.",
    "Provides support for virtual memory addressing, unlocking heap/stack separation in high-level smart contract languages.",
    "Providing developers with better ways to manage memory, similar to other architectures."
  ],
  "discussion_url": "https://ethereum-magicians.org/t/eip-linearize-memory-costing/23290",
  "source_markdown_url": "https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7923.md",
  "canonical_url": "/latest/eips/7923.json",
  "markdown_url": "/latest/eips/7923.md",
  "citations": [
    {
      "recordId": "eip-7923",
      "artifactPath": "normalized/7923.json",
      "url": "/records/proposal/eip-7923/normalized/7923.json",
      "label": "EIP-7923: Linear, Page-Based Memory Costing",
      "snippet": "Linearizes EVM memory with 4KB pages: 100-gas allocation, 6-gas thrash, 64MB cap. Contracts that hit quadratic expansion limits finish with the same logic but steadier gas usage, allowing for more efficient memory manage"
    }
  ]
}
