← Protocols
EIP-2930 — Optional Access Lists
Standard / EIP·EVM

EIP-2930 — Optional Access Lists

01Description

Final core EIP introducing Type-1 transactions that pre-declare the addresses and storage keys a transaction will touch, in exchange for discounted access gas (2,400 per address, 1,900 per key) versus cold-access pricing. Activated alongside Berlin.

02Best for
  • 01gas optimization for cross-contract calls
  • 02MEV bots / searchers
  • 03transactions touching many storage slots
  • 04future statelessness preparation
03Install
  • pnpm add viem
  • pnpm add ethers
  • pnpm add @ethereumjs/tx
05Prompt snippet
Use Type-1 (`0x01`) transactions with an `accessList` of `{ address, storageKeys[] }` entries to mark accounts and slots as warm before execution. Generate the list via `eth_createAccessList` on a node, or build it manually for known patterns. With viem, pass `accessList` to `sendTransaction`; with ethers, use `populateTransaction`. Only include the list if the savings on warm vs cold access exceed the per-entry cost — empty or wrong lists strictly increase gas.
06Gotchas
  • Adding an access list ALWAYS costs 2,400 gas per address and 1,900 gas per storage key — if execution does not actually touch those slots, you pay the cost without the discount and the tx is more expensive than legacy.
  • `eth_createAccessList` is best-effort: the resulting list may miss slots written by storage-creating opcodes or differ at execution time due to state changes between blocks — re-validate before high-value sends.
  • Most L2s either ignore the access list (charging full L1 calldata cost regardless) or price it differently — measure on the target chain rather than assuming mainnet behavior.
  • Access lists are part of the signed transaction — modifying them after signing invalidates the signature, so you cannot patch a list mid-broadcast.
  • EIP-1559 Type-2 transactions also support an `accessList` field; EIP-2930 Type-1 is rarely the right format today — prefer Type-2 with an access list unless you specifically need the legacy-tip semantics.
07Alternatives