Futarchy Logo

Create Market

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

Companies

Permissionless Chiado Stack

This is the target testnet lifecycle: any wallet creates an organization, it is listed automatically, and the organization receives a default FLM for proposal liquidity.

  1. 01
    Deploy permissionless stack

    Deploy metadata implementations, public aggregator, market factory, Snapshot linker, indexer hooks, and FLM factory on Chiado.

  2. 02
    Create default FLM bundle
    After: deploy-stack

    Create the proposal source, pool adapters, and default FLM bundle that will be attached to the organization.

  3. 03
    Create organization
    After: default-flm

    Any wallet can create organization metadata with default FLM wiring; the creator becomes organization owner.

  4. 04
    List organization
    After: create-organization

    Every created organization is added to the permissionless aggregator and appears in listings.

  5. 05
    Owner creates proposal
    After: list-organization

    The organization owner can create proposals and point the FLM at the official proposal.

Contract Actions

  1. 01
    DeployPermissionlessRegistry.run
    Stage: deploy-stack

    Deploy aggregator, organization, and proposal metadata implementations plus their factories.

    Produces: aggregatorFactory, permissionlessAggregator, organizationImplementation, proposalImplementation

  2. 02
    FutarchyLiquidityManagerFactory.createLiquidityManager
    Stage: default-flm
    After: deploy-permissionless-registry

    Deploy proposal source, spot adapter, conditional adapter, and default organization FLM.

    Produces: proposalSource, spotAdapter, conditionalAdapter, manager

  3. 03
    FutarchyAggregatorsMetadata.createAndAddOrganizationMetadataWithDefaultLiquidityManager
    Stage: create-organization
    After: create-default-flm-bundle

    Create organization metadata, attach the FLM/proposal source, and add it to the aggregator in one call.

    Produces: organizationMetadata

  4. 04
    FutarchyAggregatorsMetadata.getOrganizations
    Stage: list-organization
    After: create-and-list-organization

    Read the aggregator list that backs the companies page.

    Produces: listedOrganization

  5. 05
    FutarchyOrganizationMetadata.createAndAddProposalMetadata
    Stage: owner-proposal
    After: read-listed-organizations

    Organization owner or editor writes proposal metadata after the futarchy proposal exists.

    Produces: proposalMetadata

  6. 06
    FutarchyOfficialProposalSource.setOfficialProposal
    Stage: owner-proposal
    After: owner-create-proposal-metadata, create-default-flm-bundle

    Point the default FLM proposal source at the active proposal once the proposal address is known.

    Produces: officialProposal

Market Defaults

Company Token
PNK
0x37b60f4e9a31a64ccc0024dce7d0fd07eaa0f7b3
Currency Token
sDAI
0xaf204776c7245bF4147c2612BF6e5972Ee483701

One-Step Execution Plan

Org: Kleros DAOClose: 2026-07-07 10:45 UTCLiquidity: FLM
  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 and FLM

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

    Evidence: flmAddress, 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 FLM links on the company page after all checks pass.

    Evidence: companyPageLink, marketUrl, flmUrl

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 FLM bundle for this token pair.

    Produces: proposalSource, spotAdapter, conditionalAdapter, manager

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

    Store the FLM 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 FLM 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 FLM before Snapshot sends users to the market.

    Produces: flmAddress, 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, flmUrl

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": 1783421148,
  "startCandleUnix": 1783244748,
  "twapStartTimestamp": 1783248348,
  "twapDurationHours": 24,
  "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"
  }
}