Market Lifecycle

Every MarkIt market progresses through six states, from creation to final withdrawal. States advance automatically based on on-chain conditions — they never go backward.

State Diagram

Created → Funded → Open → CloseOnly → Resolved → Withdrawable

States in Detail

Created

The market has been deployed but doesn't yet have enough LP capital to open for trading.

Who
What They Can Do

Traders

Nothing — trading is not available

LPs

Deposit USDC to fund the pool

Operator

Wait for LP funding

Advances to Funded when the total LP deposits reach the minimum threshold (typically 1,000 USDC).

Funded

The pool has enough capital. Trading is now live.

Who
What They Can Do

Traders

Take YES or NO positions

LPs

Deposit additional USDC

Operator

Monitor market activity

Advances to Open immediately upon reaching the funding threshold (Funded and Open are effectively the same state for user experience).

Open

Active trading state. This is where most of a market's life is spent.

Who
What They Can Do

Traders

Take YES or NO positions, view P&L, hedge

LPs

Deposit additional USDC

Operator

Monitor market activity

Advances to CloseOnly when the current time is within the close-only window (typically 1 hour before the market's close time).

CloseOnly

Final hour before the market closes. Only positions that reduce the current skew are allowed. This prevents last-minute manipulation where a large one-sided position could distort the market.

Who
What They Can Do

Traders

Take positions only on the contrarian side (the less-popular outcome)

LPs

Cannot deposit

Operator

Monitor market activity

Advances to Resolved when the operator calls the resolve() function after the market's close time has passed.

circle-info

CloseOnly protects market integrity. If 70% of positions are on YES, only NO positions are accepted during the CloseOnly window. This prevents someone from dumping a massive one-sided position right before the market locks.

Resolved

The outcome has been determined. Winners can now redeem their tokens.

Who
What They Can Do

Traders

Redeem winning tokens for 1.00 USDC each. Sweep (burn) losing tokens.

LPs

Wait for the withdrawal window

Operator

No further action needed

Advances to Withdrawable after the withdrawal buffer period (currently 0 seconds — immediate transition).

Withdrawable

The final state. All obligations can be settled.

Who
What They Can Do

Traders

Redeem winning tokens (if not already done)

LPs

Withdraw their pro-rata share of the pool

Operator

No further action needed

This is a terminal state. The market stays here until all participants have claimed their funds.

Automatic State Advancement

States advance automatically. Every time any external function is called on the contract, it checks whether state transition conditions are met and advances if so. There is no need for anyone to manually trigger state changes — except for resolution, which requires the operator to explicitly call resolve() with the outcome.

Timeline Example

For an NBA game market:

Time
State
Activity

Day before game

Created → Funded

Market deployed, LP deposits USDC, market opens

Day before → 1 hour before game

Open

Active trading — YES and NO positions taken

1 hour before game

CloseOnly

Only contrarian positions allowed

Game time

CloseOnly

Market closed, waiting for game result

After game ends

Resolved

Operator resolves based on final score

Immediately after

Withdrawable

Winners redeem, LPs withdraw

Last updated