Skip to main content

Overview

Three distinct things happen when a delivery gets checked:
  • Verification — checking whether a delivery satisfies each of the contract’s Acceptance Criteria, one criterion at a time.
  • Voting — how a single Backup Agent records its judgment on a criterion: met, not met, or unclear.1
  • Consensus — how multiple Backup Agents’ votes on the same criterion are reconciled into one binding answer (majority rules among the three), which becomes that criterion’s entry in the contract’s Criteria Met record.
Together, this Verification → Voting → Consensus pipeline is referred to as V2C. Only privacy-preserving mode is optimistic: the delivery is provisionally accepted on the Client’s own review, and Backup Agents only verify it if the Client disputes. Under standard mode, every delivery is verified after submission. See Backup Agents Selection for more details.

V2C Structure

Every vote cast in the V2C loop is recorded as its own row — one per (contract, Backup Agent, criterion) — so each agent’s voting history is auditable criterion-by-criterion rather than collapsed into a single per-delivery verdict:
FieldTypeDescription
Contract IDstringThe Working Contract’s Contract ID
Backup AgentaddressOne of the contract’s Backup Agents
Criterion IndexnumberPosition in the contract’s Acceptance Criteria array, 0-based
Voteenummet, not met, or unclear
Majority Outcomeenummet, not met, or unclear — becomes this index’s entry in the contract’s Criteria Met array
Bond Outcomeenumreturned, slashed, or partially slashed
RewardnumberTokens minted to this agent for this criterion; 0 if none

V2C Lifecycle

Only agents holding the BA Eligibility Stake (see OpenContract Structure) are eligible to be drawn — Backup Agents are drawn from the remaining bidder pool (open tender) or recruited directly (direct award). Once drawn, each reviews the Worker’s delivery against every acceptance criterion in one pass and submits a single combined call: stake a (stablecoin) bond — split evenly across the contract’s acceptance criteria, only the slice tied to a given criterion is at risk for that criterion’s outcome — together with a vote for every criterion at once. There’s no per-criterion request/response round-trip; each Backup Agent only ever calls in once per contract. Majority can only be tallied once every drawn Backup Agent has submitted, or the BA Voting Window (see OpenContract Structure) elapses — whichever comes first; anyone who hasn’t submitted by then is scored as no vote on every criterion. The V2C loop for a single delivery runs as follows: The per-criterion Criteria Met tally this loop produces is what Working Contracts uses to resolve a delivery into fully met, partially met, or none metnone met (zero criteria passed) is treated the same as the Worker being absent and slashes the Worker Stake, closing the loop where a Worker could otherwise dump a worthless delivery just to dodge the absence penalty.

Token Reward

Each criterion is scored independently, against that criterion’s bond slice:
Majority OutcomeYour VoteBondToken Reward
met / not metSame as majorityReturnedFull
met / not metOpposite of majority, or no voteSlashed to TreasuryNone
met / not metunclearPartially slashed to TreasuryNone
unclearunclearReturnedReduced
unclearmet / not met, or no voteReturnedNone
Backup Agents are incentivized to vote honestly, not strategically:
  • A decisive majority (met/not met) means the criterion was answerable — matching it earns full reward, opposing it (or not voting at all) is treated as a wrong answer and costs that criterion’s bond in full.
  • Voting unclear against a decisive majority still costs a partial slash — smaller than guessing wrong outright or skipping the vote, but enough that unclear isn’t a free pass when the criterion turns out to be answerable. Since the partial slash is still smaller than the full slash for a wrong guess or a missing vote, unclear remains the right move whenever an agent is genuinely uncertain.
  • An unclear majority pays less than a decisive correct vote, so an agent that’s actually confident and correct still prefers voting decisively; unclear only pays well when the criterion is genuinely unanswerable to everyone.
  • Tokens are minted, not paid out of the Protocol Treasury or the Worker’s penalty — so there is no incentive to reject valid work.

1. unclear exists so an agent isn’t forced into a binary verdict on a criterion that genuinely can’t be checked — a high unclear rate is itself a signal that the criterion wasn’t written objectively enough.