Contract 10391457065f4dce8fe5a2ee80491afc8bf4dd738cd66f600019f1520e58038c

← Back to Index 📥 Download WASM

Meta

cliver 27.0.0#5a7c5fe76530bf4248477ac812fc757146b98cc4
rssdkver 26.1.0#175aa41306f383057a8cdfc84b68d931664fc34e
rsver 1.93.0

Instances

  • CBIPPWCBP6UTJX4LDKS5CP3J7RT4QUMGOADS4NC5YMSBPQ6ICDWCDV3L
  • CBSYPPHLGLIKZNOZ6RIPJPPWQ2KHGL3JKG7LXNGM42P4ZLRXVAABJNJO
  • CBY2W75OBRKR25Q3VWOQQHZOKXZKS7YNOFARS76XNBU3K4P4XWQLKXWG
  • CCCHCGAYS6QB6VCYNF3XI4WKOQI34VXICKSXBPWMSBSV5RNGKTSFA6YJ
  • CD6G4N7ATARFNV2ZSMKXM6DGLSCP2EDZLTMOBAD2BTCWKAABHYY4SCFL
  • CDVSTOAB2CZQC7LCCMZAD4F7UYQPFNHX5EPFTA5X6S75JSVZCGWUTH6W

Interface

After settlement, token holders redeem their winning tokens for $1 USDC each.

YES wins (Settled state): YES holders get $1 USDC per YES token NO wins (Expired state): NO holders get $1 USDC per NO token

Tokens are burned (balance set to 0) on claim — cannot double-claim.

fn claim(env: soroban_sdk::Env, holder: soroban_sdk::Address)
fn get_state(env: soroban_sdk::Env) -> MarketState

Bumps instance TTL. Anyone can call this to keep the contract alive.

fn extend_ttl(env: soroban_sdk::Env)
fn get_orders(env: soroban_sdk::Env) -> soroban_sdk::Map

Called once by the factory immediately after deployment.

Parameters mirror the spec's MarketConfig struct. depeg_threshold uses 14-decimal fixed point: $0.995 = 9_950_000_000_000_0 (14 zeros after decimal = 1e14)

fn initialize(
    env: soroban_sdk::Env,
    market_id: u32,
    label: soroban_sdk::String,
    collateral_token: soroban_sdk::Address,
    covered_asset: Asset,
    oracle_contract: soroban_sdk::Address,
    depeg_threshold: i128,
    breach_duration_seconds: u64,
    expiry_timestamp: u64,
    anchor_id: Option,
    anchor_stake_contract: soroban_sdk::Address,
)

Attempt to settle the market by reading the oracle price.

Anyone can call this — it is permissionless. The watcher calls it every 60s. The contract's settlement logic (settlement.rs) handles:

  • Expiry detection → NO wins
  • Depeg detection + breach timer → YES wins
  • Freshness checks on oracle data
fn try_settle(env: soroban_sdk::Env)

Match open buy and sell orders.

Called by the watcher bot every 60 seconds and by users directly. Fills up to max_fills matches per call to bound gas usage.

fn fill_orders(env: soroban_sdk::Env, caller: soroban_sdk::Address, max_fills: u32)

Place a limit order.

is_buy=true → buying YES tokens (buying insurance cover), pays USDC is_buy=false → selling YES tokens (underwriter collecting premium), locks YES

price_bps: 1–9999 basis points (1 = 0.01%, 9999 = 99.99%) e.g. 150 bps = buyer pays 1.5 USDC for 100 YES tokens (1.5% premium)

fn place_order(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    is_buy: bool,
    price_bps: i64,
    amount: i128,
) -> u64

Cancel an existing order. Only the order owner can cancel. Escrowed assets (USDC or YES tokens) are returned proportional to unfilled amount.

fn cancel_order(env: soroban_sdk::Env, owner: soroban_sdk::Address, order_id: u64)

Returns (yes_balance, no_balance) for a holder.

fn get_balances(env: soroban_sdk::Env, holder: soroban_sdk::Address) -> (i128, i128)
fn get_market_id(env: soroban_sdk::Env) -> u32
fn get_total_yes(env: soroban_sdk::Env) -> i128

Admin function to configure a yield vault (DeFindex / Blend)

fn set_yield_vault(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    vault: soroban_sdk::Address,
)

Underwriter deposits amount USDC and receives amount YES + amount NO tokens.

The complete set invariant: every YES token has exactly one paired NO token, and together they are always worth exactly $1 USDC (after settlement).

Typical underwriter flow:

  1. mint_complete_set(amount)
  2. place_order(is_buy=false, price_bps=150, amount) // sell YES at 1.5% premium
  3. Keep NO tokens — collect if market expires without failure
fn mint_complete_set(
    env: soroban_sdk::Env,
    underwriter: soroban_sdk::Address,
    amount: i128,
)
fn get_total_collateral(env: soroban_sdk::Env) -> i128
fn get_breach_started_at(env: soroban_sdk::Env) -> Option

Imports

WebAssembly Text (WAT) ▶