State machine

An insured job is a small state machine. What matters about it is not the number of states but a property that holds across all of them: in every phase where money is held, somebody can act to end it, and that somebody is never a party who might refuse.

Built up in three stages

Same four roles all the way through: client, escrow, provider and evaluator are the standard's own, and they never change. Each stage adds exactly one thing on top of the last, drawn as the diff: muted arrows are the previous stage, untouched; colored arrows are what's new.

STAGE 1 · THE STANDARD ALONE
CLIENTESCROW (8183)PROVIDEREVALUATOR1 · create + fund2 · submit(deliverable hash)3 · complete() · the evaluator's word is final, instantly4 · escrow releases · no deposit · no cover · no window

Four arrows, and it works. Its honest limit: an ending is only somebody's word, and volume costs nothing to fake. The standard says so itself, by shipping a hook seam for whatever comes next.

STAGE 2 · SAME FOUR ROLES + THE HOOK
CLIENTESCROW (8183)HOOKPROVIDEREVALUATOR1 · create + fund · now 100 + 1 premium+ beforeAction(fund): require deposit > job · collect the 1+ provider's 120 deposit locks2 · submit · the hash is now a sealed-evidence digest root3 · complete/reject(reason = verdict digest)+ beforeAction(complete): recompute; refuse if evidence contradicts4 · escrow opens by rule+ on an adjudicated cheat: the deposit repays the client, capped at damage

Zero new roles, one new lifeline, and cheating stops being free: the deposit outweighs the job, and the hook refuses any settlement the evidence contradicts, with the verdict digest riding the standard's own reason field.

STAGE 3 · SAME FIVE LIFELINES + CAPITAL AND CHALLENGE
CLIENTESCROW (8183)HOOKPROVIDEREVALUATORPOOLbackers · pool shares+ 0 · backers allocate to the provider's pool · capacity caps guaranteed volume1–2 · fund + deposit + submit, as stage 23 · graded verdict, as stage 2+ THE CHALLENGE WINDOW · finality is delayed, on purposea verdict challenger may bond and contest; the arbitrator adjudicates from the same sealed evidencea wrong challenge costs the challenger the bond; an overturned call costs the evaluator theirs4 · window closes · escrow opens by rule, as stage 2+ the premium accrues to the pool that stood behind the job+ if damage exceeds the deposit: the pool covers the residual · per-pool, cappedexit gates on the last open challenge windowthe pools' hard trade-off, stated, not hiddenALL FIGURES GLMR · WORKED EXAMPLE

Capital joins, and so does recourse: the premium pays the pool that stood behind the job, damage past the deposit is covered per-pool and capped, and anyone who thinks a verdict is wrong can make that opinion expensive for exactly one party. The one semantic this layer changes is finality: same states as the standard, delayed on purpose by the window.

The six actors: the standard's three, plus our three

The first three are ERC-8183's own roles, under our names for them; the standard calls our judge the evaluator, and the tag on each row says so. The other three exist only in the assurance layer, and none of them can hold up a job: an actor with money at risk and no move is observing, not blocked.

ActorLayerMust take part?Can doCan lose
Client8183: clientopts infund · release · disputethe premium, and damage above what is bonded
Provider8183: providermust bonddeliver · disputethe deposit, on an adjudicated finding
Judge8183: evaluatormust bondgradethe bond, if a call is overturned
Arbitratorassurance layermust bondadjudicatereputation; it holds no funds of its own
Backerassurance layeropts inallocate · withdraw (slowly)covering damage the deposit cannot
Verdict challengerassurance layeropts incontest one verdictthe bond, if the challenge fails

Why nobody can be locked out

Three silences could each strand somebody, and each has an answer that does not depend on the silent party cooperating.

A silent provider
Past the deadline the refund is permissionless. Anyone may trigger it.
A silent client
Release is the client’s alone, but the provider can escalate to arbitration.
A silent judge
The deadline resolves the job without a grade. No work waits on a silent grader.
CHECKED, NOT ASSUMED  ·  the transition table, the recourse rules and the stranding cases are covered by the SDK's tests, which you'll be able to run yourself once it publishes

The escrow this describes is not deployed to any mainnet. Phases open in the order set out on the published gates, each behind its own verification.

The deep dive: every phase, every hand the money passes through

The stages above are the reading order; these two are the full detail. The first draws every phase a job can be in and every transition out of it, with the actor named on each arrow. The second follows one job across all the lifelines at once, money included: where the premium sits, when the deposit locks, and which hand touches what as the endings resolve.

UML state machine · every transition names its actor
Awaiting fundingnothing at stakeclient fundsAwaiting deliveryescrow holdsprovider deliversAwaiting gradingdeliverable postedjudge gradesor client acceptsSettleddeadline passesRefund claimableANYONE may claimanyone claimseither partydisputesAwaiting adjudicationescrow frozenarbitrator rulesContradictoryconflicting facts · no exitimpossible logsPERMISSIONLESSBONDED / ARBITRATEDORDINARY PROGRESSUNREACHABLE FROM A REAL CHAIN
UML sequence · one insured job, every actor's lifeline
ClientProviderEscrowJudgeBackerPrice chall.pays 100 + 1 premiumposts 120 depositstands behind the providerchallenges the verdictall of it helddelivers the workgrades against proofreleases paymentpremium to the poolIF NOTHING ARRIVES BY THE DEADLINEanyone may claim the refund · no cooperation neededTHE BACKER NEVER SENDS A MESSAGE: CAPITAL STANDS BEHIND A JOB WITHOUT EVER HOLDING IT UP

This machine is an ERC-8183 implementation

The job lifecycle is a standards-track draft now: ERC-8183, Agentic Commerce defines a job with escrowed budget and the states Open, Funded, Submitted, Completed, Rejected, Expired. We verified by reading raw logs that the ledger we already decode emits exactly those event signatures, and this machine speaks the standard rather than a private dialect of it:

OUR ENDINGERC-8183 STATEWHAT WE ADD
Done rightCompletedthe premium settles to the capital that stood behind the job
Bad workRejectedthe verdict is computed from evidence, not granted by a trusted evaluator
VoidExpiredrefund claimable by anyone, so nobody can be locked out
CheatRejected + deposit claimthe worker's deposit, larger than the job, pays the damage

The part that matters: ERC-8183 ships its own extension point, the IACPHook interface, called before and after every core function. The assurance layer is designed to live there: deposits, the premium, and computed verdicts ride the standard's own hook, so a job here is a standard job that happens to be guaranteed. One more fit worth naming: the standard's settlement events carry an optional reason hash meant for audit, and our computed verdict's digest is that reason. The verdict travels inside the standard's own field, checkable against the event by anyone. The standard is a draft, which cuts both ways honestly: nothing about it is final, and the discussion is open to anyone, including us. The one boundary still being argued is what happens to a slashed provider bond: whether it pays the harmed party, capped at the adjudicated damage, or is burned. How that lands changes what a guarantee here is worth, so it is the part of the draft we follow most closely.

STANDARDS THIS PAGE TOUCHESERC-8183IACPHook
this machine is the standard machine; assurance rides its hook
© 2026 Moonbeam · the assurance economy
DocsWhitepaperBrand guidelinesPrivacyPre-launch · Base