Resolving a Wager¶
This guide covers the end of a wager's life: declaring a winner, draws, oracle settlement, claiming the pot, and every way stakes come back if nothing resolves.
Resolution flow¶
flowchart TD
A[Wager Active<br/>end time passes] --> B{Who settles?}
B -->|Me / Them| C[The named settler<br/>declares winner]
B -->|A Friend| D[Arbitrator<br/>declares winner]
B -->|"An Oracle (Polymarket /<br/>Chainlink / UMA)"| E[Source resolves →<br/>anyone triggers auto-resolve]
C & D & E --> F[Resolved]
F --> G[Winner claims full pot]
A -->|both parties consent,<br/>or arbitrator| H[Draw — each side<br/>gets own stake back]
A -->|resolve deadline passes<br/>unresolved| I[Refund — both stakes<br/>returned]
Declaring a winner¶
Who can declare depends on the settler fixed at creation:
| Settler | Who declares |
|---|---|
| Me (Creator) | The creator |
| Them (Opponent) | The opponent |
| A Friend (Third Party) | The named arbitrator |
| An Oracle (Polymarket / Chainlink / UMA) | Nobody — the oracle outcome is read on-chain; anyone can trigger it |
Older wagers created with the retired Either Party option (either side could declare) still resolve that way; the option is no longer offered for new wagers.
To declare:
- Open My Wagers and find the wager (creators see resolution controls in the Created tab; arbitrators in the Arbitrating tab)
- Click Resolve and select who won
- Confirm the transaction (
declareWinner)
The wager moves to Resolved and the winner can claim.
Encrypted wagers and arbitrators
If the terms were encrypted, the arbitrator received their own decryption key at creation, so they can read exactly what they're ruling on.
Oracle settlement¶
For oracle-pegged wagers, the app shows Awaiting Oracle until the underlying source resolves:
- Polymarket — the linked market settles on Polymarket
- Chainlink Data Feed — the price condition is evaluated at its deadline
- Chainlink Functions — the registered off-chain computation is fulfilled
- UMA — the assertion survives its dispute window
Once the source has resolved, anyone can trigger settlement on-chain (the
app exposes a button; the contract calls are autoResolveFromPolymarket /
autoResolveFromOracle). The outcome maps to whichever side the creator
declared they were taking when the wager was made. A tied or invalid oracle
outcome settles as a draw.
Draws¶
If you both agree the bet was a push:
- One party clicks Propose Draw (
declareDraw) — this records consent - The other party clicks the same — the wager settles as a Draw and each side's own stake is returned automatically
Either party can withdraw consent (revokeDraw) before the other agrees. For
third-party wagers, the arbitrator's single draw declaration settles
immediately.
Claiming the pot¶
Once resolved:
- Open the wager (it's now in My Wagers → History)
- If you won, click Claim Winnings and confirm (
claimPayout) - The full pot — your stake plus your opponent's — transfers to your wallet
Claims are pull-based and can only be made once. There is no claim deadline; the pot waits for you in escrow.
Refunds¶
Stakes can never get stuck. Every dead end has a refund path:
| Situation | What to do |
|---|---|
| Nobody accepted before the acceptance deadline | Reclaim Stake from My Wagers (claimRefund); stale offers can also be expired in bulk |
| You changed your mind before acceptance | Cancel the open wager (cancelOpen) |
| Your opponent declined | Creator's stake returns automatically |
| Active wager passed its resolve deadline unresolved (e.g. oracle never reported, counterparty vanished) | Either party clicks Refund (claimRefund); both stakes return to their owners |
Timeline summary¶
| Event | Default | Bound |
|---|---|---|
| Acceptance deadline | 6 hours after creation | up to 30 days |
| End time | 1 day after creation | 1 hour – 21 days |
| Resolution window after end time | 48 hours | up to 180 days, then refundable |
Troubleshooting¶
"Not authorized" when resolving — the resolution type names someone else as the declarer; check the wager's resolution type.
Resolve button missing — the wager's end time hasn't passed yet, or you're looking at a wager you can't resolve (e.g. opponent-only resolution).
Oracle wager stuck on "Awaiting Oracle" — the underlying source hasn't resolved yet. If it never does, use the refund path after the resolve deadline.
"Already claimed" — the pot was already paid out; check the wager's history entry.
Related guides¶
- Creating a Wager
- Accepting a Wager
- How It Works — the on-chain state machine