Gas is a unit of computation, not a fee itself
The confusing part of "gas fees" is that gas isn't money. Gas is a unit that measures how much computational work a transaction requires from the network. Every operation a smart contract performs — reading a value from storage, writing a new value, checking a signature, doing arithmetic — consumes a fixed amount of gas. A transaction's total gas usage is just the sum of every operation it triggers.
The fee you actually pay is:
total fee = gas used × gas price
Gas used is about complexity: how much work the transaction does. Gas price is about demand: how much competition there is for space in the next block. These two numbers move independently, and conflating them is the source of most confusion about why fees behave the way they do.
Why a swap costs more gas than a transfer
A plain transfer — moving a token from wallet A to wallet B — touches one contract and updates two balances. That's a small, fixed amount of computational work, and it costs roughly the same amount of gas every time, regardless of market conditions.
A multi-step swap through a decentralized exchange is a different animal. A single swap transaction might:
- Check your token balance and allowance
- Transfer tokens into a liquidity pool contract
- Calculate an exchange rate based on pool reserves
- Route through a second or third pool if there's no direct trading pair
- Update reserve balances in each pool it touches
- Emit event logs for each step
- Transfer the output token back to your wallet
Each of those is a separate computational step with its own gas cost, and they add up. A transaction that routes through three contracts can easily consume ten to twenty times the gas of a simple transfer. This is why "gas used" scales with the complexity of what you're asking the network to compute — it has nothing to do with how many dollars are changing hands. A $10 swap and a $10,000 swap through the identical contract path consume identical gas.
Why the price per unit spikes: block space is an auction
Gas used tells you how much work a transaction requires. Gas price tells you how much you're paying per unit of that work, and this is where volatility comes from.
Each block has a limited amount of gas capacity — think of it as a fixed number of computational "slots" available roughly every 12 seconds. Miners or validators decide which pending transactions to include, and when there are more transactions competing for inclusion than space allows, it becomes an auction. Users effectively bid a gas price, and higher bids get prioritized.
On a quiet day, transaction volume is well under block capacity, so almost any bid gets included in the next block or two. Gas prices stay low — cents to a couple of dollars for routine activity.
Demand spikes change this immediately. A popular NFT mint opening at a fixed time, a market crash triggering a wave of liquidations and panic-sells, a new token launch attracting speculative volume — all of these flood the network with transactions wanting the same limited block space at the same moment. Everyone bidding against everyone else for a fixed number of slots pushes the market-clearing price up, sometimes by 50x or more within minutes. This is mechanically identical to any other auction with fixed supply and a demand shock: the item doesn't change, the price does.
This is why the exact same swap — same contracts, same gas used — can cost $1 on a Tuesday afternoon and $50 during a network-wide liquidation cascade. The computation didn't get more expensive. The queue got longer.
Base fee and tip: how the price actually gets set
Most modern smart-contract networks split the gas price into two components.
A base fee adjusts automatically block by block, based on how full recent blocks have been. If blocks are consistently over a target capacity, the base fee rises to discourage marginal transactions and push demand back toward equilibrium. If blocks are running under capacity, the base fee falls. This is an algorithmic response to congestion, not something any single user sets — it moves whether you like it or not.
On top of the base fee, users can add a priority fee, sometimes called a tip, which goes directly to whoever is producing the block. The tip is your bid for faster inclusion when there's contention beyond what the base fee already reflects. During a calm period, a near-zero tip still gets you into the next block. During a rush, users start raising tips against each other in real time, and this bidding war — layered on top of an already-elevated base fee — is what produces the sharpest fee spikes.
The practical upshot: base fee reflects sustained network demand, and tip reflects how urgently you personally want to jump the queue right now.
Why gas spikes make small transactions uneconomical
Gas cost is denominated in the network's native computation unit, then converted to a dollar amount at whatever the token's current price is. Critically, it does not scale with the dollar value of what you're moving. A $40 fee is a fixed cost, not a percentage.
That fixed-cost structure means gas spikes hit small transactions disproportionately hard:
- A $20 swap with a $40 fee is a 200% cost. Nobody executes that trade. It simply doesn't happen — the transaction gets abandoned, not delayed.
- A $500,000 transaction with the same $40 fee pays roughly 0.008%. Functionally negligible, and the transaction proceeds without hesitation.
This is the structural reason gas spikes tend to filter out retail activity while leaving institutional and high-net-worth activity almost untouched. It's not that larger players are more willing to pay — it's that the fee is the same fixed number for both, and a fixed number is a rounding error for one group and a dealbreaker for the other. During sustained high-fee periods, on-chain activity data consistently shows smaller-value transactions dropping out first, which skews naive on-chain metrics (average transaction size, for instance) without reflecting any real change in overall interest.
This dynamic is also the core structural argument for layer-2 networks and other scaling approaches: if execution happens somewhere with more available block space, or is batched before settling back to the base layer, the fixed cost per user drops by orders of magnitude, and small transactions become viable again. That's a separate topic in its own right, but it's worth knowing that the entire category of scaling solutions exists largely because of the auction dynamic described above, not because the base layer is "slow" in some abstract sense.
Managing gas costs in practice
None of this is theoretical for anyone actually transacting. A few concrete habits reduce what you pay:
- Watch for time-of-day and day-of-week patterns. Network activity tends to correlate with trading-hours overlap across regions and tends to dip during low-activity windows (weekends, overnight in the dominant trading regions). Non-urgent transactions — claiming rewards, moving funds between your own wallets, routine approvals — can often wait for one of these lulls and cost a fraction as much.
- Set a priority fee deliberately, not by default. Most wallets suggest a tip based on recent blocks. If your transaction isn't time-sensitive, a lower-than-suggested tip often still confirms within a few extra blocks at meaningfully lower cost. If it is time-sensitive — you're reacting to a price move — paying the suggested tip or higher is usually worth it, because a transaction that lands late defeats its own purpose.
- Batch actions where the tooling allows it. Some contracts and wallet interfaces support bundling multiple operations — several approvals, or a claim-and-restake — into a single transaction. You pay one base transaction overhead instead of several, which matters more the smaller each individual action is.
- Avoid transacting during known high-demand events if the transaction can wait. Scheduled mints, major token unlocks, and volatile market opens are predictable sources of gas spikes. If there's no reason your transaction needs to land in that exact window, waiting an hour often costs nothing but saves a meaningful fee.
The underlying rule is simple even when the mechanics aren't: gas price is a real-time readout of how many other people want the same block space you do, right now. Trade when fewer of them are asking.