Oracle V2 and price resolution
Oracle V2 infrastructure is deployed and its exchange collector is running. The September 12, 08:18 UTC readback returned zero registered V2 feed policies and zero undecided V2 market profiles. The existing BTC binary market (market
- continues to use its original V1 contract. Starting the V2 service does not convert an existing market or create a new one.
This deployment has not yet established a live V2 trade-to-cutoff-to-payout canary. Each new market needs its own committed policy before trading opens. The applicable version and terms come from the market's binding, not the version of a running worker.
Existing V1 market
At the readback, market 1 was open with price_barrier_v1 and the following
unchanged terms:
| Term | Bound value |
|---|---|
| Reference | BTC; quote currency USDC |
| Sources | Binance, Kraken and Coinbase; all 3 required |
| Observation | Median; 2000 ms polling; 1 confirmation sample |
| Trigger | gte, price 100000 |
| Cutoff | 2027-01-01T04:59:59Z |
| Degraded policy | resolve_no |
This is a barrier contract: a qualifying earlier threshold hit can latch YES. Its legacy degraded policy must not be interpreted as V2's missing-evidence policy. Read the live binding before trading; this table is a dated snapshot.
V2 exchange profile: price at expiry
The deployed exchange implementation supports new BTC/USD markets with
at_expiry_gt: is the reference price strictly above the published strike
at the committed cutoff? Earlier threshold hits do not decide this rule.
Equality with the strike is NO.
The exchange profile combines:
- Coinbase BTC/USD midpoint;
- Kraken BTC/USD midpoint;
- Binance BTC/USDT midpoint, converted to USD using an explicit Kraken USDT/USD midpoint.
It computes the equal-weight arithmetic mean of the three USD-normalized BTC midpoints, using integer micro-USD arithmetic. This is not the legacy V1 median. All three BTC sources and the required FX conversion must satisfy the bound policy. The signed collector evidence is validated and durably recorded by Core.
Each policy commits the source identity, collector identity, strike, observation window, cutoff, recovery deadline, sample grid, freshness/spread/disagreement limits and exposure cap before opening. Candidate limits in engineering tests are not automatically the terms of a live market. Display the actual policy and its hash to the trader.
Only quotes observed and received by the cutoff can contribute to the cutoff price. The later recovery deadline allows handling of retained evidence and conflict detection; it does not authorize using a newer post-cutoff price. Finalization waits until after that committed deadline.
Outcomes and payout
For the V2 exchange at_expiry_gt profile:
| Decision | YES payout per share | NO payout per share |
|---|---|---|
| Valid cutoff price above strike | 1 USDC | 0 USDC |
| Valid cutoff price at or below strike | 0 USDC | 1 USDC |
Required evidence missing or conflicting at finalization (INVALID) | 0.50 USDC | 0.50 USDC |
INVALID uses deterministic rounding carry. It does not refund each trader's individual purchase price. The oracle path has no economic-dispute resolver fee; ordinary trading fees remain governed by the market's fee terms.
Resolution commits the outcome. The existing persistent settlement worker then processes positions and credits account balances. A resolved state is not proof that every account has already been paid, and an account credit is separate from final on-chain withdrawal. There is no promise of payout at the exact cutoff millisecond. See Settlement.
Client integration
| Endpoint | Use |
|---|---|
GET /api/v1/public/markets/{market_id} | Discover instrument type and its published resolution binding |
GET /api/v1/public/markets/{market_id}/oracle | Read the legacy price-oracle view for applicable V1 markets |
GET /api/v2/public/markets/{market_id}/oracle | Read a bound V2 market's durable policy and progress view |
GET /api/v2/public/oracle/feeds/{hash} | Read the latest durable report and evaluated health for a registered V2 feed |
A V2 market view exposes liveHealth, referencePrice when available,
priceObservedAtMs when available, and healthAsOfMs, alongside its durable
policy/progress data. A display price is not itself the final decision.
A V2 market without a durable view returns 404; an unavailable report or failed
read may return 503. A V1 market does not gain a V2 view merely because V2 is
deployed.
Only poll a price-oracle endpoint for markets with the corresponding binding. Prediction markets using economic dispute resolution and spot markets do not automatically have price-oracle data. Clear the previous market's displayed price when changing market or when the binding does not apply.
Market cutoffs are UTC instants. Convert a requested Vienna time using
Europe/Vienna and its date-specific daylight-saving offset before binding.
Market creation and operations
New binary markets follow the closed → policy bound → open lifecycle. The bind and open commands require their canonical terminal receipts; an admission ACK alone is insufficient. Existing resolution contracts cannot be silently converted to V2.
Policy administration and report ingestion are separate privileged capabilities. They are not trader credentials or public market-creation shortcuts. Durable collector buffering supports retry after interruptions, but cannot reconstruct a cutoff observation that was never recorded. Missing required evidence follows the bound INVALID rule.
Prediction-market proposals, bonds and challenges remain described in Resolution.