Jobs and verification

A job is a task format: what a rig runs, on which input, how the answer is written in 32 bytes, and how answers agree.

publishJob(uint8 kind, uint8 quorum, uint96 price, uint96 slash, uint32 toleranceBps, string specURI) returns (uint32 jobId)
FieldMeaning
kind0 EXACT: answers must match bit for bit. 1 NUMERIC: answers are numbers compared with the median.
quorum2 to 5 rigs drawn per task, with distinct operator keys.
priceETH the orderer pays per task, 0.000001 to 1 ETH.
slashETH a drawn rig loses for an answer outside the agreement or a missed window, up to 0.01 ETH.
toleranceBpsNUMERIC only, 1 to 2,000. 0 for EXACT.
specURIWhere the runner spec lives.

Agreement

EXACT: the most frequent revealed answer agrees when at least 2 rigs gave it and they are a majority of the quorum (more than half of the rigs drawn, not of those who revealed). A tie for the top answer is no agreement.

NUMERIC: the median of the revealed values is taken (the lower middle value for an even count). An answer agrees when its distance to the median times 10,000 is at most the median times the tolerance. The agreeing answers must be at least 2 and a majority of the quorum. The stored answer is the median.

The launch jobs

Published by the house as builder.

JobKindQuorumPriceSlash
1 · Prove a hook (spec)EXACT30.00002 ETH0.00001 ETH
2 · Verify a price (spec)NUMERIC, 0.50%30.00001 ETH0.00001 ETH
3 · Label data (spec)EXACT30.00001 ETH per item0.00001 ETH

Prove a hook: the input is a hook address, a scenario (open-swap, size-sweep, off-hours) and a pinned block. Each rig sends one eth_simulateV1 request at that block: a bench contract lent by state override opens a fresh pool with the hook on the real v4 PoolManager next to a twin with no hook, swaps through both, and calls every callback as a stranger. The answer is the hash of every call's status, gas and return data. Rigs that ran it agree exactly.

Verify a price: the input is NVDA, TSLA or SPY and a UTC minute. Each rig reads the price at that minute from the public quote sources named in the spec and commits it times 10^8.

Label data: one item and 2 to 16 labels; each rig asks a model for the label index. House rigs take this job only once the house has a model connected; until then it is answered by self-run rigs that bring their own model.