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:
- Existing precompiles and CoreWriter actions that take an asset id now accept outcome asset ids.
- A new
outcomeStatusread precompile exposes settlement state. - 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 uint32 — not the 100_000_000+ asset id. It
returns:
| Field | Type | Meaning |
|---|---|---|
status | uint8 | 0 never existed · 1 active · 2 settled (settledValue available) · 3 settled but pruned (settledValue gone) |
settledValue | uint64 | Settlement fraction scaled so 100_000_000 = 1.0 |
question | uint32 | The 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):
encodedOperation | Operation | Uses question? | Uses outcome? |
|---|---|---|---|
0 | SplitOutcome | no | yes |
1 | MergeOutcome | no | yes |
2 | MergeQuestion | yes | no |
3 | NegateOutcome | yes | yes |
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.