Play
ODD · EVEN: future price parity
How future Binance Mark Price records become an onchain ODD or EVEN outcome.
Manual Parity Functional Testnet PASS · Mystery scenario not run · Formal certification deferredThe rule
The complete future Mark Price is converted with decimal ROUND_HALF_UP to integer cents. The last digit of that complete integer determines ODD or EVEN: 205.31 becomes 20,531 cents and ODD; 205.42 becomes 20,542 cents and EVEN.
Every Ticket freezes its Market Catalog version and hash. That frozen Catalog defines symbol, precision, tick normalization, direction, multiplier, Reporter Set, report deadline, and timeout/VOID policy; a frontend label or later Catalog version cannot rewrite those fields.
Manual and Mystery
| Mode | User chooses | All-in | Payout | Randomness |
|---|---|---|---|---|
| Manual | Market, ODD/EVEN, reward, horizon | 1–200 | 2x principal | No VRF for price outcome |
| Mystery | Horizon and amount only | 1–10 | 2.5x principal | Provider 4 VRF selects market, side, reward; report still decides outcome |
Parity Mystery acceptance freezes the ordered market/reward Catalog identities but leaves the concrete market, side, and reward unassigned. The verified Provider 4 selection callback freezes all three and moves JIT capacity to the selected reward before the Ticket enters AwaitingReport. That uniform side selection does not make the later Binance price outcome empirically 50/50; the frozen future-price report still decides win or loss.
Functional horizons: 10s · 1m · 1h · 1d · custom
- Functional runtime policy
- 10s / 1m / 1h / 1d / custom
- Markets
- NVDA / AAPL / TSLA / AMZN / META
- Source
- binance-public-mark-price
- Reporter Set / threshold
- 1 / 2
- 10s · Trusted FLASH
- A trusted, best-effort capture reads Binance USD-M
premiumIndex.markPriceand selects the first eligible Mark Price at or after the exact target inside a 30-second window. Binance provides no replayable historical 10-second Mark Price Kline; missing the window means VOID. - 1m / 1h / 1d · requested duration
- The contract first records
requestedTargetAt = acceptedAt + duration, then roundstargetAtupward to the first whole-minute UTC boundary. The effective wait can therefore exceed the label by 0–59 seconds. - Custom range
- Submit a UTC target at least two minutes and at most seven days after acceptance. The final
targetAtis the first whole-minute boundary at or after that requested time, sorequestedTargetAtandtargetAtcan differ by up to 59 seconds. - Stable Kline record
- For 1m, 1h, 1d, and custom, the decisive value is array index 4 (
close) from the exact Binance USD-MmarkPriceKlinesone-minute record ending attargetAt−1ms. Its first read is no earlier thantargetAt+15s, followed by a matching second read at least 15 seconds later.
Wallets and integrations must show both the requested time and the final rounded target whenever they differ. Both stable reads must match all source fields. A changed record restarts the stability interval. Missing or unstable evidence cannot move the target or silently switch source.
Signed report boundary
Binance does not sign FLIP Tickets. A versioned threshold Reporter Set signs an EIP-712 PriceReport that binds chain, Game, Ticket, market, rule, target, timestamps, price cents, raw response hash, and evidence hash. The signer set is an explicit trust boundary, backed by a separate Reporter Bond namespace.
- Wrong domain, source, symbol, target, hash, signer threshold, timing, or expiry fails closed.
- A Ticket freezes its Reporter Set; rotating the active set cannot rewrite an existing Ticket.
- FLASH timeout and report timeout can VOID according to the frozen responsibility stage: the Game returns
B + F, and the responsible Bond separately paysadditionalReserveRaw = prizeNotionalRaw - B.
Manual and Mystery state machines
Accepted → AwaitingReport → ReportReady → Settled(Win | Loss)
↘ Voided (strictly after the inclusive report deadline)Accepted → AwaitingRandomness → AwaitingReport → ReportReady → Settled(Win | Loss)
↘ Voided ↘ VoidedReportReady is a real onchain state, not a UI convenience: a threshold-verified report is first frozen into the Ticket, then settlement reads that frozen report. A report may be submitted through the inclusive deadline; voidExpired becomes legal only after it and only while the Ticket is still awaiting randomness or a report. Settlement or VOID is terminal.
