Order lifecycle, live

Every transition below is a real contract method. Pick a scenario and play it, or click a state to see what can leave it, who may call it and what it guards against.

Escrow, claim, deliver, paid in full.

create_orderclaim_orderabandon_claimcancel_orderexpire_ordersubmit ≥ 50%submit < 50%appeal (flips either way)extend_deadlineOpenClaimedCompletedRejectedExpiredCancelled
Step 0 / 3

Press Play or Step to walk through “Happy path”.

All transitions

MethodFrom → ToCallerGuard
create_ordernone → openClientNon-empty, length-capped title/spec/criteria; 1–365 day deadline.
claim_orderopen → claimedProviderBefore the deadline; the client cannot claim their own order.
abandon_claimclaimed → openProviderOnly the claimed provider, before the deadline.
extend_deadlineclaimed → claimedClientBefore the deadline; 1–30 days per call; total lifetime ≤ 365 days.
cancel_orderopen → cancelledClientOnly while nobody has claimed it.
submit_deliverableclaimed → completedProviderBefore the deadline; public http(s) evidence URL; evidence must return 2xx and a non-empty body. Verdict ≥ 50% → completed, otherwise rejected.
submit_deliverableclaimed → rejectedValidatorsConsensus payout below 50%.
expire_orderclaimed → expiredAnyoneDeadline passed without a delivery (also applies to unclaimed open orders).
appeal_deliveryrejected → completedClientWithin 7 days of the first verdict; once per order; context ≤ 2000 chars.