OddMaki
Configuration

Oracle Settings

Configure UMA Optimistic Oracle parameters for your venue — assertion bonds, rewards, and liveness periods.

Every market on OddMaki resolves through the UMA Optimistic Oracle V3. Oracle settings control the economic parameters of the dispute game — how much bond an asserter posts, what reward they earn, and how long the challenge window lasts.

UMA Optimistic Oracle Overview

Resolution follows a four-step lifecycle:

  1. Assert — Anyone calls assertMarketOutcome with a bond deposit
  2. Challenge window — During the liveness period, anyone can dispute via UMA
  3. Settle — After liveness expires unchallenged, settleAssertion finalizes the result
  4. ReportreportResolution pushes the outcome to the CTF for payouts

If an assertion is disputed and rejected, the market can be re-asserted.

Bond Amount

The bond is collateral an asserter must deposit when making an outcome assertion. It deters false assertions — if disputed and wrong, the asserter loses their bond.

  • Set per venue via umaMinBond (applies to all markets in the venue)
  • Cannot be overridden per market
  • Denominated in the collateral token (USDC, 6 decimals)
  • No contract-level min/max, but UMA V3 enforces its own minimum per currency

Dispute economics: If unchallenged → bond returned + reward paid. If disputed → UMA's DVM arbitrates, loser forfeits bond to winner.

Reward Amount

The reward incentivizes timely resolution. Paid to a correct asserter after successful settlement.

  • Venue default set via umaRewardAmount
  • Per-market addition via additionalReward at market creation: final reward = umaRewardAmount + additionalReward
  • Can be 0 — the market still functions, but asserters have no reward incentive
  • Funded by the market creator at market creation time

Liveness Period

The challenge window during which anyone can dispute an assertion. Set per market at creation time.

  • Minimum: 2 hours (7200 seconds) — values below are silently floored
  • Not stored on the venue; set individually per market via the liveness parameter
  • For market groups, all markets share the same liveness
Use CaseRecommended Liveness
Sports with clear outcomes2 hours
Standard markets4–12 hours
High-value or complex markets24–48 hours
ParameterRecommendedDescription
umaMinBond1–100 USDCHigher for high-value markets
umaRewardAmount1–10 USDCHigher rewards = faster resolution
liveness7200 (2h)Increase for markets needing verification

Updating Oracle Settings

Update bond and reward after venue creation (operator only):

import { VenueFacetABI } from '@oddmaki/sdk';

const hash = await walletClient.writeContract({
  address: diamondAddress,
  abi: VenueFacetABI,
  functionName: 'updateVenueOracleParams',
  args: [
    venueId,
    parseUnits('3', 6),  // new umaRewardAmount (3 USDC)
    parseUnits('2', 6),  // new umaMinBond (2 USDC)
  ],
});

Liveness is set per market at creation and cannot be changed after.

What's Next