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:
- Assert — Anyone calls
assertMarketOutcomewith a bond deposit - Challenge window — During the liveness period, anyone can dispute via UMA
- Settle — After liveness expires unchallenged,
settleAssertionfinalizes the result - Report —
reportResolutionpushes 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
additionalRewardat 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
livenessparameter - For market groups, all markets share the same liveness
| Use Case | Recommended Liveness |
|---|---|
| Sports with clear outcomes | 2 hours |
| Standard markets | 4–12 hours |
| High-value or complex markets | 24–48 hours |
Recommended Defaults
| Parameter | Recommended | Description |
|---|---|---|
umaMinBond | 1–100 USDC | Higher for high-value markets |
umaRewardAmount | 1–10 USDC | Higher rewards = faster resolution |
liveness | 7200 (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
- Resolution → — the full resolution lifecycle
- Creating Markets → — set per-market oracle overrides