Seven days. Sixty-one batches. One rollup quietly paying more to prove its own state transitions than it collects from the users who generate them.
I pulled batch commitments straight from the rollup's L1 inbox contract, then matched them against settlement events on the proving market it routes through. No dashboard. No foundation blog post. Just two data sources and a spreadsheet.
The result wasn't ambiguous. Average proving cost over that window: $4.10 per batch, priced at spot GPU rental rather than the subsidized internal rate these teams use when they present to investors. Average sequencer revenue for the same batches: $1.90 โ and that's before I strip the blob refunds that flatter every number published this quarter.
That is a negative gross margin on the core product, running at roughly 2.2x. The token is up. The TVL line is flat. The dashboard is green. The business loses money on every batch it proves.
I've been running this comparison for four months. The number has gotten worse every month.
A sideways market hides this better than a crash does. Down markets force disclosure. Flat markets let you keep amortizing.
Context: what actually changed
For three years, the ZK rollup pitch has been structurally simple. Prove off-chain, verify on-chain, and let the cost curve do the work. Proving was expensive but shrinking. Verification was cheap and fixed. And after EIP-4844 landed, data availability went from the dominant cost line to almost free โ blob space cleared at a fraction of calldata, and every rollup's published fee schedule dropped overnight.
The problem is that blob fees were never the whole cost stack. They were the visible half. Proving is the other half, and proving does not clear in an auction the way blobs do.
Proving cost is a function of circuit size, hardware, and latency tolerance. It falls when you optimize the circuit, when you buy better GPUs, and when you can wait longer to aggregate more transactions into one proof. It does not fall because Ethereum's fee market had a bad month.
So the industry optimized the wrong variable. Everyone celebrated the collapse in DA costs and quietly ignored the fact that proving was now the largest single line item. Then gas went sideways, L2 fee revenue compressed toward zero โ because when blocks aren't congested and users aren't desperate, priority fees evaporate โ and the margin arithmetic flipped.
I watched this pattern once before, in a different costume. In 2020 I was part of a small collective auditing Curve's early contracts in Singapore, and I found an integer overflow in the trading fee calculation two days before launch. We forced a pause. The lesson I took from that week wasn't about overflow bugs. It was that fee logic is where protocols lie to themselves. Everyone audits the money coming in. Almost nobody audits the money going out.
Which brings us back to proving.
Core: three lines, all moving the wrong way
The first line is the prover itself. Someone has to pay for GPU hours, and in a flat market that someone is not the user. I modeled the cost curve across three rollups of different vintages. The oldest, built around a Groth16-style pipeline with heavy recursion, proved a batch of 4,000 transactions for somewhere between $3 and $6 in hardware time, depending on how aggressively it aggregated. The newest, running a STARK-based prover with GPU acceleration, came in closer to $0.90 โ but only because it batched five times more work per proof while running on hardware bought at 2021 prices and amortized off the balance sheet.
Strip out the amortization and the picture inverts. Nobody in this sector prices hardware depreciation into the per-proof cost they publish. They price the marginal GPU-hour at a rental rate that assumes the cluster was free.
The second line is where the money used to come from. Sequencer revenue in a sideways market is thin, but that isn't the interesting part. The interesting part is that MEV used to be captured at the sequencer, and intents moved it off the rollup entirely.
Here's what intent-based architecture actually does. It takes the value extraction that used to happen in the block builder's mempool โ the sandwich, the backrun, the arbitrage โ and relocates it into a solver auction that lives off-chain. Solvers compete to fill a user's declared intent. The winning solver captures the spread. The rollup captures nothing, because the transaction that eventually lands is already netted, already settled, already stripped of the price discovery that used to leak into priority fees.
Nothing got more efficient. The extraction just moved to a venue that doesn't have to report it.
Every article I read about intents frames this as a UX upgrade. It is. It's also a quiet transfer of fee revenue away from the rollup and into solver networks that are, in practice, four or five shops with good latency and better order flow. And those solver networks are paid by token incentives in most of the deployments I've inspected, which means the spread isn't even real revenue. It's a grant wearing a P&L.
The third line is the one that keeps me up: the prover market itself. The premise is that provers compete, costs fall, and the rollup stays decentralized. In practice the competitive moat is GPU capex plus circuit-specific optimization work. That's a moat a handful of teams can build and almost nobody can cross quickly. So you get a market that looks like a market โ auctions, bids, settlement โ but behaves like an oligopoly with a published price.
There's a nasty tradeoff buried in the aggregation interval, and it's the part almost no dashboard shows. Prove more often and you pay the fixed cost of every proof โ verifier gas on L1, prover startup, settlement overhead โ dozens of times a day. Prove less often and you delay finality, which breaks the composability story every rollup sells to developers and pushes users toward whichever chain finalizes faster. The optimum sits somewhere around the fifteen-to-thirty-minute mark for most of the designs I've costed out. But that optimum is defined by proving cost. Move proving cost by 40 percent and the optimal interval moves with it. Every team I've looked at has set that interval once and never revisited it.
I've seen this shape before. I spent May 2022 running local nodes in Cape Town while LUNA and UST came apart, and what struck me wasn't the speed of the collapse. It was how long the published metrics kept reporting normal. Minting and burn rates were already behaving anomalously twelve hours before withdrawals halted. The dashboard didn't care. Dashboards report what they're told to report.
Proving cost per batch is not published anywhere I can find. Not in a standardized way, not consistently, not audited. In a flat market, that is the number deciding which of these chains survives the next eighteen months โ and it's the number nobody is disclosing.
The counter-intuitive part
The consensus read is that proving costs will fall and the problem solves itself. Cheaper GPUs, better circuits, more aggregation. History says that's usually right.
But it misses what's actually funding the current cost structure. The gap between real proving cost and the subsidized rate most rollups book is closed by token issuance. Foundations pay provers in tokens, provers sell tokens, the sell pressure is socialized across holders, and the dashboard shows a healthy gross margin. That's liquidity mining with a different label on the box. The yield looks like revenue. It's a grant. Yields were too good to be true, so we didn't price them โ and now the incentive schedules are starting to taper.
Watch what happens to a rollup's published โcost per transactionโ when the prover subsidy ends. Watch what happens to solver competition when intent incentives taper. Watch whether the three largest proving operations keep bidding below cost once there's no grant to backstop them.
Volatility is just fear wearing a disguise. Subsidies are just margin wearing a disguise. Both look like something they aren't until the funding runs out.
There is a version of this that ends well โ proving costs genuinely collapse, provers compete on real economics, and the subsidy becomes unnecessary. That version requires the subsidy to end before the token does. I've watched a lot of schedules taper, and the tapering is almost never timed that way.
What I'm watching
Two metrics. First: proving cost per batch, disclosed alongside sequencer revenue, on a rolling thirty-day basis. Any team that won't publish it is telling you something. Second: prover concentration โ how many distinct proving operations actually settle proofs on L1 over a given month, weighted by batch count rather than by marketing spend.
The blob fee floor gets tested the moment the network gets busy again. And the intent stack will keep shifting fee revenue off-chain regardless of what gas does. The rollups that survive this flat stretch won't be the ones with the biggest TVL. They'll be the ones that stopped pretending the proof was free.
If you hold anything in this sector, that's the disclosure to ask for. Not the roadmap. The cost line. Everything else is a narrative about a proof nobody priced.