OpenOracle Integration

Statoblast uses OpenOracle for one narrow job: getting a fresh REP/ETH price when a pool needs to check solvency. It does not use OpenOracle to decide market truth; truth still comes from local escalation and, if necessary, Zoltar forks.

The core lifecycle is simple. A user stages a liquidation, withdrawal, or allowance update with the pool's coordinator. The coordinator requests OpenOracle when needed, and after settlement it either executes the restricted pool action with that fresh price or leaves a recovery path if execution conditions no longer hold.

A stale or missing price sends solvency-sensitive operations into staging because Statoblast would rather delay a withdrawal, liquidation, or allowance change than let an old REP/ETH quote distort pool solvency checks.

The OpenOracle report instance uses WETH as token1 and REP as token2. Making the exact side WETH lets the coordinator size the report directly from ETH-denominated gas cost, without assuming a REP/ETH conversion price.

ORACLE-A1 is a deployment assumption. The Protocol Security Model owns its definition, excluded guarantees, residual loss allocation, and review classification. This page owns integration mechanics.

The contract and research context lives in: OpenOracle documentation, the OpenOracle paper, the local OpenOracle contract, the OpenOraclePriceCoordinator integration, and the Statoblast whitepaper's REP/ETH Price Oracle section. Current oracle research lives in the OpenOracle Technical Details sidebar, especially Attack Vectors and Attack Vectors (Inclusion).

OpenOracle Role

The generic oracle lifecycle comes first. Statoblast's coordinator calls OpenOracle and becomes the initial reporter, then consumes the settled result through OpenOracle's callback.

OpenOracle atomically creates and funds a report for a token pair. Only its state hash is stored for an active game; the full preimage is emitted as packed report data. Later reporters can dispute by posting the contract-required replacement amounts. A dispute is valid only while currentTime < reportTimestamp + settlementTime; settlement becomes valid at equality, when a dispute is already too late. When a callback contract is configured, settlement calls that contract with the settled amounts.

The event-stream reference owns packed-log decoding, chronological replacement, hash verification, and settlement-block reconstruction.

In this repository the pair is WETH as token1 and REP as token2. The coordinator converts the callback amounts into the following REP per ETH price:

lastPrice = amount2 1018 amount1

REP/ETH PriceThe settled REP amount (amount2) is scaled by the fixed price precision and divided by the settled WETH amount (amount1).

This raw-amount ratio is a REP/ETH price because the configured WETH and REP contracts both use 18 decimals. The coordinator does not normalize token decimals inside the callback.

After the coordinator accepts a settlement, that accepted WETH/REP report becomes a REP/ETH coordinator price. The price is reusable only while it remains inside the freshness window; operation volume is not metered by the accepted report.

Four coordinator terms drive the rest of the integration behavior: staged operation, fresh price, liquidation threshold, and report liquidity.

A staged operation is a liquidation, REP withdrawal, or allowance update queued behind the coordinator until it can use a fresh price, meaning a settled coordinator price still inside PRICE_VALID_FOR_SECONDS, currently a five-minute cache window.

For liquidations, the relevant boundary is the liquidation threshold. A staged liquidation can execute only when the current REP/ETH price is strictly above that threshold and at least the configured liquidation distance beyond it, with that extra margin currently set by minLiquidationPriceDistanceBps.

OpenOracle disputes scale with report liquidity. The coordinator computes the initial WETH side from request-time inputs, and the sponsor may request more. The sizing section owns the derivation; ORACLE-A1 owns the security boundary.

Statoblast Integration

In Statoblast, every pool gets its own coordinator. That keeps pending operations, freshness windows, and callback state local to one pool instead of sharing one global queue across the protocol.

OpenOraclePriceCoordinator is deployed with an immutable OpenOracle address. Users request or execute liquidation, REP-withdrawal, and security-bond-allowance operations through the coordinator. When a fresh REP/ETH price is needed, the coordinator stages the requested operation and later calls the configured security pool to perform it.

