Skip to main content

Bonds and fees

OMY's economic model follows the standard optimistic-oracle design, adapted to TON's jetton mechanics. There are bonds (refundable, security collateral) and fees (non-refundable, protocol revenue).

Bonds

A bond is collateral the asserter (or disputer) puts at risk to back their claim. Always refundable if you're right; lost if you're wrong.

ActionRequired collateralIf you winIf you lose
ProposebondAmount + protocolFeebond returned + (fee already burned)bond split: 50% to disputer, 50% to treasury
DisputebondAmount (no fee)bond returned + 50% of proposer's bondbond split: 50% to proposer, 50% to treasury

Bond sizing

For the dogfooded Market consumer, bondAmount is sized to 2% of total value-at-risk at resolution time, with safety guards:

bondAmount = clamp(
state.totalCollateral * 2% / 10000,
oracleBond_floor, // minimum bond configured per-market
MAX_BOND_CAP // 10 000 USDT — keeps the bond postable on huge markets
)

The reasoning: bond > profit-from-lying. At 2% of TVL, a proposer lying on a market with $100k TVL would forfeit $2k — strictly more than they could profitably steer through a wrong settlement. Cap at $10k keeps the bond physically affordable; security beyond that escalates to the resolver, not the bond.

Fees (Phase A)

All Phase-A fees route to a multisig treasury controlled by the founder. In Phase B (post-$OMY launch), a governance switch flips the treasury target to a RewardsDistributor contract that streams 50% of fees to staked $OMY holders.

StreamAmountWhere chargedRouted to
Final fee2 USDT (non-refundable)Skimmed from the propose() jetton transferTreasury
Dispute treasury cut50% of loser's bondResolver's Resolve payout pathTreasury (other 50% → winner)
AMM swap fee0.5% of inputMarket.tolk BUY_YES/BUY_NOTreasury (LP-split deferred to Phase B)
Resolution skim1% silent of totalCollateralMarket.tolk on OracleResultTreasury (every winning share pays 0.99 instead of 1.00)
Market creation fee0 USDT— (anti-spam handled by the oracle bond on resolve)

Phase A realistic revenue

At a conservative year-1 baseline ($500k AMM volume, 100 assertions, 10 disputes with avg $5k bond, $300k settled):

  • Final fees: ~$200
  • Dispute treasury cuts: ~$25 000
  • AMM swap fee → treasury: ~$1 000
  • Resolution skim: ~$3 000

Total ~$29k/year. Covers basic opex + founder time. At moderate traction ($5M / $3M settled): ~$290k/year. At strong traction ($30M / $20M settled): ~$1.5M/year.

Why fees can be governance-switched but bonds cannot

Bonds are part of an assertion's immutable Config — snapshotted at spawn time. Once an assertion is live, its bond requirements cannot change. This is essential for predictable settlement: a long-running market knows exactly what economic security backs its resolution.

Fees and treasury target ARE in the Config snapshot too — same immutability per assertion — but OracleFactory has a governance-only UpdateMonetization opcode that updates the FACTORY's monetization. Future assertions spawned from that factory inherit the new values; already-live assertions stay on their original snapshot. This is the Phase B switch: owner flips treasuryAddress from multisig → RewardsDistributor, and every assertion spawned afterward routes 50% of its fees to staked $OMY holders.

Source

  • Fee constants: tolk/contracts/market-storage.tolk (SWAP_FEE_BPS = 50, RESOLUTION_FEE_BPS = 100, MAX_PROTOCOL_FEE = ton("3"))
  • Bond sizing: tolk/contracts/Market.tolk RequestResolution handler
  • Phase B switch: OracleFactory.UpdateMonetization (opcode 0x0a09)