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.
Network and token
Section titled “Network and token”| 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.
Deployed contracts
Section titled “Deployed contracts”| 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 |
Legacy STATS_V1 route: cannot settle
Section titled “Legacy STATS_V1 route: cannot settle”| 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.
Deployed verifier portfolio
Section titled “Deployed verifier portfolio”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.
Hub function map
Section titled “Hub function map”The hub exposes four groups of protocol functions.
Task lifecycle
Section titled “Task lifecycle”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.
Exits and timeout
Section titled “Exits and timeout”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 toOPEN, 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.
Bid control and state reads
Section titled “Bid control and state reads”incrementBidNonce: revoke all bids signed with the caller’s current nonce.tasks,bidNonce, andusedBidDigest: read task state and bid replay state.nextTaskId,USDC, andregistry: read the hub’s next identifier and immutable dependencies.globalFeeBps,globalMinBondUSDC,pendingTreasuryFees, andtreasury: read current economic configuration and accrued fees.paused,owner, andpendingOwner: read operational and ownership state.
Protocol administration
Section titled “Protocol administration”pauseandunpause: control new task exposure while preserving completion and exit paths.setFeeConfigandsetGlobalMinBondUSDC: update the bounded global fee and bond floor.claimFees: transfer accrued fees through the pull-based treasury flow.transferOwnershipandacceptOwnership: complete the two-step ownership transfer;renounceOwnershipis the inherited owner-only renunciation path.
Registry and verifier function map
Section titled “Registry and verifier function map”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.
Reverts
Section titled “Reverts”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.