Deployment is per pool. SecurityPoolFactory asks PriceOracleManagerAndOperatorQueuerFactory for a fresh coordinator for each origin or child security pool, wiring it to the shared OpenOracle, shared WETH, and that universe's REP token. SecurityPoolDeployer passes the coordinator into the pool, and the factory then calls setSecurityPool once with that nonzero pool. Only the configured pool may seed the coordinator's inherited lastPrice; execution instead starts from a user call to the coordinator, which targets that configured pool's operation methods. Child pools inherit the parent's last price as a starting value, but freshness is still controlled by the coordinator's settlement timestamp and validity window.

The factory contract still uses its older internal name, but it is the active deployment path for OpenOraclePriceCoordinator instances.

OpenOracle integration flow Statoblast queues solvency-sensitive operations behind a bounded OpenOracle REP/ETH report and executes them only with a fresh accepted price. User Operation liquidate, withdraw REP, allowance Coordinator price cache, staging guards OpenOracle coordinator reports sponsor funds disputer may replace settler finalizes Settle callback Execution Guardrails fresh price, pending report, and local safety checks Expired operations, stale liquidations, zero-effect withdrawals, and too-close liquidations are consumed.

Integration FlowThe coordinator is the trust boundary between Statoblast operations and OpenOracle reports. It applies guardrails before request and staging, then again after callback before execution.

If the cached price is valid, the coordinator attempts immediate execution after staging the operation record. Liquidation-specific gates, snapshot staleness, zero-effect withdrawals, or downstream pool checks can still consume the operation as a failed staged operation. Otherwise the coordinator can create one OpenOracle report and attach up to four staged operations to the settlement callback. Additional staged operations remain active but outside the auto-executed callback batch; if the fresh price remains valid and they have not expired, they require a later manual executeStagedOperation call.

Staged operation inputs are constrained before any oracle report is requested. Liquidation and withdrawal amounts must be non-zero, allowance updates may set zero, validForSeconds must be positive and no more than five minutes, liquidation must target a different vault, non-liquidation operations must target the caller's own vault, and staging is disabled after the security pool's local escalation has already resolved. Same-vault liquidation is rejected with Caller bad before the coordinator requests or uses an oracle report.

Report funding is caller supplied. The coordinator computes requestPriceEthCost, the caller-funded request bounty, from the current base fee, the callback gas limit, and the gas the coordinator expects to spend on report submission and processing:

requestPriceEthCost = block.basefee 4 ( callbackGasLimit + gasConsumedOpenOracleReportPrice ) + 101

Oracle Request CostcallbackGasLimit is the gas reserved for the settlement callback, gasConsumedOpenOracleReportPrice is the coordinator's own report-price callback work, and the small 101 offset keeps the forwarded bounty strictly above the computed gas product so the OpenOracle-funded reward path has a positive buffer instead of landing exactly on the boundary.

If a cached price is usable, the staged operation pays no oracle request cost and unused ETH is refunded. If a new report is needed, only the first pending settlement slot retains the request cost; requestPrice(proposedRepPerEthPrice, requestedInitialWeth) forwards exactly that bounty to OpenOracle and refunds any excess. That call also submits the initial WETH/REP report inside the same transaction, so the refresh sponsor funds the ETH bounty plus the initial OpenOracle position up front. The coordinator, not the sponsor, is recorded as the initial reporter. Disputes can replace that position. At settlement OpenOracle credits the final position to the final reporter; the callback supplies the accepted amounts to the coordinator but does not transfer them.

Both public request paths refund only a positive unused or excess ETH amount, using a low-level call to the caller. A contract caller must accept that callback. If it rejects the refund, the entire transaction reverts: operation staging or immediate execution and any newly opened report roll back together with the refund.

The coordinator refuses requestPrice(proposedRepPerEthPrice, requestedInitialWeth) while its cached price is still fresh, so callers cannot open a redundant pending report on top of a usable price. Once the cached price has gone stale and a new report is pending, only the original pendingReportSponsor can queue more staged operations against that in-flight settlement. Those follow-up queues pay no additional ETH join fee, and other callers must wait for settlement before staging their own operations. Every successful dispute replaces the current report and restarts its settlement window. The economic tradeoffs section owns the resulting cost and liveness analysis.

