Skip to content

Events and limits

OCH-1.1 emits each state transition needed to reconstruct a task from Arbitrum One logs. The deployed hub also applies explicit calldata, timing, and economic bounds before it accepts state changes.

Event Indexed fields Data fields
TaskCreated taskId, creator, specHash verifierId, verifier, inputHash, maxRewardUSDC, minBondUSDC, acceptDeadline, maxComputeWindowSec, createdAt, specURI
TaskSelected taskId, creator, delegatee rewardUSDC, bondUSDC, feeBpsSnapshot, escrowedRewardUSDC, computeWindowSec, selectedAt, activateDeadline, encryptedKey
TaskActivated taskId, delegatee activatedAt, submitDeadline
TaskCompleted taskId, delegatee outputHash, complete publicValues, outputURI
TaskSelectionCancelled taskId
TaskCancelled taskId, specHash
TaskTimedOut taskId slashedBondUSDC

The lifecycle is:

OPEN → SELECTED → ACTIVE → COMPLETED
│ │ └→ TIMED_OUT
│ └→ OPEN
└→ CANCELLED
Event Indexed fields Data fields
BidNonceIncremented delegatee newNonce
FeeConfigSet globalFeeBps, treasury
GlobalMinBondSet globalMinBondUSDC
FeesClaimed to amount
VerifierSet verifierId verifier, active
Constant Value Unit and effect
ARBITRUM_ONE_CHAIN_ID 42161 The constructor requires the runtime chain ID to equal Arbitrum One.
USDC_DECIMALS 6 Rewards, bonds, and fees use USDC microunits.
MAX_FEE_BPS 2000 20%; bounds the configurable settlement fee.
MAX_PROOF_LEN 131072 Bytes; caps proof calldata at 128 KiB.
MAX_PUBLIC_VALUES_LEN 1024 Bytes; caps proof-bound public values.
MAX_SPEC_URI_LEN 200 Bytes; bounds the off-chain TaskSpec locator.
MAX_OUTPUT_URI_LEN 200 Bytes; bounds the off-chain result locator.
MAX_ENCRYPTED_KEY_LEN 1024 Bytes; bounds selection key-delivery data.
MIN_COMPUTE_WINDOW_SEC 300 Seconds; tasks and bids provide at least five minutes to compute.
ACTIVATION_WINDOW_SEC 900 Seconds; a selected delegatee has 15 minutes to activate.

STATS_V1 adds an exact publicValues length of 224 bytes. The hub requires every publicValues payload to be at least 96 bytes and word-aligned, then binds its first three words to taskId, inputHash, and a non-zero outputHash before calling the verifier.

At Arbitrum One block 498292588 on 2026-08-25 at 16:31:19 UTC:

Setting Observed value
Hub pause state Unpaused
Global fee 100 basis points (1%)
Global minimum bond 10_000_000 microunits (10 USDC)
STATS_V1 registry route Active
REPO_PATCH_HARNESS_V1 registry route Inactive
REPO_PATCH_HARNESS_V2 registry route Inactive
  • Task creation snapshots the verifier address and runtime code hash, so later registry changes do not alter that task’s proof route. Selection separately snapshots the chosen fee.
  • EIP-712 bids bind the hub address, runtime chain ID, task commitments, validity deadline, nonce, and salt. Signature validation supports EOAs and ERC-1271 contract wallets.
  • Selection refunds the difference between the maximum escrow and chosen reward immediately. Activation is the point where the delegatee posts the bond and becomes timeout-slashable.
  • Completion requires the selected delegatee, an active task, an unexpired submit deadline, a valid proof, and public values bound to the task. State changes happen before payout.
  • Pausing blocks createTask, selectBid, and activateTask while leaving proof submission and refund, cancellation, and timeout paths available.
  • Treasury fees accrue on successful completion and move only through claimFees.