The Sigil labor market is the on-chain coordination layer for work between DIDs. It supports named contracts (long-form work with milestones) and open bounties (sponsor-funded offers to any claimant). Both share a milestone escrow, dispute multisig, and review system.

Two offer kinds

KindPurpose
LaborOffer::Named(LaborContract)A pre-negotiated contract between an employer DID and a specific worker DID.
LaborOffer::Open(BountyOffer)A sponsor-funded bounty open to any claimant who meets the capability spec.

Canonical state

Named contracts use the original records: LaborJob, LaborBid, LaborContract, Milestone, LaborEscrow, Dispute, and reviews. Open offers use separate state:
TypePurpose
BountyOfferEscrowed offer with verification mode, payout cap, claim window, timeout, accounting totals.
CapabilitySpecStructured capability boundary for what the offer is buying.
BountyClaimClaimant, deliverable hash, evidence hashes, requested payout, bond, spam fee, timeout, state.
ClaimAttestationDeterministic verifier decision for one claim.
Durable state lives under the labor AkashaKV store with typed offer, claim, claim-index, offer-claim sequence, and attestation partitions. Executor writes happen through LaborWriteBatch so balance debits, reserved payouts, indexes, attestations, offer updates, and audit events commit atomically.

Transactions

VariantPurpose
LaborOpenJobOpen a named job.
LaborBidBid on a named job.
LaborAwardContractAward a contract to a bidder.
LaborMilestoneMark a milestone complete and release the milestone payout.
LaborDisputeOpen a dispute.
LaborReviewPost a review after contract completion.
LaborOpenOfferOpen a bounty offer.
LaborClaimBountyClaim a bounty with a deliverable commitment.
LaborAttestClaimVerifier attestation on a claim.
LaborSettleClaimSettle the claim’s payout.

Named contract lifecycle

  1. Employer posts a job with budget, milestones, and acceptance criteria.
  2. Workers submit bids.
  3. Employer awards the contract; escrow locks the budget.
  4. For each milestone, the worker delivers; the employer marks the milestone complete and the milestone payout releases.
  5. If either party disputes, the dispute multisig adjudicates.
  6. After completion, both parties post reviews.

Bounty lifecycle

  1. Sponsor opens a BountyOffer with a CapabilitySpec and an escrowed payout cap.
  2. Claimants submit BountyClaim records with deliverable commitments and a refundable bond.
  3. The configured verifier attests each claim.
  4. Successful claims settle the requested payout from escrow.
  5. Stale claims time out; bonds return.
  6. Sponsor can close the offer; unclaimed funds return.

Verification modes

A BountyOffer declares its verification mode:
ModeVerifier
SponsorThe sponsor manually accepts.
MultisigA configured multisig accepts.
OracleA registered oracle DID accepts.
AutomatedA deterministic check (e.g. tx hash, weft root presence).
The verifier is bound at offer creation; it cannot be changed without reopening the offer.

Disputes

Disputes are filed through LaborDispute. Both parties submit evidence (Weave CIDs). A 3-of-5 dispute multisig resolves with one of:
  • PayClaimant(amount) — release the claimant’s payout in full or in part.
  • RefundEmployer(amount) — return funds to the employer.
  • Split(claimant_amount, employer_amount) — partial settlement.
  • Forfeit — both sides forfeit (rare).
The dispute multisig composition mirrors the username dispute multisig: independent slots with at least one IP-law professional and one community-elected slot.

Reviews

Reviews are on-chain reputation. Each contract completion produces two review records (employer-of-worker, worker-of-employer). Reviews carry a numerical score (1–5), a textual summary (off-chain Weave CID), and a verified-completion flag. Aggregate scores are exposed via sigil_getLaborReputation.

RPC

MethodReturns
sigil_listLaborOffersOpen named contracts and bounty offers.
sigil_getLaborContractContract record.
sigil_getLaborMilestoneMilestone state.
sigil_getLaborDisputeDispute record.
sigil_getLaborReputationAggregate reputation for a DID.
sigil_getBountyOfferBounty offer record.
sigil_getBountyClaimClaim record.
sigil_listBountyClaimsByOfferClaims under a bounty offer.

Implementation

  • Types: node/sigil-core/src/labor.rs.
  • Executor: node/sigil-node/src/executor_labor.rs.
  • Durable state: node/sigil-node/src/labor_durable.rs.

See also