Dust self-dispute attempt. A reporter can choose amount2 = 1, meaning one atomic REP unit. On a token2-side self-dispute, the 1% protocol fee then floors to zero. After amount1 reaches escalationHalt, each replacement requires only oldAmount1 + 1, so the reporter can mechanically reset the settlement clock with one additional WETH wei plus transaction gas. The coordinator makes that halt at least one percent of pool open interest, raising the capital needed to enter this post-halt regime but not changing its one-wei marginal step.

That sequence is not a cheap permissionless lock under ORACLE-A1. An OpenOracle dispute executes one of the current reporter's limit orders as it installs the replacement. Against a report holding H WETH and one atomic REP unit, an independent token2-side disputer can install a sensible REP amount, become current reporter, and inherit the posted H WETH position while the dust reporter receives only the dust-side swap proceeds. The configured disputeDelay is zero, so this correction is immediately available. The dust reporter must therefore censor or continually front-run every profitable correction, whose inclusion bid can be funded by the exposed WETH value; inclusion only before each settlement deadline is insufficient.

Security-review classification. Indefinite funded resetting remains an accepted design property, not a bounded-liveness guarantee. A valid finding must account for the executable replacement position and demonstrate a free or underfunded reset despite profitable correction, fee recovery, simultaneous reuse of required capital, an invalid deadline transition, or unauthorized sponsor-queue use. See the normative review boundary.

The money flow is easiest to follow if each role is separated. The triggering caller pays the ETH request bounty, supplies the initial WETH/REP, and becomes the queue owner for that stale refresh window. The coordinator transfers and approves those assets, calls OpenOracle, and becomes the initial reporter. The eventual settler still receives the settler reward, and disputes can replace the initial report before settlement.

A successful correction swaps the wrong current report at an unfavorable rate, replaces its reporter, and makes the correction value available to the disputer if that corrected position later exits or settles. The wrong reporter therefore bears the corresponding loss on its posted WETH/REP position, subject to OpenOracle fees and integer rounding; no queued operation or pool exposure funds that profit.

The application proposes a REP/ETH price from the coordinator's cached lastPrice whenever it is non-zero, even after that price becomes stale. If no cached price exists, it requests a live WETH-to-REP Uniswap quote and does not substitute a fixed fallback. The coordinator enforces a non-zero proposed price, computes the request block's minimum WETH amount, selects the greater of that minimum and requestedInitialWeth, and derives REP amount2 with ceiling division. It does not certify the proposal; the correction trade is what makes a bad price costly to its reporter.

Worked example using a market snapshot taken at 2026-07-09 09:49:35 UTC: at that moment Ethereum base fee was 69,594,403 wei per gas (0.069594403 gwei), ETH traded at $1,750.34, and REP traded at $0.792188 or 0.00045231 ETH per REP. The USD quotes and the ETH-per-REP quote are independently rounded snapshot values, so reconstructing one from the other may differ by a few basis points. With the coordinator defaults used in this documentation revision, gasConsumedOpenOracleReportPrice = 100,000, gasConsumedSettlement = 1,000,000, and MAX_PENDING_SETTLEMENT_OPERATIONS = 4, the callback gas limit is:

callbackGasLimit = 1,000,000 4 = 4,000,000

Worked Callback Gas LimitThe current coordinator parameters reserve four settlement-operation gas budgets inside one callback.

requestPriceEthCost = 69,594,403 4 ( 4,000,000 + 100,000 ) + 101 = 1,141,348,209,200,101  wei

Worked Trigger CostThe caller who opens a fresh price request sends 0.001141348209200101 ETH, about $2.00 at that snapshot's ETH/USD price. This bounty is separate from the normal gas burned by the caller's own transaction.

The refresh sponsor's coordinator call supplies a proposed REP/ETH price and passes requestedInitialWeth = 0. For this worked example, the pool has no open interest, so the coordinator atomically computes and posts the gas-based minimum WETH amount and its matching REP amount2. At the snapshot base fee of 69,594,403 wei, the minimum side is 0.005621086396153847 WETH. Using the snapshot price of 2,210 REP/ETH gives:

amount2 0.005621086396153847 2,210 12.422600935500001870  REP

