{"id":"EIP-1559","name":"Fee Market Change","status":"Final","chain":"both","category":{"id":"infrastructure","name":"Infrastructure","description":"Foundational patterns enabling other standards"},"journeyStages":[{"id":"gas","name":"Gas & Fees","description":"Paying for transactions"}],"uxImpact":"Gas fees have a predictable base fee plus optional priority tip — wallets can auto-estimate reliably. Design implications: show base fee (burns) separately from priority fee (to validator), display 'max fee' cap for user peace of mind, auto-suggest priority fees based on urgency ('Slow/Normal/Fast'), show real-time base fee trends. Design decisions: whether to expose full fee breakdown (transparency) or single 'estimated fee' (simplicity); how to handle fee spikes without alarming users. Live and universal. Gas & Fees Checklist rates fee breakdown display as Medium priority for 'transparency when fees spike.' Mainnet at ~3 gwei but the UX problem persists: users can't predict costs before committing.","hasDetailedContent":true,"content":{"id":"EIP-1559","summary":"EIP-1559 reformed Ethereum's fee market. Instead of bidding blindly, there's now a predictable base fee that adjusts with network demand, plus an optional priority fee (tip) for faster inclusion. This makes gas costs predictable, reduces overpaying, and burns part of the fee. Most importantly: users finally understand what they'll pay.","applicability":{"whenToUse":["Users need fee estimates before they sign transactions.","The product shows gas breakdown, speed options, or network congestion.","Max fee caps and priority tips need plain-language explanation."],"whenToAvoid":["The chain does not use EIP-1559 style base fee markets.","Users only see a single opaque fee with no breakdown possible.","Gas is fully sponsored and users never choose speed or fee level."]},"designerTakeaways":["You can show base fee, priority tip, and max fee as separate readable rows.","You can offer Slow, Normal, and Fast speed presets tied to tip amounts.","You can explain refunds when the actual fee is below the max cap users approved."],"mentalModel":[{"label":"Network demand","description":"Block usage vs target drives the base fee up or down each block. Users do not set the base fee directly."},{"label":"Base fee","description":"The protocol-calculated network fee, burned after inclusion. Show it as the predictable part of the cost estimate."},{"label":"Priority tip","description":"An optional tip to validators for faster inclusion. Speed presets map to tip amounts in plain language."},{"label":"Max fee cap","description":"The highest fee the user approves. Actual payment is min(max, base + tip), with unused headroom refunded."},{"label":"Confirmation UX","description":"Show estimated cost early, separate max from expected, and explain refunds so users are not scared by the ceiling number."}],"problemsSolved":[{"problem":"Users had no idea what gas price to set","oldWay":"Guess gas price, overpay by 10x or underpay and fail","newWay":"Base fee is known, just add small tip","impact":"critical"},{"problem":"Transaction costs unpredictable","oldWay":"\"Will this cost $5 or $50? Who knows!\"","newWay":"Clear estimate: base fee + tip = predictable cost","impact":"critical"},{"problem":"Users overpaid during gas spikes","oldWay":"Set high gas to ensure inclusion, pay 5x market rate","newWay":"Max fee as ceiling, only pay actual base + tip","impact":"high"}],"uxPatterns":[{"name":"Gas Fee Display","description":"Clear breakdown of transaction cost","mockup":"concept/fee-market","userFlow":["User initiates transaction","App fetches current base fee","Suggests reasonable priority fee","Shows max fee as safety cap","User sees clear cost estimate"]},{"name":"Speed Selector","description":"Choose transaction priority","mockup":"concept/fee-speed","userFlow":["User sees speed options","Each shows tip, time, cost","Selects preferred speed","Max fee calculated automatically","Confirms transaction"]},{"name":"Gas Tracker","description":"Real-time network gas status","mockup":"concept/gas-tracker","userFlow":["User checks gas before transacting","Sees current base fee","Views trend direction","Decides to wait or proceed","Historical context helps timing"]}],"uiComponents":[{"name":"GasFeeEstimate","description":"Shows estimated transaction cost","states":["loading","ready","congested","low"],"props":["baseFee","priorityFee","maxFee","estimatedCost"]},{"name":"SpeedSelector","description":"Choose transaction speed/priority","states":["slow","standard","fast","custom"],"props":["options[]","selected","onSelect"]},{"name":"BaseFeeIndicator","description":"Current base fee with context","states":["low","normal","high","very-high"],"props":["baseFee","trend","historical"]},{"name":"MaxFeeWarning","description":"Explains max fee vs actual fee","states":["hidden","shown"],"props":["maxFee","estimatedFee"]}],"antiPatterns":[{"pattern":"Only showing max fee without context","why":"Users think they'll pay max, scared by high number","instead":"Show \"Estimated: $2.50 (max: $4.00)\" with explanation","severity":"high"},{"pattern":"Not explaining base vs priority fee","why":"Users confused by multiple fee components","instead":"Simple breakdown: \"Network fee + tip\"","severity":"medium"},{"pattern":"Setting max fee too close to base fee","why":"Transaction fails if base fee rises","instead":"Buffer max fee above expected base fee","severity":"high"},{"pattern":"Hiding fee until confirmation screen","why":"User shocked by cost at last moment","instead":"Show estimated cost early in flow","severity":"medium"}],"onMonad":[{"aspect":"Gas Price Volatility","ethereum":"Base fee can spike 12.5% per block","monad":"More stable due to high throughput","designImplication":"Estimates are more reliable"},{"aspect":"Confirmation Time","ethereum":"12-15 seconds per block","monad":"Sub-second finality","designImplication":"\"Speed\" selector less relevant"},{"aspect":"Base Fee Level","ethereum":"Can be very high during congestion","monad":"Generally low due to capacity","designImplication":"Gas costs less of a concern"}],"keyTakeaways":["EIP-1559 = predictable gas fees","Show \"estimated\" not just \"max\" fee","Explain: you pay actual fee, not max","Offer speed options (slow/standard/fast)","On Monad: fees are more stable, less anxiety"],"technicalNotes":"EIP-1559 introduces type-2 transactions with maxFeePerGas (ceiling) and maxPriorityFeePerGas (tip). Actual payment = min(maxFeePerGas, baseFee + priorityFee). Base fee adjusts ±12.5% per block based on gas usage vs target. Base fee is burned, priority fee goes to validator. effective_gas_price * gas_used = total fee."},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-1559","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=EIP-1559","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/EIP-1559","markdown":"https://www.eipsfordesigners.com/standards/EIP-1559/content.md","agent":"https://www.eipsfordesigners.com/standards/EIP-1559/agent.md","api":"https://www.eipsfordesigners.com/api/standards/EIP-1559","official":"https://eips.ethereum.org/EIPS/eip-1559","discussion":"https://ethereum-magicians.org/search?q=EIP-1559"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}