# Verdikt **Trustless AI arbitration for on-chain escrow** Built on Somnia's Agentic L1 · Shannon testnet `github.com/Ridwannurudeen/verdikt` --- ## On-chain escrow can't handle subjective disputes - Price feeds and parametric rules can't decide *"was the service delivered as described?"* - A single off-chain bot is a trust hole the size of the operator - Human juries (Kleros-style) are slow and uneconomical for small claims - Most teams ship a 2-of-3 multisig and call it done The dispute committee that on-chain escrow needs **doesn't exist yet**. --- ## Somnia's Agentic L1 makes AI judgment trust-minimized A subcommittee of validators each runs the same LLM inference. Consensus is reached on a **byte-identical** result via `allowedValues`. That is a juror committee. We turn it into a **settlement layer**. --- ## VerdiktCourt — a reusable AI-jury primitive `openCase(evidence)` → panel of **5** LLM agents → Majority verdict (`PAYEE` / `PAYER` / `SPLIT`) → 1-hour appeal window → permissionless `finalize`. - Per-juror chain-of-thought stored off-chain in the agent **receipt** - Consumer contracts implement `IVerdiktConsumer.onVerdict` - No admin signer · no fallback path · no human in the settlement loop --- ## The novel layer: stake-backed appeals The losing party can post a stake and force a re-trial with a **9-agent panel and new evidence**. - Appeal **upheld** → stake slashed to the counterparty (minus configurable treasury cut) - Appeal **overturned** → stake returned New evidence is the honest design. Deterministic inference doesn't randomly change its mind — **only better facts should**. --- ## Two consumers, one primitive ### `VerdiktEscrow` Two-party deal. Payer funds, payee delivers, anyone can release after the deadline. Appeal stake = 10% of deal. ### `VerdiktInsurance` Parametric claims-arbitration pool. Funders earn shares; insured pays a 5% premium; pool funders can appeal a `PAYEE` verdict; `withdrawPool` is locked while a claim is open. The court doesn't know what `Escrow` or `Insurance` mean — that's the point. --- ## What ships today - **3 contracts** (`Court`, `Escrow`, `Insurance`) + 3 interfaces - **35/35 tests passing** — forge 1.7.1, solc 0.8.24, evm_version paris - **Deploy scripts** for Shannon (`Deploy.s.sol`, `DeployInsurance.s.sol`) - **Auto-keeper** — Node + viem, watches `VerdictReached` / `Delivered`, drives `finalize` and `release` - **Demo UI** — single-page HTML, viem from esm.sh, no build step - **Determinism gate** — probe contract + driver that prints a per-validator histogram --- ## Honest scope - Shannon testnet only · unaudited hackathon code - Determinism gate is **prepared but not run live yet** — needs funded key + real `LLM_AGENT_ID` - If panel outputs diverge, fallback is binary `PAYEE/PAYER` and/or `chainOfThought=false` - All values in native **STT** — no ERC-20 in v1 ### Asks 1. Validate the panel converges (run the determinism gate) 2. Plug in a third consumer — the court is reusable by design `github.com/Ridwannurudeen/verdikt`