Worked Initial Report StakeThe refresh sponsor supplies exactly 0.005621086396153847 WETH and approximately 12.422600935500001870 REP. Because this example requests zero additional WETH and the example has no open interest, the selected amount equals the minimum computed from the onchain base fee and coordinator parameters. The coordinator derives the REP amount from that selected WETH amount and the sponsor's proposed price.

If no dispute replaces the report, settlement credits the full REP and WETH amounts to the coordinator as current reporter in OpenOracle's internal balances. The reporter withdraws those balances separately. The entire ETH request bounty is configured as the settler reward and is likewise credited to the settler's internal ETH balance; OpenOracle 0.2.0 has no separate reporter ETH reward. For coordinator-created reports, the coordinator is the initial reporter and forwards its withdrawable WETH and REP balance to the request sponsor during the settlement callback. If a disputer is the final reporter, that disputer receives the final position; the coordinator instead forwards only the prior-reporter swap proceeds credited to its own internal balances. The recovery path performs the same coordinator-owned withdrawal if the callback failed.

Escalation-game REP deposits are the exception to the staged callback path. When the pool has active security-bond allowance, depositToEscalationGame requires a fresh coordinator price and reverts if it is stale. After previewing the accepted REP deposit, the pool uses lastPrice for the post-transfer vault and pool coverage checks instead of queueing the deposit behind a report.

Security Model and Guardrails

Statoblast uses the oracle to preserve solvency accounting around ETH obligations backed by REP. The ORACLE-A1 section owns the required economic assumption. Locally, operations that can change REP backing or security-bond exposure must use a fresh, economically contestable REP/ETH price and pass local coordinator checks before they can affect the pool.

The minimum side is WETH, so the coordinator can calculate it directly from the current block's base fee. In the conservative correction direction, the true REP/ETH price is (1 + targetError) times the reported price. Correcting that report releases the fraction (targetError - fees) / (1 + targetError) of the WETH position before gas. The report multiplies one modeled dispute's base-fee gas cost by the required profit buffer and divides by that correction-profit fraction.

minimumToken1Report = max(1,ceil( block.basefeegasUnitsForOneDisputeopenOracleSecurityMultiplierBps (percentagePrecision+targetPriceErrorForDispute) 10000(targetPriceErrorForDispute-protocolFee-reporterFee) )) openInterestHalt = ceil(completeSetCollateralAmount100) escalationHalt = max(floor(initialWethReportescalationHaltMultiplierBps10000),openInterestHalt)

Dynamic Report and Escalation ThresholdThe initial-report minimum is calculated from the request transaction's block.basefee. A zero-base-fee block uses one WETH wei because OpenOracle rejects a zero report amount. The multiplicative-escalation halt is the greater of the selected initial report times the configured halt multiplier and one percent of the pool's stored ETH collateral backing complete sets. The open-interest division rounds up.

No REP price, assumed gas price, expected REP price movement, pool open interest, or individual protected-operation notional enters the minimum initial WETH calculation. Pool open interest instead raises escalationHalt through ceil(completeSetCollateralAmount / OPEN_INTEREST_DIVIDER), with OPEN_INTEREST_DIVIDER = 100. The sponsor may pass zero to use that minimum or request a larger initial WETH amount. The coordinator sets initialWethReport = max(minimumToken1Report(), requestedInitialWeth), sets OpenOracle currentAmount1 to that selected amount, and derives amount2 = ceil(initialWethReport * proposedRepPerEthPrice / 1e18) inside the same transaction. If that price is wrong by at least the configured target error (initially five percent), the resulting correction opportunity is designed to pay the modeled base-fee gas cost with the configured Open Oracle Security multiplier after the configured OpenOracle fees.

Formula input Current value Source
block.basefee Current request block EVM block context
completeSetCollateralAmount Current pool open interest in ETH units Configured security pool
OPEN_INTEREST_DIVIDER 100 (a 1% floor) Coordinator constant
gasUnitsForOneDispute 300,000 gas ORACLE_GAS_UNITS_FOR_ONE_DISPUTE
openOracleSecurityMultiplierBps 100,000 bps (10x) Factory constructor; initial default OPEN_ORACLE_SECURITY_MULTIPLIER_BPS
targetPriceErrorForDispute 500,000 / 10,000,000 (5%) Factory constructor; initial default ORACLE_TARGET_PRICE_ERROR_FOR_DISPUTE
protocolFee 1% Coordinator/OpenOracle report parameters
reporterFee 0.1% Coordinator/OpenOracle report parameters

