solutions · one court, many consumers

One shared court. Many consumer protocols.

A price oracle answers "what is the price?" — a fact a feed can read. Verdikt answers "was the deliverable acceptable?" — a judgment. Because every verdict is one of a fixed set of labels — PAYEE, PAYER, graded SPLIT, UNDECIDABLE — any contract can consume it the way it consumes a price feed. Six deployed protocols already do.

6 deployed consumer protocols <50 lines to integrate the jury 0 EOAs required in settlement
architecture · one verdict interface

Every dispute routes to the same bench.

The consumers below are not six forks of the same logic — each opens a case against the court and maps the panel's label onto its own settlement. Every final ruling, whatever protocol raised it, lands in the same precedent registry.

the primitive

VerdiktCourt

Adaptive validator panels · byte-identical consensus · model pinned per case · attested evidence · abstention

0xeBbA8b849343150e994BEE34778D4D8D38941eDE ↗

Plus three reference integrations: ServiceSLA (live, two real rulings), VerdiktPredictionMarket and SimpleEscrow. All consumers on this page are deployed reference protocols built alongside the court — Verdikt has no external customers yet.

featured · agent economy

Agents can transact. They can't sue.

VerdiktAgentEscrow is a machine-native escrow where both counterparties may be contracts or autonomous agents. The entire lifecycle — fund, deliver, dispute, settle — is code-callable, with no EOA anywhere in the settlement path. Verdicts credit a pull-payment ledger, so a non-receiving counterparty can never brick the court's callback.

0 EOAs contracts and agents are first-class parties
Pull payments winners withdraw; settlement can't be held hostage
Adaptive panels the trial panel is caller-selectable in [3, 5], so disputes settle even when the validator set floats
0x3cD6509237e2Ffb35f42b3810FA53b3afB1cB65c Explorer ↗
CASE #1 · VerdiktAgentEscrow · Shannon Payer
deal BuyerAgent escrows 0.01 STT with SellerAgent — two contract agents, no human key in the path.
dispute The seller never delivers. BuyerAgent files the dispute autonomously, with machine-generated evidence.
panel 5- and 4-validator panels were unavailable at dispatch; the agent pre-flighted and convened 3 — which converged byte-identically.
settle PAYER: refund the buyer. BuyerAgent pulled its 0.01 STT; the ruling entered the precedent ledger.
No human in the loop, end to end Watch the arena →
commerce · escrow & coverage

Buyer against seller, claimant against pool.

The production escrow hears both sides before the panel rules; the insurance pool puts the burden of proof on the claimant. Both can be appealed by staking — slashed if the original verdict holds.

src/VerdiktEscrow.sol

Two-party escrow

A payer escrows funds against a delivery deadline. On dispute, both parties submit evidence — openDispute → submitEvidence → convene — so neither side can stonewall, and the panel weighs both statements before ruling. Verdicts support graded splits, not just a winner.

real rulings · shannon
Payee Case #1: a courier-oracle attested "delivered and signed for"; the payer claimed nothing arrived. The panel weighed the verified fact over the false claim — 0.01 STT released to the payee.
Split SPLIT75 on the v4 court: an attested 3-of-4-deliverables dispute settled byte-identically at payee 75% (0.0075 STT), payer 25% (0.0025 STT).
0x91AaCFDF78D32Fa213408e7e5a187Af697fB099d Explorer ↗
src/VerdiktInsurance.sol

Insurance claims pool

A collateralized pool: funders deposit and earn pro-rata shares, insureds buy policies and file claims with evidence. The panel arbitrates the subjective claim.

PAYEE pay the insured full coverage from the pool.
SPLIT pay the graded fraction of coverage.
PAYER no payout — burden of proof is on the claimant.
0xEA462e024b6207B5311820864dC6a4cF64346Da4 Explorer ↗
src/VerdiktTokenEscrow.sol

ERC-20 escrow

The same escrow pattern, denominated in an ERC-20 token: deal value and appeal stakes are token (stake 10% of the deal), the court's agent fees stay native STT, and verdicts credit a pull-payment token ledger. The testnet deployment pairs with a mock ERC-20.

0xCCc7d99BF967313735f7BFA25b2E76e0C6993593 Explorer ↗
src/VerdiktGrantClawback.sol

DAO grant clawback

A DAO escrows a grant against a milestone deadline. If delivery is contested, the court decides whether the work earned the release: PAYEE releases to the grantee, PAYER claws back to the DAO, SPLIT grades the share — and UNDECIDABLE claws back as the safe default.

0xDA7B9F52Ac7e71508E7C3B8FE95c27e28A7C441f Explorer ↗
src/VerdiktMilestone.sol

Freelance milestone

A client escrows payment against a due date, and the court settles the oldest dispute in freelancing: was the deliverable acceptable? PAYEE pays the freelancer, PAYER refunds the client, SPLIT grades the share — UNDECIDABLE refunds the client.

0xc8439c2E2d058661D664986a12CaE05Af463872D Explorer ↗
reference integration · live on shannon

ServiceSLA: the same claim, judged twice.

An SLA-breach arbiter in ~60 lines on VerdiktConsumerBase: a client prepays a provider under stated uptime terms; on a breach claim, the panel reads the incident evidence and rules. Two live runs filed the same kind of claim — only the evidence differed, and the jury behaved differently. That is the point.

Honest framing: this is a reference deployment driven by the project's own keys to exercise a real integration — not an external customer. Every transaction, verdict, and settlement shown here is real and on-chain.
0xfB2bE585c0776547Ed2e0626F657e9a4AF9e37c9 Explorer ↗
RUN A · court case #2 Undecidable
Untrusted · client claim only

The client claimed a 6-hour outage against a 99.9% uptime SLA — with no provider rebuttal and no oracle data on record. The panel of 4 refused to rule on a single uncorroborated claim and abstained.

Settlement fell to the safe default: refund the client. Abstention as a confidence gate, not a coin flip.
RUN B · court case #3 Payer
Verified · oracle attestor

A registered oracle attested the outage: 6h12m measured downtime, 97.1% against the 99.9% SLA. With the verified fact ranked above the client's claim, the panel of 4 ruled a decisive breach.

Client refunded; the ruling entered the precedent ledger. Corroborated evidence turned abstention into a verdict.
reference examples · src/examples

Two more ways to read a verdict.

Both ship in the repo as reference consumers — the patterns to copy when the dispute in your protocol doesn't look like an escrow.

src/examples/VerdiktPredictionMarket.sol

Prediction market — judgment as an oracle

A binary market whose subjective outcome is resolved by the court instead of a trusted admin: "did the team ship by the deadline?", "was the announcement bullish?". The verdict is the resolution.

PAYEE resolve YES; winners claim the pool pro-rata.
PAYER resolve NO.
SPLIT / UNDEC. VOID — every staker is refunded.
Reference contract in the repo Source ↗
src/examples/SimpleEscrow.sol

SimpleEscrow — the teaching example

A complete two-party escrow on the AI jury in under 50 lines: inherit VerdiktConsumerBase, call _openDispute, and implement one function — _settle(ref, verdict). Graded SPLIT and UNDECIDABLE are decoded for free by _payeeShareBps. No appeals or stakes; see VerdiktEscrow for the production version.

Walked through line by line in the quickstart Quickstart →
230 tests · 27 suites · live on shannon

Build the next consumer.

If your protocol holds value against a subjective question, it can route that question to the court — one inherited base, one function to implement.