Skip to content

EIP-8037 — State creation gas ​

EIP-8037State creation gas

Runnable

Live on the hosted MCP — free on Amsterdam. Connect an agent and ask.

Amsterdam (Glamsterdam) vs FusakaRuns withrun_transactionrun_bytecode

What became possible ​

Why isn't 21,000 gas enough for a simple ETH transfer anymore?

EIP-8037 splits gas into an execution dimension and a state dimension. Creating a new account (first-touch value transfer) charges state-creation gas — about 183,600 (120 × 1530) — on top of familiar execution gas. A first write to an empty storage slot charges about 97,920 (64 × 1530).

The MCP server runs a value-bearing transaction (run_transaction) and returns paid gasUsed (gasUsedScope: transaction). On Glamsterdam it also returns txRegularGas / txStateGas. Compare Fusaka vs Glamsterdam — preview includes state gas; baseline does not. A first-touch transfer is about 21,000 vs 204,600.

Try asking your agent ​

The hosted MCP is live (Connect). Copy a prompt into your agent — each quote is self-contained.

Job

Amsterdam

Run a 1 wei transfer to an empty account on Glamsterdam — what gas would a wallet need?

Look forgasUsed near 204,600 and txStateGas near 183,600

Agent will likely call run_transaction

Lesson

Fusaka vs Amsterdam

Send 1 wei to an empty account on Fusaka, then send 1 wei to an empty account on Glamsterdam — how does paid gas differ?

Look forabout 21,000 vs 204,600

Agent will likely call run_transaction

Check

Amsterdam

A wallet still using gas limit 21000 sends 1 wei to a brand-new account on Amsterdam — does the transfer succeed?

Look foran out-of-gas result at gasLimit 21000

Agent will likely call run_transaction

What the server does ​

  1. Discover support

    Confirm the 8037 catalog entry; tools include run_transaction.

  2. Run transaction

    Execute a value tx on glamsterdam or fusaka; read gasUsed and txStateGas.

json
{
  "from": "0x00000000000000000000000000000000000000ee",
  "to": "0x00000000000000000000000000000000000000aa",
  "value": "1",
  "fork": { "baseHardfork": "glamsterdam" }
}

to should be an empty / never-funded account so Glamsterdam includes first-touch state gas. Repeat with "baseHardfork": "fusaka". Prefund to via accounts to collapse account-creation gas. Optional gasLimit: "21000" shows Glamsterdam failing.

SSTORE programs may also use Run bytecode.

Fork caveat

Run the same transaction twice — fusaka (baseline), then glamsterdam (preview). Lead with gasUsed (paid tx gas): about 21,000 vs 204,600 for first-touch. On Glamsterdam, txStateGas is the state dimension (~183,600).

Twins and spec ​

Canonical spec
EIP-8037
Spec date
2026-07-31
Coverage index
EIP catalogue
EIP-8037 MCP Catalogue Changelog
EIP-8037 MCP Catalogue Changelog
  1. v0.42026-09-08Moved first-touch observation to run_transaction (paid gas + txStateGas).
  2. v0.32026-09-08Lead with approxTxGasUsed (21000 + call-frame) on messageCall; gasUsed stays call-frame.
  3. v0.22026-09-08Named catalog row — simulate gasUsed on Glamsterdam vs Fusaka; first-touch and new-slot encoding notes; gasLimit 21000 call-frame OOG.
  4. v0.12026-09-07Runnable via simulate gasUsed (Glamsterdam vs Fusaka first-touch); named catalog row deferred to the engine module.

Get started = connect and ask questions. Reference = catalogues and tool schemas. Internals = for builders.