Reducing Gas Waste: Private Bundles vs Public Auctions
**Answer first** — Private bundles save gas in two specific ways that don't fully overlap: **(1) atomic submission** means a failed simulation costs nothing on-chain (no gas burned

Answer first — Private bundles save gas in two specific ways that don't fully overlap: (1) atomic submission means a failed simulation costs nothing on-chain (no gas burned for reverted attempts), and (2) sealed-bid pricing means you don't bid against searchers seeing the same opportunity in the public mempool, so you pay your reservation price instead of an auction-cleared price. On Ethereum mainnet for contested opportunities, the gas savings are usually meaningful — often 20–60% of what a naive PGA bidder would pay over the same trades. On chains without bundle relays (Optimism, Base, Arbitrum, Polygon), "private bundles" don't exist as a product; the equivalent discipline is single-tx atomicity through an executor contract, plus low-latency sequencer access. The trap most operators fall into is comparing private vs public on inclusion rate alone — that misses the gas savings on rejected/reverted attempts, which is often where the bigger PnL gap lives.
Mastery path
- What is MEV?
- Inclusion probability 101
- Fixing failed bundles guide
- Reducing gas waste (current)
- Private bundle vs public mempool
The gas math, decomposed
Compare a private-bundle path and a public-PGA path over the same 100 attempted backruns:
| Step | Public PGA | Private bundle (Flashbots etc.) |
|---|---|---|
| Trigger detected | Same | Same |
| Compute backrun | Same | Same |
| Simulate | Same | Same |
| Bid submission | High priority fee, public mempool | eth_sendBundle, sealed |
| Other searchers see your bid? | Yes — they raise theirs | No |
| If your tx loses the auction | Mined anyway, possibly reverts → gas paid | Not included → gas free |
| If your tx wins | Mined, gas paid at your bid price | Mined, gas paid at builder-accepted price |
| Reverted attempt cost | Full gas, no profit | Zero (relay drops the bundle) |
The "if your tx loses" row is where the savings concentrate. On contested mainnet routes, naive PGA submission means every attempt costs gas regardless of outcome — including the ones that lost the bidding war and reverted on chain. Private bundle submission converts those reverted-attempt costs to zero.
When private genuinely saves real money
Three conditions where the savings are large:
- High contention. Opportunities visible to many searchers (large DEX swaps, liquidations cascade events, depeg scenarios). Public PGA bidding here gets out of control fast — the auction clears at uneconomic levels. Private bundles let the builder pick a winner at a sensible price.
- Low success-rate strategies. A backrun strategy that simulates profit on 100 candidates but only wins 30 has 70 losing attempts. Public path: gas paid on most or all of the 70. Private path: gas paid on zero of them.
- Frequent simulation drift. State moves between sim and send; a strategy that reverts often on chain wastes gas every revert. Bundle submission with
revertingTxHashesproperly used (or the relay's auto-drop on revert) eliminates that waste.
When public is acceptable
Sometimes the public mempool is genuinely the right path:
- Uncontested opportunities on cheap chains (sub-cent gas). When gas is essentially free, the auction risk is low. The simplicity of public sends has its own value.
- Strategies that need probe-and-retry shapes where landing matters more than perfect pricing. Some liquidation strategies fall here — first searcher to land wins, exact price less important.
- Chains without bundle relays. Optimism, Base, Arbitrum, Polygon (unless you're using FastLane). The "public mempool" caveats on these chains are different — there isn't really a public mempool to bid against, the question is just sequencer ordering.
For these cases the discipline becomes: tight gas caps, tight slippage caps, atomic-route encoding, kill-switch on session budget. Public submission with strong caps can be safe.
The chains-without-relays case
On Optimism, Base, Arbitrum, and Polygon, the conversation is different because there's no Flashbots-equivalent bundle relay (Polygon has FastLane but it's a partial-coverage product).
The gas-waste reduction strategies on these chains:
- Single-tx atomicity through an executor contract. Instead of two top-level sends, one contract call that does both legs and reverts on partial fill. The revert costs just the contract's setup gas, not both legs.
- Pre-sign simulation against a chain fork at current head. Catches reverts that would otherwise pay gas on chain. The FRB Agent does this automatically.
- Live fee re-query immediately before signing. On OP Stack chains the L1 portion of the fee shifts inside a block during blob-demand spikes; signing against a stale value is how you over-pay.
The combination gets you most of the gas-savings benefit without a bundle relay. Not zero gas waste, but bounded.
The metric trap
Operators sometimes compare private vs public on inclusion rate alone. That misses where the savings are.
Better comparison framework:
| Metric | Why it matters |
|---|---|
| Inclusion rate | How often you land |
| Gas-paid-per-attempt | What you pay regardless of outcome |
| Gas-paid-per-included-tx | What landing costs |
| Gas-paid-per-reverted-attempt | The hidden cost public hides and private eliminates |
| Realised-vs-sim PnL gap | Whether the model is honest |
Run all five over a few hundred attempts. The gas-paid-per-reverted-attempt is the one that surprises operators on first measurement — it's often a third or more of total gas cost for naive public-mempool strategies, and it's recoverable.
Working configuration
For Ethereum mainnet:
- Default to private bundle submission through fan-out (Flashbots + Titan + beaverbuild + rsync-builder).
- Fall back to public mempool only with strict caps (per-trade gas, slippage) and only for strategies where the contention math says public is fine.
- Always use
revertingTxHashescorrectly so unintended revert paths cost zero on-chain gas.
For OP Stack / Arbitrum / Polygon:
- Pack atomic into a single executor-contract call that reverts on partial fill.
- Simulate against fork at current head before every send.
- Re-query live fee state at sign time, not at strategy entry.
- FastLane on Polygon for atomic-bundle submission with auction-priced inclusion (paired with public-mempool fallback).
References
Step after reading
Launch FRB dashboard
Connect your wallet, pair the node client with a 6-character PIN, and assign the contract mentioned above.
Need the signed build?
Download & verify FRB
Grab the latest installer, compare SHA‑256 to Releases, then follow the Safe start checklist.
Check Releases & SHA‑256Related Articles
Further reading & tools
Discussion
No notes yet. Add the first observation, or share the link with your team on X (@MCFRB).