freecoding.school100% FREE · NO SIGNUP
The EVM CoreISSUE #7 of 48

eip-1559 · base fee · the fee market

SoliaVSThe Reentrancy Reaper
Solia saysEIP-1559 sets a base fee that adjusts ±12.5% per block toward a 50% block fullness target — the fee is burned, and tips go to the proposer.

Pre-1559, gas auctions caused unpredictable fee spikes. EIP-1559 replaced that with a base fee that the protocol adjusts every block based on how full the previous block was: above the 15M-gas target → fee increases, below → decreases, with a ±12.5% cap per block. The block cap is 30M gas, so the target is exactly 50% fullness.

The base fee is burned rather than paid to the proposer — making ETH mildly deflationary when usage is high. Tips (a separate per-tx priority fee) go to the proposer as the inclusion incentive. The demo simulates the base fee across a sequence of blocks with varying gas usage.

Power-ups you unlock

The Reentrancy Reaper attacks — common mistakes

Boss battleSimulate the base fee across six blocks with varying gas usage and confirm full blocks raise it ~12.5% while empty blocks drop it 12.5%.

Example code

<!doctype html><html><head><meta charset="utf-8"></head>
<body style="background:#06040d;color:#e6e0ff;font-family:monospace;padding:20px"><pre id="o"></pre>
<script>
const TARGET = 15000000;
const MAX = 30000000;
const BASE_CHANGE = 1/8;                          // ±12.5% max per block
let baseFee = 20;                                 // gwei
const blocks = [30000000, 28000000, 22000000, 15000000, 5000000, 0];
const rows = ['  start  base fee = ' + baseFee.toFixed(2) + ' gwei'];
for(const gas of blocks){
  const delta = ((gas - TARGET) / TARGET) * BASE_CHANGE;
  baseFee = baseFee * (1 + delta);
  rows.push('  gas=' + (gas/1e6).toFixed(0).padStart(2) + 'M  base fee → ' + baseFee.toFixed(2) + ' gwei  (Δ ' + (delta*100).toFixed(1) + '%)');
}
document.getElementById('o').textContent = [
  'EIP-1559: target = ' + (TARGET/1e6) + 'M gas (50% of ' + (MAX/1e6) + 'M cap)',
  '  full (30M) → +12.5%   empty (0) → −12.5%   target (15M) → 0%',
  '',
  ...rows,
  '',
  'base fee is BURNED (deflationary); tips go to the proposer'
].join('\n');
</script></body></html>
▶ Open the interactive comic issue
‹ Withdrawals · Partial · Full · The QueueEip-4844 · Blob Transactions · Proto-Danksharding ›