Coordinator construction requires positive dispute gas units, a target error no greater than 100%, an Open Oracle Security multiplier of at least 1x, and combined OpenOracle fees below the target error. The factory stores its deployment configuration, so an invalid domain causes coordinator deployment to revert. Moving the target closer to the fee floor increases required WETH sharply; increasing the Open Oracle Security multiplier increases it linearly. A larger target reduces required WETH but tolerates a wider error before the modeled correction incentive applies.

At 30 gwei, the modeled gas cost is 0.009 ETH. After the 10x Open Oracle Security multiplier and the worst-direction five-percent correction fraction after fees, the minimum gas-based report is 2.423076923076923077 WETH, producing an initial-report-derived halt of 24.230769230769230770 WETH at the configured 10x halt multiplier. One percent of pool open interest replaces that halt only when it is larger.

Dynamic WETH report estimator

This calculator mirrors the onchain formula. The deployment parameters and caller-selected amount are shown as adjustable inputs to make their effect explicit. For a deployed coordinator, the base fee and pool open interest can change from one request block to another.

Initial-derived halt24.230769230769230770 WETH
Open-interest halt floor1.000000000000000000 WETH
Minimum token1 report2.423076923076923077 WETH
Selected initial WETH2.423076923076923077 WETH
Escalation halt24.230769230769230770 WETH
Modeled dispute gas cost0.009000 ETH
Buffered gas target0.090000 ETH
Correction profit fraction after fees3.7143%
Safety statefees below target error

Once a REP/ETH price is fresh, the coordinator relies on local operation guards: withdrawals must have an effect, liquidations must pass their queue-time snapshot checks and liquidation-distance check, and allowance updates execute against the current vault state.

Callback Rejection and Recovery

OpenOracle settles with a low-level callback whose success is intentionally not stored or emitted. It does not automatically undo settlement when the callback fails. The coordinator accepts callbacks only from the configured OpenOracle and only for the current pending report id. If those checks revert inside the low-level call, the OpenOracle report can still be settled while the coordinator remains pending. If the settlement transaction cannot leave enough gas headroom after attempting the callback, OpenOracle reverts settlement with InvalidGasLimit instead; in that case the report is not settled yet and coordinator recovery is not available.

Coordinator-level price rejections are separate from low-level callback failures. After a callback successfully enters the coordinator, a settlement with base fee above the request-time cap, zero amounts, or a computed zero price clears the pending id, emits PriceReportRejected, and does not update the price cache or replay pending operations. Those pending settlement operations remain queued for a later valid price report. If the pending settlement list is empty, another staged request can fund a replacement report. If pending settlement operation IDs still remain, an operator or user must call direct requestPrice(proposedRepPerEthPrice, requestedInitialWeth) with the ETH bounty and initial-report funding, then let that replacement report settle. When OpenOracle has already settled but the coordinator is still pending because the low-level callback did not complete, anyone can call recoverSettledPendingReport. Recovery clears the pending report, resets the settlement base-fee cap, and consumes only pendingOperationSlotId without treating it as a successful price update. Queue bookkeeping can still leave other staged operations active; those operations need a later valid price path, for example a direct requestPrice(proposedRepPerEthPrice, requestedInitialWeth) call that opens a new report and atomically submits its initial WETH/REP position before successful settlement.

Intentional Economic Tradeoffs

The ORACLE-A1 section owns the normative notional boundary and loss allocation. Operationally, the coordinator maintains no notional exposure budget: one fresh price may authorize multiple otherwise-valid operations.

The stale-price refresh sponsor retains the staging lane while its report is pending. A timely valid dispute replaces the reporter and restarts OpenOracle's settlement clock, so repeated disputes can delay settlement. Each extension incurs transaction execution and must fund the contract-specified replacement position. Under ordinary non-dust parameters, protocol fees and the required position also accumulate; integer flooring can leave dust-sized rounds unchanged before the escalation halt. There is intentionally no absolute coordinator deadline: the protocol does not claim liveness against a participant with unbounded capital who is willing to keep submitting and funding disputes. That availability model is separate from the dynamic initial WETH sizing rule and is not a bounded-liveness invariant.

