Skip to content

HIP-4: outcome markets

Practitioner

HIP-4 lets a staked deployer list fully collateralised contracts settling between 0 and 1, built from validator-approved templates, which it then settles.

An outcome pays between 0 and 1 per contract, with no leverage or liquidation, so a buyer risks only the price paid. Typical subjects: a price above a level at a time, a rate inside a band, who wins a contest.

Say you buy 200 Yes at 0.35 USDC, paying 70 USDC. Settled at 1, you receive 200 USDC; at 0, nothing. A standalone outcome can settle between: at 0.25, you receive 50 USDC and No pays 0.75.

Such markets are defined by words, so validators vote in templates that fix the wording, and deployers fill typed keywords.

Each outcome has two token sides, usually Yes and No (Long and Short in the scalar template). One unit of quote collateral splits into one of each, and a pair merges back. The first side pays settleFraction (0 to 1), the second 1 - settleFraction.

Both sides share one book: buying Yes at p is selling No at 1 - p, with priority by price, side, then time. A question groups outcomes of which exactly one settles to 1, plus a fallback the protocol adds (split, merge, negate).

  • Protocol markets recur on a fixed cadence, deployed and settled by the protocol; descriptions start class:priceBinary or class:priceBucket. The first was a daily BTC mark price binary settling at 06:00 UTC.
  • Deployer markets are template instances under a staked deployer’s venue. On 2026-09-20 mainnet had 228 active outcomes, 21 questions and 3 deployer venues.

A deployer activates once, in Standard account mode with stake in its own staking account, claiming a permanent venue name of 2 to 4 lowercase letters (becoming an outcome deployer). It fills templates, sets a fee scale per market, and settles itself or through a sub-deployer, with no protocol deadline. The protocol checks form, not correctness.

Each market’s deployerFeeScale sets the split: a trader pays base times scale + max(scale, 1), scale times base to the deployer and the rest to the protocol. Measured on mainnet (7,256 fills, 2026-09-12): the base is the spot schedule, referral discounts apply, only the closing side pays (every buy billed 0, every sell charged), and maker rebates are never paid.

Opening is free; closing at scale 1 costs twice the base.

Each spec names a quoteToken, USDC by default; mainnet outcomes moved from USDH to USDC around June 2026. The docs say a future upgrade will require AQAv2 quote assets on HIP-4 markets.

Topic Announced Documented now Observed on chain
Stake 500k HYPE locked for 6 months “the staking requirement”, unnumbered; 183 days must pass before deactivation every mainnet venue deployer held just over 500k HYPE; testnet requires 100 HYPE
Slashing for badly specified markets, wrong settlement, or a market left unsettled for over a week markets contradicting their template’s semanticRestriction are malformed and slashable none on record; the testnet release disclaimed disputes and late-settlement slashing

Slashing is specified but unobserved: in all 12 mainnet HIP-3 and HIP-4 deployer accounts (2026-09-20), HYPE left only by requested withdrawal.

Parameter Mainnet Testnet
Deployer stake 500k HYPE 100 HYPE
Minimum stake period 183 days 183 days
Active outcomes per deployer 100 10
New outcomes per deployer per day 500 50
Question outcomes per question at most 100 at most 100
Deployer fee scale 0 to 10 0 to 10
Trader fee base x (scale + max(scale, 1)) same
Price grid 1e-5 ticks, 0.00001 to 0.99999 same
Size decimals 0 (whole contracts) same
Deployment gas none none

Encoding: side s of outcome o is 10 * o + s, appearing as the coin #<enc>, the token name +<enc> and the asset id 100_000_000 + enc (asset ids).

  • You trust a deployer. The description is the contract: read the template, values and venue.
  • Positions are spot balances in spotClearinghouseState, not perp state (settlement).

Deploy with a top-level outcomeDeploy carrying venue and operation; the old spotDeploy with an outcome key is rejected. keywordToValue is signed as a sorted array of pairs (market shapes).

  • Deploy responses carry no outcome id. Find it in outcomeMeta by name and description.
  • The userOutcome negate key is negateOutcome, not negateQuestion as earlier documentation and some SDK examples had it.
  • Fallback capacity is unresolved. The docs say a question of N outcomes registers N + 1, all counting toward the active cap; deployer codebases disagree, nothing measured settles it, and the daily cap is undocumented. Check outcomeDeployerLimits before and after.

For the trader’s view, see what an outcome market is; for the deployer’s duties, outcome templates and keywords and settling outcomes.