Futarchy Logo

Create Market

A single operational flow for organization setup, proposal metadata, market creation, liquidity manager setup, Snapshot linking, candle readiness, arbitrage setup, and publishing.

Companies

Create proposal

Loading wallet…

Readiness gate

A market goes live only when its metadata is valid and a $100 trade moves price under 3%. Below the floor it stays a draft.

Liquidity floorDRAFT

a $100 trade moves price 100.00% (>= 3% floor) — seed more liquidity before going live (from the planned seed).

Metadata1 issue

missing required key: snapshot_id

invert flags not verified — pools do not exist yet (re-run after pool creation)

If the TWAP window ends with no trades, the market resolves by the default rule (no trading occurred) — this is not a market verdict.

Market Defaults

Company Token
PNK
0x37b60f4e9a31a64ccc0024dce7d0fd07eaa0f7b3
Currency Token
sDAI
0xaf204776c7245bF4147c2612BF6e5972Ee483701

One-Step Execution Plan

Org: Kleros DAOClose: 2026-07-23 16:52 UTCLiquidity: Liquidity manager
  1. 01
    Organization

    Select an existing organization or create a permissionless testnet organization.

    Evidence: organizationAddress, organizationOwner

  2. 02
    Metadata

    Build proposal metadata, registry metadata, Snapshot reference, and display titles.

    Evidence: metadataJson, closeTimestamp, snapshotId

  3. 03
    Futarchy Market

    Create the market with company/currency tokens, Reality bond, opening time, and resolver defaults.

    Evidence: proposalAddress, factoryTxHash

  4. 04
    Liquidity Manager

    Create or reuse the organization liquidity manager, add initial liquidity, and set the official proposal.

    Evidence: liquidityManagerAddress, liquidityTxHash, officialProposalSet

  5. 05
    Snapshot Link
    After: liquidity

    Link Snapshot only after liquidity exists, so Snapshot users never land on an empty market.

    Evidence: snapshotLinkRegistryTxHash

  6. 06
    Candles and Indexing
    After: market, liquidity

    Kickstart pools and verify registry/candle indexers can read the market.

    Evidence: registryIndexed, candlesIndexed

  7. 07
    Arbitrage
    After: market, liquidity

    Deploy or configure arbitrage contracts and bots that keep YES/NO pricing checked.

    Evidence: arbitrageContract, botConfig

  8. 08
    Publish
    After: snapshot, indexing

    Expose the market and liquidity manager links on the company page after all checks pass.

    Evidence: companyPageLink, marketUrl, liquidityManagerUrl

