Throughput loss of repricing
At a throughput anchor the fair price for an op is its exact fractional gas,
exact = anchor_rate · runtime_ms / 1000 — the cost at which a block full of
that op runs at exactly the anchor's Mgas/s. Charging anything else wastes throughput: overcharge
a cheap op and the gas limit binds before the real-time budget does, leaving compute capacity
idle. This page compares three ways the protocol could price each op at
100 Mgas/s:
This page focuses on the operations repricing makes cheaper. Throughput is wasted only when an op is overcharged — its fair price sits below today's cost, so repricing would cut it. Operations that repricing would make more expensive (underpriced today, fair price above the current cost) are undercharged, not wasting throughput, so they are treated as zero loss throughout this page rather than offsetting the overcharges. The loss figures below therefore measure only the wasted-throughput side.
- No reprice — keep today's integer gas cost. Loss =
max(current − exact, 0). - Reprice + round — charge
max(⌈exact⌉, 1), an integer ≥ 1. Loss =⌈exact⌉ − exact. - Reprice + fractional — charge
exactdirectly. Loss = 0 — the ideal, and the baseline the other two are measured against.
We score each scenario on two metrics. Opcode-level loss is the unweighted
per-op loss / charged — the share of the gas you pay for that op that is waste.
Mainnet-traffic loss is Σ w·loss / G, each base op's
loss weighted by how often it runs on mainnet (Xatu opcode traces), over
G = total block gas used — all gas
the chain burns, including the 21k intrinsic and calldata over the same window.
Loss is computed per fitted gas coefficient. The traffic metric weights only each op's base (per-execution) cost by its mainnet frequency — size-dependent per-word/round costs (KECCAK, copies, hash precompiles) are shown per-op but left out of the weighted total. Because cost-increase ops are floored to zero loss, no undercharge offsets an overcharge: the totals are a pure sum of wasted throughput over the ops repricing makes cheaper. See the methodology for the full mapping.
Headline at 100 Mgas/s
| Scenario | Opcode-level loss median / mean per op |
Mainnet-traffic loss median / mean per hour |
|---|---|---|
| No reprice (current gas) | 72% / 65% | 12.3% / 12.4% |
| Reprice + round | 28% / 31% | 2.6% / 2.6% |
| Reprice + fractional (ideal) | 0% / 0% | 0% / 0% |
Repricing and rounding to an integer cuts the throughput wasted on mainnet compute from 12.4% of block gas (today's prices) to 2.6%. Going fully fractional removes that last 2.6% — the price of insisting on integer gas. Under this repricing 62 of 73 base ops would see a price decrease. 36 of 73 base ops already cost below 1 gas at this anchor, which is why rounding (forcing them to ≥ 1) still leaves a residual loss.
Loss vs. anchor
How each metric moves with the anchor. No reprice falls steeply: a higher anchor enlarges every op's fair price, so today's fixed integer cost is a shrinking overcharge — and past a point an op flips to underpriced and drops out of the loss entirely (floored at zero). Round stays nearly flat, because rounding discards roughly half a gas per cheap-op execution at any anchor. Fractional is zero everywhere. The marker is the current 100 Mgas/s anchor.
Opcode-level loss (median per op)
Mainnet-traffic loss (gas-weighted)
Loss per hour of mainnet traffic
The mainnet-traffic loss at 100 Mgas/s recomputed for each hour's own opcode mix over 720 hours of blocks — the spread shows how much the loss depends on what the chain happens to be running. No-reprice (mean 12.4%) sits well above round (mean 2.6%); fractional is 0.
Per-operation loss
Loss for each fitted gas parameter at 100 Mgas/s — the no-reprice overcharge (today's price vs. the fair price) against the rounding overcharge. Fractional pricing would zero every bar. Ops that repricing would make more expensive (underpriced today, fair cost above current) show zero no-reprice loss — they need an increase, not a cut, so they waste no throughput here. This is every coefficient, base and per-word; only the base ones carry a mainnet count.