Assumption Boundary and Attack Model

The equations below stress-test failure of ORACLE-A1: an attacker excludes correcting transactions until a bad REP/ETH report can settle and enable an outside payoff. They are not a contract-enforced exposure cap.

OpenOracle's inclusion analysis models an attacker who posts a wrong price and pays for censorship until the report can settle. For linear payoffs the settle payoff scales with price error, but Statoblast's most relevant liquidation payoff is binary: the attacker wins a fixed payoff only if the manipulated REP/ETH price is strictly above the liquidation threshold and satisfies the configured liquidation distance check. OpenOracle's inclusion analysis notes that binary payoffs therefore replace the linear settle payoff with externalPayoff, while keeping the same censorship-spend term.

The minimal attack story is: an attacker posts a manipulated REP/ETH report, an honest reporter would normally dispute it, and the attacker must keep that honest dispute or settlement correction out until the bad report can settle. The payoff is binary because the liquidation either becomes executable or it does not. The cost side scales with oracleReportLiquidity, the report's WETH-denominated liquidity; censorshipRate, the modeled per-step pressure needed to keep honest activity out; and censorshipDuration, how long the attacker must maintain that pressure.

In the equations below, price errors are fractions of the honest price, externalPayoff is the attacker's outside ETH-denominated payoff, and oracleLiquidityRatio compares report liquidity with that payoff. The bound is useful when the denominator is large enough that delaying honest correction costs more than the liquidation can pay.

The first boundary is how far the manipulated price must move before the liquidation can execute. The distance guard discounts the honest price, then the execution threshold and reported price error are measured against that honest baseline. The formulas in this attack model are continuous approximations for reasoning about payoff and censorship cost; the contract guard below them shows the integer check that actually gates staged liquidation execution.

liquidationDistanceFraction = minLiquidationPriceDistanceBpsBPS_DENOMINATOR discountedHonestPrice = honestPrice(1-liquidationDistanceFraction) executionErrorThreshold = max(0,liquidationThresholdPricediscountedHonestPrice-1) manipulatedPriceError = max(0,manipulatedPrice-honestPricehonestPrice)

Execution Error ThresholdThe manipulated price only creates liquidation payoff when its fractional error meets the guarded liquidation threshold.

thresholdPrice = floor(vaultRepPRICE_PRECISIONsnapshotTargetAllowancesecurityMultiplier) currentPrice > thresholdPrice distanceBps = floor((currentPrice-thresholdPrice)BPS_DENOMINATORcurrentPrice) distanceBps minLiquidationPriceDistanceBps

Contract Liquidation GuardThe coordinator computes the floored threshold and distance checks before calling the pool. SecurityPool then rechecks the scaled liquidation-threshold inequality and rejects chunks that fail target, caller, or floor checks. Equality passes only at the distance check; currentPrice must still be strictly above thresholdPrice.

The attack model separates attacker payoff from delay cost. The payoff is binary: only a price strictly above the liquidation threshold and far enough past the guarded distance unlocks externalPayoff; everything else unlocks nothing. The censorship cost grows with duration, the dispute barrier, and the report liquidity honest reporters can use.

