Fees on Ethereum can multiply within minutes and fall back just as quickly. The mechanism is an auction for a fixed resource, and it behaves the way constrained auctions always do.
Block space is a fixed supply
Each block can consume a bounded amount of computation, measured in gas. Simple transfers use little of it and contract interactions use considerably more.
Supply per unit of time is therefore fixed by the protocol, and it does not increase because more people want to transact.
Demand, by contrast, is not smooth. It arrives in bursts driven by whatever is happening across applications at that moment.
The base fee adjusts to occupancy, not to price
The protocol sets a base fee that every transaction must pay, and adjusts it block by block according to how full the previous block was.
Fuller than target and the base fee rises; emptier and it falls. The adjustment is capped per block but compounds quickly across several.
Sustained congestion therefore produces a rapid climb, since each increase applies on top of the last.
Competition for position drives the rest
Beyond the base fee, users add a priority tip to influence where their transaction sits in the block.
Where ordering carries value, such as claiming a limited allocation or being first to act on a price movement, participants bid tips far above ordinary levels.
Everyone else transacting during that window competes against those bids, which is why an unrelated event elsewhere raises the cost of a routine transfer.
Complexity is charged, not value
Gas measures work performed, so a large transfer and a small one cost the same while a contract interaction touching many storage slots costs far more.
Writing new data to state is among the most expensive operations, which is why first-time interactions with a token often cost more than subsequent ones.
Failed transactions still consume gas, because the network performed the computation before the failure condition was reached, and that work has to be paid for regardless of the outcome.
Why layers change the picture
Rollups execute transactions away from the base chain and post compressed data back to it, so many users share the cost of the space that data occupies.
Their fees still move with base chain conditions, but the exposure is divided across everyone in the batch rather than borne individually by each transaction.
The underlying constraint has not gone away. Ethereum still sells a fixed quantity of space per block, and anything competing for it is priced by the same auction.