Block-level attack surfaces
Censorship and inclusion attacks
An attacker can report a bad price, censor all disputes for the settlement time, and settle the bad price, draining any external notional that depended on it.Censorship context
Assume all block producers are accepting bribes, and if the bribe is large enough, they will not include dispute transactions. Assume zero altruistic block producers, perfect bribery infrastructure with 100% participation, and zero slashing. Alternatively, assume ePBS is live, which makes these conditions realistic. The attacker submits a bad price and tries to censor all disputes with bribe payments for the settlement time.Block count vs. unique producers
The below formulas assume per-block bribery and try to find an oracle game settlement time to enforce costs on an attacker, where each block is an independent bribe event (e.g. via ePBS). More generally, the settlement window must contain enough independent bribe events to satisfy the grief ratio. What counts as an independent event depends on the bribery infrastructure:- Per-block bribery (ePBS flow): each block is a separate bribe event, so in blocks is correct as stated below.
- No strong commitment infrastructure: a producer controlling non-contiguous streaks (e.g. AAAA BB AAAA) must be re-bribed per streak, so the settlement window must contain enough runs to satisfy the grief ratio.
- Credible long-horizon bribery commitments: a producer is bribed once for all their blocks regardless of streaks, so the settlement window must contain enough unique producers.
Linear notionals
The attacker has an external notional , submits a price with error with oracle initial liquidity , and censors disputes for blocks. The profit and cost of the attack are:
where is the cost to report (from Oracle Accuracy & Cost, under and ) and (otherwise disputes are unprofitable and censorship is free). Each block, the attacker must bribe at least the net dispute profit — the amount a block producer would earn by including a dispute.
For a desired grief ratio (where the attacker loses dollars for every dollar extracted), set :
Solving for with :
For example, consider a $1 million perpetual long with a price settled by an openOracle initial report with $100k of initial liquidity in each token, and for simplification assume 0 cost to report. If an attacker submits a price 5% off, they must pay >$5k per block since that is the dispute profit available to a block producer who includes a dispute. The attacker extracts 5% on $1 million = $50k. If the settlement time is >10 blocks, the extraction is strictly less than the bribery cost.
Binary notionals
For binary notionals, the internal oracle price error must be the distance from the true price to the binary threshold . Here, we assume the attacker’s profit is . Define the required price error as . The cost of the attack is the same:
Setting :
Solving for with :
In a liquidation setup, risk increases when the configured settlement time is less than the required safe time .
L2 sequencer trust
On L2s, a sequencer is generally trusted for transaction inclusion. This places a hard limit on the amount the oracle can secure without better inclusion guarantees. If the amount at stake exceeds what the sequencer can be relied upon for, the oracle can migrate to L1.Parasitic open interest under censorship
External notional can latch onto a report as parasitic open interest, increasing and decreasing , which increases the required settlement time for a given grief ratio. However, in a censorship bribery context, parasitic open interest is unstable. If there is standing liquidity willing to latch onto any report that fits within its parameters, an attacker (original non-parasitic counterparty) can add their own notional to the same report. Anyone who latched on blows up, unfortunately taking the original passive oracle dependent with it. Standing liquidity is therefore economically unstable and likely to be selected out over time before the oracle user submits a price request. Contrived oracle games can also take advantage of parasitic open interest: as soon as there is enough standing liquidity, the payoffs are added together and a game can be contrived to take advantage of them.Block stuffing attacks
Anyone can attempt a block stuffing attack. By spamming high-fee transactions to inflate gas costs, an attacker can report a bad price and make it uneconomic for honest disputers to respond — unless those disputers are economically aligned to the oracle output. Assume one attacker whose counterparty is completely passive, and assume zero swap or protocol fees in the oracle game. The attacker wants to sustain a mispricing for the settlement time. The gas fee per dispute must exceed the dispute profit , where is the percentage oracle price error and is the oracle liquidity. For simplicity, we avoid the cost of reporting in the dispute economics. The attacker’s total cost is:
where is the block gas limit, is the gas per dispute transaction, and is the settlement time in blocks. On EIP-1559 chains, block stuffing exponentially escalates the base fee at per block, which is burned.
Now assume the attacker raises the base fee just past the point where it prices out disputers, then alternates stuffing blocks to stabilize. Ignoring ramp-up cost and assuming the attacker alternates every other block:
Assume the attacker earns on a linear external notional. The attack is profitable when:
Simplifying, the attack is unprofitable when:
For example, on Ethereum L1 with a block gas limit of 60 million and dispute gas of 250k, there are 240 disputes per block to price out. For a linear notional of $1 million and 15 blocks of settlement time, the required initial liquidity is only ~$550. Increasing liquidity increases the attacker’s grief ratio linearly.
If real gas fees are already near the point of pricing out disputes, the alternating attack gets cheaper. The initial liquidity should already be high enough that gas spikes do not impact accuracy beyond what is tolerable. At $50k initial liquidity for example, the cost to compensate the initial reporter is cheap relative to the $1 million notional.
An attacker who is also a block producer can censor disputes on their own blocks and combine this with alternating stuffing on blocks they don’t control. If the attacker controls some fraction of blocks, parameters should scale like or , or a combination.
If we include the cost of reporting in the dispute economics, the net dispute profit becomes (from Oracle Accuracy & Cost), and the unprofitable condition becomes:
For example, with , , , the reporter cost is , and the required liquidity for the same Ethereum L1 parameters rises from ~$550 to ~$780. As gets very close to the cost of reporting , the required liquidity approaches and exceeds the external notional. However, at that point the price error is so small that the barrier game from Linear notional manipulation comes back into play, and it becomes harder for the block stuffing attack to settle. Also, the use of higher initial liquidity fractions suggested by the linear notional manipulation section makes this strategy untenable. For example, the required liquidity to defend against a price error 10% wider than the honest dispute barriers from block stuffing attacks is:
This is still much smaller than , or = $100k, even at a price error just 10% past the reporter cost. This also assumes the price does not move during the settlement time, which is maximally favorable to the attacker.
For binary notionals, the required price error may be very large — for example, for liquidations, the distance from the current price to the liquidation threshold likely renders block stuffing very expensive relative to the fixed liquidation penalty for any sensible initial liquidity so long as the borrower is maintaining an appropriate health ratio.
On the one hand, an attacker can add up all payoffs attached to the oracle, perform a block stuffing attack, and cover multiple oracle games with the same spend. On the other hand, the game is symmetric, and the larger the amounts get, the more likely the attacker’s counterparties will not be completely passive during a block stuffing attack. It just takes one counter-dispute for the attacker to lose that portion of their payout, at great expense. There are some other mitigations: in a p2p lending setup, longer settlement times for liquidation + a max base fee tolerance at time of settlement can mitigate the effects of these attacks, because the attacker no longer gets that payout. The base fee grows 12.5% per block in the ramp-up period, protecting the smaller oracle game dependents from the blockspace being occupied by transactions affecting larger dependents.
There are clearly tradeoffs with the max base fee tolerance approach: for example, it may take multiple oracle games to liquidate a position, and you also create incentives to push the base fee past the tolerance. Additionally, any payouts where ETH is involved benefit here, since gas costs are denominated in ETH regardless of its price. But with appropriate parameterization, we can minimize the negative effects of this approach.
Dynamic programming analysis
Under censorship, the manipulator can report a wrong price and pay ePBS bribes to suppress disputes until suppression is no longer worth it. At that point, they can either let the round settle or self-dispute to refresh the game and repeat. Here, we investigate an unconstrained strategy where the attacker can choose report placement and refresh timing freely. This is exceptionally complicated, so we would invite anyone to correct any errors they see. The analysis should be treated as an approximation. Unless otherwise noted, assume the manipulator effectively controls inclusion and can always capture the dispute slot when choosing to refresh. Under this assumption, internal oracle game losses are abstracted away and the dominant tradeoff is external extraction versus censorship spend. This can be written as a single dynamic program on an augmented state:- Round index with game size
- Settlement timer (blocks remaining in the round)
- Settlement horizon (fixed blocks per round; is initialized at and counts down to 0)
- Raw reported-vs-true error in attack direction (fractional price error)
The honest barrier may differ from under self-consistent manipulation barriers, but for simplicity we use the form here. External extraction scales with raw error , while censorship cost scales only with excess error past the honest barrier. A simple per-block censorship bribe requirement is:
Censorship is not required inside the dispute barriers.
The manipulator’s control each block is:
censor: pay for one block, evolve under unconditional price dynamics, and reduce timer .refresh: self-dispute, choose a new bad report , reset timer, and move to next round size .settle: settlement is only available at timer expiry ().
and for :
where is the allowed refresh report space (equivalently, post-refresh mispricing states). We allow unconstrained bad report placement in attack direction, so . In the censor branch, follows the unconditional one-block return process. Refresh moves the game to , so both future bribe costs and future delay payoffs scale with .
The way to calculate this is:
- Pick a round cap (for example, 80), a settlement horizon , and a list of for price evolution (positive and negative). Then define the attacker-choosable subset for attacker price reports (initial and refresh), where .
-
To handle price movements between blocks (the term above), build the one-block transition probability matrix on the same list of :
All this means is, for a given starting , what are the chances it evolves into other in the list over one block of time. This is how we account for the underlying distribution of returns.
- Fill settlement values for every round and every in the list: .
-
For rounds down to , for blocks remaining starting from to (backwards in time), and for each in the list:
Once we arrive at , we have a list of across all choices of . We first compute this list for , then , and so on: it is easy to calculate the used in the next round in the refresh step, since we have the list of values for the round after it:Here (and in the equation above), is just a scan over all allowed next-round report choices in , and the argmax picks the best one.
- We have enough information to continue until all are filled down to .
For intuition, if the manipulator holds a fixed report for blocks then settles in round , define a one-round objective representing strategy value at block and price error :
For , the slope is:
So once , increasing lowers value. Equivalently, with , the condition is . The core limiting force is the per-block censorship spend implied by the oracle game’s initial liquidity ratio and settlement time.
Numerical sweeps from this model
Unless otherwise noted:- Counterparty is passive.
- Attacker can choose the prices for the initial report and each refresh report from unconstrained attack-direction space.
- Per-block censorship cost is .
- Score is , reflecting initial report cost + bias extraction out of the notional in a single “cost” term.
- We report score in units, and optionally convert to percent using a 4% daily volatility assumption.
Settlement window tradeoff
For Gaussian increments, sweeping block count (same and grid):Bribe and control sensitivity
At , Gaussian, passive counterparty:Unique entity modeling
You could consider long-horizon bribery commitment infrastructure as a smart contract where validators can prove multiple keys are held by one entity, accept bribes, then be slashed in-contract if there is proof they included a forbidden transaction over the time window. We assume zero social slashing at the validator level. Alternatively, one could imagine an all-or-nothing contract where everybody is only paid if the attempt succeeds, without slashing. To approximate a unique entity bribery regime (rather than strict per-block bribery), a first proxy is to scale per-block censorship spend by an event compression factor:
So if a 100-block window has about 30 unique validator entities, this maps to (
bribe_mult = 0.3).
This is a compressed payment proxy, not a full commitment game. It is best read as a stress shortcut for “fewer payable censorship opportunities” while keeping the same Bellman structure.
At , Gaussian increments:
Late counterbribes
If a defending party chooses to contest near the end of a round, their one-shot loss can be small relative to external notional. In one representative run (Gaussian, , , , , ), forward simulation under the optimal policy gave:- .
- .
- .
For example, with and , this is about for that move.
In practice, the attacker might increase bribes towards the end of the window to try to stave off counterbribes, but structurally counterbribes seem cheap for the counterparty and inflict a much greater expense on the attacker.