Skip to main content

Creating Markets

A binary market is created through a five-step flow in the web UI, backed by the create_market / create_market_spl instructions on magma_binary_vault. Every market is a single falsifiable YES/NO question with a deadline, a chosen variant, and seed liquidity.

Status — creation flow LIVE on devnet

The 5-step web creation flow is live on Solana devnet, including the AI oracle analysis pass and on-chain seeding. Programmatic creation via REST (POST /v1/binary/*) is not yet available — those endpoints return 503 until post-TGE. See Program & API.

The 5-step flow

StepActionNotes
1Pick variantChoose Classic (zero-sum) or Yield (capital-loss + Crucible). Fixed at creation.
2Write the questionOne falsifiable YES/NO question with a resolution deadline.
3AI oracle analysisAuto-classifies the question into a category and scores its falsifiability.
4Seed liquidityCreator seeds the YES and/or NO sides to bootstrap the market.
5Pay fee + confirmClear the creation-fee gate (Cloudflare Turnstile + a verified treasury fee-payment tx), then sign; create_market / create_market_spl initializes on-chain state.

Classic vs Yield at creation

The variant chosen in step 1 changes both the settlement math (see Overview) and the go-live path:

VariantGo-liveWhy
CLASSICAdmin review before the market opensZero-sum markets pay winners directly from losers; review guards against ambiguous or abusive questions.
YIELDInstant-liveYield markets carry a softer capital-loss profile (losers keep 65%) and route forfeitures to the Crucible, so they open immediately.
note

The variant cannot be changed after creation. A Classic market and a Yield market on the same question are distinct on-chain markets with distinct market_ids.

The creation-fee gate

MAGMA-native binary-market creation carries the same anti-spam fee gate as narrative publishing. Creating a market through the web flow (or programmatically via POST /v1/markets, once live) requires clearing the same three checks a narrative /publish does:

CheckRequirement
Cloudflare TurnstileA valid Turnstile token (cf_token) — the human-verification gate.
SignatureThe creator wallet's signature over the request.
Treasury fee-payment txA confirmed on-chain transaction paying the creation fee to the protocol treasury, verified before the market is created.

The fee is BINARY_MARKET_FEE_SOL, which defaults to the narrative publish fee (NARRATIVE_PUBLISH_FEE_SOL, ~5 SOL — see YBNCM → publish fee). Like the narrative fee, it is an anti-spam cost: a real on-chain payment makes mass-creating junk markets uneconomical.

If the fee-payment transaction is missing or fails verification, creation is rejected with market_fee_missing_treasury. The full reject-code list and the POST /v1/markets body are in Program & API → market creation.

Which creation paths are fee-gated

Only MAGMA-native creator markets (seed source) pay the fee. The bot, admin, and classic protocol-created paths are not fee-gated — they are created by the protocol's own wallet. Kalshi and Polymarket imports keep their own platform gates / KYC and never pay a MAGMA fee (see source types).

AI oracle analysis

Step 3 runs an automated analysis pass over the question before it can be created. It produces two things:

  • Category — the resolution category the question falls into (e.g. MARKET, SPORTS, POLITICAL), which selects the oracle source set used at resolution. See Oracle Resolution.
  • Falsifiability — an assessment of whether the question has a clear, checkable YES/NO answer at the deadline. Questions that are not falsifiable are flagged so the creator can rewrite them before seeding.

This is the same class of pre-resolution analysis MAGMA applies to narratives — it ensures the oracle has a well-posed claim to resolve rather than an opinion.

Seeding liquidity

In step 4 the creator commits initial capital to the YES and/or NO sides. Seeding:

  • Bootstraps both pools so early backers have a counterparty.
  • Is recorded on-chain in the side vaults (yes_vault / no_vault for SOL, yes_tvault / no_tvault for SPL).
  • Is itself a backing — seeded capital is subject to the same settlement rules as any other backing on that side.

Seed liquidity originating from the creator is tagged with the seed source type (below).

Source types

Every market records how it was created. This drives whether MAGMA settles it on-chain or merely mirrors an external venue.

sourceOriginSettlementFee gate
seedCreator-seeded market via the web flowNative on-chain (magma_binary_vault)BINARY_MARKET_FEE_SOL (creation-fee gate)
botGenerated by the backend bot market generatorNative on-chain (magma_binary_vault)None — protocol-created
kalshi_importImported from Kalshi (brokered via DFlow)Follows Kalshi's resolution, DB-synced — no MAGMA on-chain settlementKalshi's own gates / KYC — no MAGMA fee
polymarketIngested from Polymarket (Gamma API)Data-only today — see status belowPolymarket's own gates — no MAGMA fee
Status — third-party sources

Kalshi sync is LIVE: third-party markets are imported and follow the source platform's resolution, synced to MAGMA's database, with no MAGMA on-chain settlement. Polymarket is data-only ingestion (Gamma API) today; on-chain / EVM trading is Phase 14 (planned). See Oracle Resolution → third-party.

After creation

Once a Classic market clears review (or a Yield market goes live), it enters oracle_status 0 (open) and accepts backings until its deadline. From there: