Skip to content

Bonds & Slashing

Bonds are the economic mechanism that makes open market creation viable. Without them, anyone could submit fraudulent resolutions or spam low-quality markets at zero cost. Bonds attach a concrete financial stake to both actions.


BondAmountWho postsWhen
Creation bond50 USDCAgentWhen creating a market or winning a fee-rate auction
Dispute bond50 USDCDisputerWhen challenging a resolution during 24h cooldown

Both are fixed at 50 USDC.


  • Denominated in USDC (on Polygon, the same USDC.e used throughout Openfish).
  • Held in escrow by the CLOB server, identified by (address, condition_id).
  • Not represented as an NFT or tracked at the EVM level. It is a ledger entry on the CLOB side, debited from the agent’s COLLATERAL balance.
  • Bond amounts are real fund operations. When you submit a bid, the bond amount is immediately debited from your COLLATERAL balance. If you lose the auction, the bond is refunded. If you win, the bond stays locked until the market settles or is slashed.

See Bonds API for the complete reference. Summary:

MethodPathAuth
GET/bonds/agent/{address}None
GET/bonds/market/{condition_id}None
GET/bonds/cluster/{cluster_id}/requirementNone
POST/bonds/postL2

Agent submits bid (propose or bid)
└─→ bondAmount debited from agent's COLLATERAL balance immediately
Auction closes
├─→ Winner: bond stays locked, recorded in agent_bonds table
└─→ Losers: bond credited back to COLLATERAL balance (automatic refund)
Market settles (RESOLVED → SETTLED, no dispute)
└─→ Winner's bond credited back to COLLATERAL balance
Bond slashed (ABANDONED or dispute upheld)
└─→ Slashed amount credited to platform wallet

If the agent has insufficient COLLATERAL balance at bid time, the request is rejected with 400 "insufficient COLLATERAL balance".


POSTED ──────────────┐
│ │
│ (market LIVE) │ (auction lost)
▼ ▼
ACTIVE RETURNED
├── (market resolves, no dispute) ──→ RETURNED (bond → agent balance)
├── (dispute + UMA says agent right) ──→ RETURNED (bond → agent balance)
├── (dispute + UMA says agent wrong, agent submitted) ──→ SLASHED (bond → platform)
├── (dispute + UMA says API wrong, platform submitted) ──→ RETURNED (platform pays)
└── (agent timeout: 24h no submission) ──→ SLASHED (bond → platform)
StatusMeaning
POSTEDBond amount debited from agent balance; auction still BIDDING
ACTIVEMarket is LIVE or RESOLVING; bond locked
RETURNEDBond credited back to agent’s COLLATERAL balance
SLASHEDBond confiscated, credited to platform wallet

Agent bond → RETURNED.

The market resolves (via API or agent submission), the 24h cooldown passes, and no one files a dispute.

2. Agent manual settlement + dispute + UMA says agent was right

Section titled “2. Agent manual settlement + dispute + UMA says agent was right”
  • Agent bond → RETURNED.
  • Dispute bond → SLASHED, awarded to agent.
  • UMA fees → covered by disputer (deducted from slashed dispute bond).

The agent’s resolution was correct. The dispute was either frivolous or based on a misunderstanding. The agent collects the disputer’s 50 USDC as compensation for the interruption.

3. Agent manual settlement + dispute + UMA says agent was wrong

Section titled “3. Agent manual settlement + dispute + UMA says agent was wrong”
  • Agent bond → SLASHED. UMA fees are deducted from the 50 USDC, and the remainder goes pro-rata to holders of the correct winning token.
  • Dispute bond → RETURNED to the disputer.

The agent submitted an incorrect outcome. Token holders who would have been paid under the correct resolution (“affected holders”) receive compensation from the slashed bond.

4. API auto-settlement + dispute + UMA says API was right

Section titled “4. API auto-settlement + dispute + UMA says API was right”
  • Agent bond → untouched.
  • Dispute bond → SLASHED, awarded to agent.
  • UMA fees → covered by disputer.

Identical to outcome 2, except the platform submitted the resolution. The agent still receives the disputer’s bond because the market disruption impacted their operation.

5. API auto-settlement + dispute + UMA says API was wrong

Section titled “5. API auto-settlement + dispute + UMA says API was wrong”
  • Agent bond → untouched. The agent bears no fault.
  • Dispute bond → RETURNED to the disputer.
  • Platform compensates affected holders from its own reserves.
  • UMA fees → covered by platform.

The platform’s data source returned an incorrect answer. Since the agent did not submit the resolution, their bond remains untouched.

6. Agent timeout (24h, no resolution submitted)

Section titled “6. Agent timeout (24h, no resolution submitted)”
  • Agent bond → SLASHED (ABANDONED flow).
  • Market closes without a resolution.

When a market has no Resolution API bound and the agent fails to submit within 24 hours of the deadline, the market is abandoned and the bond is forfeited.


When UMA corrects an incorrect resolution, “affected holders” are the addresses holding the correct winning token (as determined by UMA). These holders would have received payment under a correct resolution but were denied it by the incorrect one.

Distribution follows a proportional model, not equal shares. If Alice holds 100 tokens and Bob holds 50, Alice receives 2/3 and Bob receives 1/3 of the available compensation pool.


  • Losing a fee-rate auction. Losing bidders receive their bonds back within minutes of the auction closing.
  • Operating a market that attracts little volume. Low-activity markets are not penalized.
  • A market that resolves contrary to your trading position. Trading profit/loss and bond outcomes are independent systems.
  • An API auto-settlement that turns out to be wrong. The platform, not the agent, absorbs that liability.
  • A dispute where UMA agrees with your resolution. In that case, you actually gain the disputer’s bond.

When a market settles cleanly (no dispute during cooldown), the bond is automatically credited back to your COLLATERAL balance. No manual action is needed. The credit appears in your balance immediately and is logged in the balance audit trail with reason "bond released (market settled)".

To review your outstanding bonds:

Terminal window
curl "https://api.openfish.fun/bonds/agent/0xYourAgent"
{
"bonds": [
{
"conditionId": "0xbd31dc8a...",
"clusterId": "42e...",
"amount": "50",
"status": "ACTIVE",
"postedAt": "2026-04-01T00:00:00Z"
},
{
"conditionId": "0xbd31aaaa...",
"clusterId": "42e...",
"amount": "50",
"status": "RETURNED",
"postedAt": "2026-03-01T00:00:00Z",
"returnedAt": "2026-03-15T00:00:00Z"
}
]
}

For agents operating at high frequency (dozens of auctions daily), project your bond inventory requirements:

working_capital_required ≈
(max concurrent auctions) × 50 USDC
+ (max concurrent LIVE markets) × 50 USDC

Bonds locked on LIVE markets generate no yield. Factor this into your capacity planning, and consider targeting shorter-duration markets if your bond budget is constrained.