Contract Actions

  1. 01
    MetadataPublisher.publishProposalJson
    Stage: metadata

    Build and publish the registry metadata JSON, including Snapshot visibility fields.

    Produces: metadataJson, metadataURI

  2. 02
    IFutarchyFactory.createProposal
    Stage: market
    After: publish-metadata-json

    Create the futarchy proposal market using company token, currency token, bond, and opening time.

    Produces: proposalAddress

  3. 03
    FutarchyOrganizationMetadata.createAndAddProposalMetadata
    Stage: metadata
    After: create-futarchy-proposal, publish-metadata-json

    Store proposal metadata on the organization after the proposal address exists.

    Produces: proposalMetadata

  4. 04
    FutarchyLiquidityManagerFactory.createLiquidityManager
    Stage: liquidity
    After: create-futarchy-proposal

    Create or reuse the organization liquidity manager bundle for this token pair.

    Produces: proposalSource, spotAdapter, conditionalAdapter, manager

  5. 05
    FutarchyOrganizationMetadata.setDefaultLiquidityManager
    Stage: liquidity
    After: create-flm-bundle

    Store the liquidity manager and proposal source as the organization default used by market pages.

    Produces: defaultLiquidityManager

  6. 06
    FutarchyOfficialProposalSource.setOfficialProposal
    Stage: liquidity
    After: create-futarchy-proposal, create-flm-bundle

    Point the liquidity manager proposal source at the newly created proposal before public Snapshot routing.

    Produces: officialProposal

  7. 07
    FutarchyLiquidityManager.initializeFromBootstrap
    Stage: liquidity
    After: store-default-flm, set-official-proposal

    Seed spot liquidity through the liquidity manager before Snapshot sends users to the market.

    Produces: liquidityManagerAddress, liquidityTxHash

  8. 08
    SnapshotLinkRegistry.linkSnapshotProposal
    Stage: snapshot
    After: bootstrap-flm-liquidity, create-proposal-metadata

    Link Snapshot after liquidity is present and proposal metadata has been written.

    Produces: snapshotLinkRegistryTxHash

  9. 09
    CandleIndexer.backfillMarket
    Stage: indexing
    After: bootstrap-flm-liquidity, create-proposal-metadata

    Verify organization/proposal metadata, market candles, and spot price feeds before publish.

    Produces: registryIndexed, candlesIndexed

  10. 10
    FutarchyArbitrageFactory.configureMarket
    Stage: arbitrage
    After: bootstrap-flm-liquidity

    Configure arb contracts and bot parameters for the YES/NO and spot pools.

    Produces: arbitrageContract, botConfig

  11. 11
    CompanyMarketRegistry.publish
    Stage: publish
    After: link-snapshot-proposal, verify-registry-and-candles, configure-arbitrage

    Expose the market on the company page once Snapshot, candles, metadata, and liquidity are ready.

    Produces: companyPageLink, marketUrl, liquidityManagerUrl

Generated Metadata Draft

This is the registry metadata shape the one-step flow will pass into the market creation and proposal metadata writes.

Open organization
{
  "chain": 100,
  "proposalAddress": "",
  "organizationAddress": "0xaAB097ead5c2Db1Ca7b1E5034224A2118EDAbe36",
  "snapshot_id": "",
  "closeTimestamp": 1784825534,
  "startCandleUnix": 1784217134,
  "twapStartTimestamp": 1784220734,
  "twapDurationHours": 120,
  "coingecko_ticker": "composite::0x2613cb099c12cecb1bd290fd0ef6833949374165+0x4c3b00293070073d71455f20fa9e5868cffd8678::0x89c80a4540a00b5270347e02e2e144c71da2eced-hour-500-xdai",
  "currency_stable_rate": "0x89c80a4540a00b5270347e02e2e144c71da2eced",
  "currency_stable_symbol": "xDAI",
  "visibility": "public",
  "resolution_status": "unresolved",
  "eventProbability": 0.5,
  "display_title_0": "What will the impact on PNK price be",
  "display_title_1": "if KIP-90 is passed?",
  "companyTokens": {
    "base": {
      "tokenName": "PNK",
      "tokenSymbol": "PNK",
      "wrappedCollateralTokenAddress": "0x37b60f4e9a31a64ccc0024dce7d0fd07eaa0f7b3"
    }
  },
  "currencyTokens": {
    "base": {
      "tokenName": "sDAI",
      "tokenSymbol": "sDAI",
      "wrappedCollateralTokenAddress": "0xaf204776c7245bF4147c2612BF6e5972Ee483701"
    }
  },
  "flm": {
    "mode": "flm",
    "address": "",
    "proposalSource": "",
    "officialProposalAfterMarketCreation": true
  },
  "snapshot": {
    "space": "kleros.eth",
    "proposalId": "",
    "linkAfterLiquidity": true,
    "visibilityMetadata": {
      "includeOnSnapshotWebsite": true,
      "linkedBy": "SnapshotLinkRegistry.linkSnapshotProposal"
    }
  },
  "registry": {
    "organizationAddress": "0xaAB097ead5c2Db1Ca7b1E5034224A2118EDAbe36",
    "proposalCode": "KIP-90",
    "proposalMetadataMethod": "FutarchyOrganizationMetadata.createAndAddProposalMetadata",
    "defaultLiquidityManagerMethod": "FutarchyOrganizationMetadata.setDefaultLiquidityManager"
  }
}