Docs / outcome markets

Outcome markets on HyperEVM

Reading outcome state on-chain and the CoreWriter outcome operations added in the July 2026 HyperEVM update.

Outcome markets trade on HyperCore, but as of the July 2026 HyperEVM update smart contracts can now read outcome state and act on outcome positions on-chain. Three things changed:

  1. Existing precompiles and CoreWriter actions that take an asset id now accept outcome asset ids.
  2. A new outcomeStatus read precompile exposes settlement state.
  3. CoreWriter gained a user outcome action (split / merge / negate).

Neither Hedgepit nor betondit routes trades through CoreWriter — see the callout at the bottom — but if you build on top of these markets yourself, this is what's available.

Outcome asset ids#

Everything below uses the same id scheme as the trading API. Each side of a binary market has an asset id derived from the outcome index:

asset_id = 100_000_000 + (10 × outcome_index + side)

Asset-id-taking read precompiles (for example bbo at 0x…080e) and the CoreWriter limit-order and cancel actions accept these ids directly.

The outcomeStatus precompile#

Address 0x0000000000000000000000000000000000000814. Input is the raw outcome index as a uint32not the 100_000_000+ asset id. It returns:

FieldTypeMeaning
statusuint80 never existed · 1 active · 2 settled (settledValue available) · 3 settled but pruned (settledValue gone)
settledValueuint64Settlement fraction scaled so 100_000_000 = 1.0
questionuint32The question the outcome belongs to; type(uint32).max if standalone, or if status is 0 or 3

This is the on-chain way to read a market's resolution without polling the info API — a contract can verify "this outcome settled at 1.0" in a single staticcall.

CoreWriter outcome operations#

CoreWriter (the system contract at 0x3333…3333) added action 17, "Outcome operation", ABI-encoded as (uint8 encodedOperation, uint32 question, uint32 outcome, uint64 wei):

encodedOperationOperationUses question?Uses outcome?
0SplitOutcomenoyes
1MergeOutcomenoyes
2MergeQuestionyesno
3NegateOutcomeyesyes

Split mints a matched YES/NO pair from collateral, merge burns a pair back to collateral, and negate flips a position to the other side — the same primitives the L1 exposes, now callable from a contract holding a HyperCore balance.