liquidationExecutable = manipulatedPrice>liquidationThresholdPricemanipulatedPriceErrorexecutionErrorThreshold attackerProfit = { externalPayoff , liquidationExecutable 0 , otherwise censorshipRate = max(0,manipulatedPriceError-honestDisputeBarrierFraction) censorshipCost = censorshipDurationcensorshipRateoracleReportLiquidity

Binary Payoff and Censorship CostHere externalPayoff is the attacker's outside ETH-denominated payoff, and oracleReportLiquidity is the report's WETH-denominated liquidity.

The final bound is how long censorship would need to remain cheap for the attack to be attractive. The safety duration shrinks as the censorship rate and liquidity ratio grow.

oracleLiquidityRatio = oracleReportLiquidityexternalPayoff safeCensorshipDuration = targetGriefRatio+1censorshipRateoracleLiquidityRatio

Safe Censorship DurationThe bound is strongest when report liquidity is large relative to the payoff and each additional unit of price error is costly to keep undisputed.

Adjust a binary censorship example

The liquidation distance, manipulated price, report liquidity, and payoff determine the attacker's payoff and delay cost.

Price error needed vs. supplied threshold 12.22% error 13.00% payoff 1000.00 ETH
  • Execution error threshold: 12.22%
  • Manipulated price error: 13.00%
  • Liquidation executable: yes
  • Attacker payoff: 1000.00 ETH
  • Censorship cost: 11520.00 ETH
  • Oracle liquidity ratio: 4.00
  • Safe censorship duration (steps): 4.17

The controls below parameterize this stress test; they do not replace ORACLE-A1.

The dynamic-programming section of OpenOracle's inclusion analysis remains a useful template for modeling censorship and delay, but it is not a proof that outside operation exposure is bonded. In this integration the escalation variable is WETH. Before escalationHalt, OpenOracle requires min(floor(oldAmount1 × multiplier / 100), escalationHalt). With the configured multiplier of 115, prior token-one amounts from one through six wei therefore remain unchanged rather than growing; seven wei is the first amount that increases. At or above the halt, each dispute instead requires oldAmount1 + 1, adding one atomic WETH unit. The selected initial amount is max(minimumToken1Report(), requestedInitialWeth), and the selected initial amount determines one halt candidate. The other is ceil(completeSetCollateralAmount / OPEN_INTEREST_DIVIDER), and escalationHalt takes their maximum. See Dynamic Report and Escalation Threshold.

OpenOracle Parameters Used

The integration depends on the OpenOracle fields below. This is the canonical current-value table for coordinator and OpenOracle parameters; the Statoblast whitepaper routes readers here instead of maintaining a second copy.

Parameter Current integration value Use in Statoblast
token1Address / token2Address WETH / REP Defines the REP/ETH price pair used for security-pool solvency checks.
minimumToken1Report() Dynamic; see Dynamic Minimum WETH Report and the estimator. Sets the gas-based initial WETH correction floor.
OPEN_INTEREST_DIVIDER 100 Makes one percent of completeSetCollateralAmount the open-interest-derived escalationHalt floor.
OpenOracle initial currentAmount1 The greater of minimumToken1Report() and the sponsor's requestedInitialWeth The sponsor may request and fund more than the minimum; the coordinator submits the selected amount as currentAmount1.
escalationHalt The greater of 10x the selected initial currentAmount1 and 1% of pool open interest Raises the multiplicative-escalation threshold with pool exposure and stops multiplicative report-size escalation there; later disputes add one atomic WETH unit at a time.
settlerReward Dynamic; see Oracle Request Cost. The full request bounty is assigned to the account that settles the report and triggers the callback.
settlementTime 480 seconds (8 minutes) Sets the timestamp-based report settlement delay. The 40 * 12 derivation assumes twelve-second blocks, but the configured OpenOracle timeType uses seconds. Staged operations expire after this delay plus their operation-specific validity window.
disputeDelay 0 Allows disputes immediately after each report and strictly before its settlement deadline. At the deadline, settlement is valid and a dispute is too late.
callbackGasLimit Derived from settlement gas and the maximum callback batch; see Callback Gas Limit. Sets the callback gas limit for up to MAX_PENDING_SETTLEMENT_OPERATIONS staged operations; settlement still needs enough surrounding gas to satisfy OpenOracle's callback headroom check.
feePercentage / protocolFee 10000 / 100000 Configures OpenOracle reporter and protocol fee accounting, and creates the fee boundary behind the honestDisputeBarrierFraction dispute barrier in the attack model.
protocolFeeRecipient 0x000000000000000000000000000000000000dEaD Receives OpenOracle protocol fees for the coordinator-created report instance.
multiplier 115 Before escalationHalt, requires WETH token1 equal to floor(prior amount × 1.15), capped at the halt. Integer flooring leaves prior amounts of one through six wei unchanged. At or above the halt, each dispute requires one more atomic WETH unit.
timeType / trackDisputes true / true Uses timestamps and keeps dispute history visible for report inspection.
callbackContract OpenOraclePriceCoordinator Routes settled amounts back into Statoblast's price cache and staged-operation executor.