Skip to content

Contracts and deployment

OCH-1.1 is deployed on Arbitrum One and settles in native USDC. The software-work hub settles new software-work tasks through SOFTWARE_WORK_WASM_V1 and the direct SP1 v6.1.0 verifier. The legacy hub settled the earlier receipts, including task 22 and the May 8 receipt. STATS_V1 cannot settle while Succinct’s SP1 v6.0.0 route is frozen, since 2026-10-09; both legacy repo-patch routes are inactive. These statuses were checked at Arbitrum One block 515499563 on 2026-10-16.

Item Value
Network Arbitrum One
Chain ID 42161
Currency USDC (0xaf88d065e77c8cC2239327C5EDb3A432268e5831)
USDC decimals 6

All reward, bond, and fee amounts are integer USDC microunits. One USDC is 1_000_000 microunits.

Contract Address Runtime code hash
Software-work hub 0x99d42927268cDC18aA31CDd97588f53dFCa12Aa0 0x477ffa746e9f1cacbabcec544d716dca57186f203f2893a43946de7898179413
Software-work verifier registry 0xffF65E562e6c7f20982903aC85D06847e7Aa7E6A 0x1592807a234b98964c137ede4547ca14e50a9ed7bae7e30c71abb7a4aa68cdf8
SOFTWARE_WORK_WASM_V1 wrapper 0x42bCacb2709dA2fDA52a49b651A890F96a8AB438 0x8319aa1c1c689c85c7c2dd21225dbfce68c253f888ea58904354ad9af17a01d1
Direct SP1 v6.1.0 verifier 0x082de66Fd00aBBD0d9bD24fAEe4A4a91D9E6D22F 0x5db9cf59d5588c466aa28cfb67fe1bc5f6a3e26505d1887f7f75ba32eba8fcd7
Legacy hub: earlier receipts 0x219f6a4206A38f05897257e40ceA3B211eA5e592 0x8a46fd9d4cddb0e611674eff7ee6b717240a76a5b8de2ce2d6cb4755f5b5f6cd
Legacy verifier registry 0x321Eb680Fb52d153161a03157B1C6D97b1298350 0x24d7456f7d5449a3a489b47664192083c9bdeba1a234865e3365a49b0dff2a1a
STATS_V1 verifier wrapper: cannot settle 0x43eb16511bcaB838f9D0dbbEF85b61DD8E88602C 0xe80cb8905f3c8a02be6eba1f46879a89d205f73f4bd00be00fffa21354f8562c
Field Value
Verifier name STATS_V1
Verifier ID 0x87964240a746236cc99fb5d3ff344e5110b6429980582b953c2de786a74347b4
Program key 0x00423a9fa7cb199ecc746a26a6ac7853f1df39f4be865c98c73243c39fbba645
publicValues length 224 bytes
Registry route Active in the legacy registry; cannot settle while the SP1 v6.0.0 route is frozen

The verifier ID is keccak256(bytes("STATS_V1")). At Arbitrum One block 498336646 on 2026-08-25 at 19:34:56 UTC, the registry returned the wrapper above as active. That historical observation found the legacy hub unpaused. At block 515499563 on 2026-10-16, both hubs were unpaused with a 100 basis-point fee (1%) and a 10_000_000 microunit minimum bond (10 USDC). An active registry entry does not mean its proof route can settle.

OCH-1.1 has four deployed verifier families across two hubs. New software-work tasks use SOFTWARE_WORK_WASM_V1 on its own hub and registry. STATS_V1 remains registered on the legacy hub but cannot settle.

Family Verifier ID Wrapper publicValues Registry route Activation-bound freshness
SOFTWARE_WORK_WASM_V1 0xe89154bf53e780b25a5fc8907badb50ee95dd73bdd9da32f2c4c73cff2f498f6 0x42bCacb2709dA2fDA52a49b651A890F96a8AB438 416 bytes Active on the software-work registry; can settle activation_tuple_only
STATS_V1 0x87964240a746236cc99fb5d3ff344e5110b6429980582b953c2de786a74347b4 0x43eb16511bcaB838f9D0dbbEF85b61DD8E88602C 224 bytes Active on the legacy registry; cannot settle while the SP1 v6.0.0 route is frozen Not established (cryptographicFreshnessBinding = false)
REPO_PATCH_HARNESS_V1 0xeeeed6e9708c5f63fa387bc935917d14f4b0ee5a88141cdace4bd91514da0298 0x400A428E5922D0f5f91B82652e622dF7467D0fF4 224 bytes Inactive Not established (cryptographicFreshnessBinding = false)
REPO_PATCH_HARNESS_V2 0xede169ce377c38b5721f5e18f85695df8630a4e68ee32e559a3d2815d351584c 0xA84698181A18c038DBD0CA08BB77b2404b194fC5 352 bytes Inactive No protocol-grade claim

The protocol’s exact settlement guarantee is verifier-family specific. The STATS_V1 proof guarantee is documented in Verify a STATS_V1 result; the table above records the full deployed portfolio and its current route state. Inactive routes cannot be selected for a new task.

The hub exposes four groups of protocol functions.

  • createTask: commit a TaskSpec and input, fund the maximum reward, and open the task.
  • selectBid: validate the chosen EIP-712 bid, record the delegatee, snapshot the fee, refund unused reward, and emit the encrypted key.
  • activateTask: let the selected delegatee post the bond and start the compute window.
  • submitResult: validate the proof and bound public values, complete the task, return the bond, pay the reward, and accrue the fee.
  • cancelUnaccepted: let the delegator cancel an open task and recover its escrow.
  • sweepExpiredOpen: close an open task after its acceptance deadline and return its escrow.
  • cancelSelection: return a selected task to OPEN, either by its delegator or after the activation deadline.
  • claimTimeout: settle an expired active task by returning the reward and transferring the full bond to the delegator.
  • incrementBidNonce: revoke all bids signed with the caller’s current nonce.
  • tasks, bidNonce, and usedBidDigest: read task state and bid replay state.
  • nextTaskId, USDC, and registry: read the hub’s next identifier and immutable dependencies.
  • globalFeeBps, globalMinBondUSDC, pendingTreasuryFees, and treasury: read current economic configuration and accrued fees.
  • paused, owner, and pendingOwner: read operational and ownership state.
  • pause and unpause: control new task exposure while preserving completion and exit paths.
  • setFeeConfig and setGlobalMinBondUSDC: update the bounded global fee and bond floor.
  • claimFees: transfer accrued fees through the pull-based treasury flow.
  • transferOwnership and acceptOwnership: complete the two-step ownership transfer; renounceOwnership is the inherited owner-only renunciation path.

The verifier registry exposes getVerifier and the entries getter for route reads. Its owner-only setVerifier(verifierId, verifier, active) call sets a route after checking the wrapper’s bytecode policy and requiring the wrapper to return the same verifierId. VerifierSet is emitted by the registry address, not the hub.

The STATS_V1 wrapper exposes verifierId() and verify(proof, publicValues). Its programVKey() getter identifies the pinned program; it does not show whether proof submissions can settle.

OCH-specific validation in the hub and registry uses Solidity require strings such as not open, accept closed, and invalid proof. Inherited OpenZeppelin ownership, pause, reentrancy, signature, and token-transfer paths may use custom errors. Integration code should decode both forms and should not use revert text as application control flow.