Verifiable AI decisions on 0G. Verdict Layer is a single on-chain primitive that answers "is this claim true?" and hands back a TEE-attested AI verdict with cryptographically anchored reasoning.
Verdict Layer is a verifiable AI adjudication primitive built natively on 0G.
It answers one question "is this claim true?" and returns a TEE-attested verdict with cryptographically anchored reasoning, all settled on-chain in under 30 seconds. A single contract surface (AssertionRegistry) serves as the universal backend for any decision that needs to be provably fair: freelance dispute resolution, parametric insurance payouts, DAO milestone releases, and content authenticity certification four reference applications sharing one adjudication layer. Judges run sealed inference inside TEE enclaves on 0G Compute. Every chain-of-thought is written to 0G Storage with its Merkle root anchored in the on-chain verdict event, making every decision independently re-verifiable by any third party. For high-stakes claims, an AUDITED mode opens a bond-backed challenge window where three independent models (DeepSeek V3, GLM-5-FP8, Qwen3-VL 30B) vote as a swarm majority wins. The protocol implements ERC-792 (Kleros-compatible arbitrator interface) and introduces ERC-7857 soulbound Agent IDs for non-transferable judge reputation tracking. This means any dApp already integrated with decentralized arbitration can swap Verdict Layer in without modifying their application contracts.
Live on 0G Mainnet: https://verdictlayer.xyz
0G integration points
| Chain | 9 contracts on 0G Mainnet (addresses below). ERC-792-style arbitration interface + ERC-7857 soulbound judge reputation NFT.
| Compute | Judgment worker calls broker.inference against TEE-verified providers; every response goes through processResponse().
| Storage | Evidence uploads + reasoning transcripts via ZgFile + Indexer. Every bytes32 evidenceRoot on-chain is a 0G merkle root.
| Oracles | /api/oracle/flight calls AviationStack, canonicalises the payload, uploads to 0G Storage, returns the root for a claim.
| Agent ID | ReputationRegistry mints a soulbound NFT per judge. Verdicts and lost appeals accumulate on-chain.
<p><span style="color: oklch(0.147 0.004 49.25)">Built and deployed end-to-end - from Solidity to production UI - during the hackathon period. Every component is live on 0G Mainnet (chainId 16661).</span></p><p><span style="color: oklch(0.147 0.004 49.25)"><br>Smart Contracts (Solidity 0.8.24, Hardhat, deployed on mainnet)</span></p><p><span style="color: oklch(0.147 0.004 49.25)">9 contracts: AssertionRegistry, VerdictEnforcer, EscalationManager, ReputationRegistry (ERC-7857), Verifier, Escrow, ParametricInsurance, MilestoneVault, AuthenticityCertifier</span></p><p><span style="color: oklch(0.147 0.004 49.25)">83 unit tests covering the full assertion lifecycle, bond settlement, challenge mechanics, and all four application callbacks</span></p><p><span style="color: oklch(0.147 0.004 49.25)">ERC-792 arbitrator interface + ERC-7857 soulbound judge NFT standard</span></p><p></p><p><span style="color: oklch(0.147 0.004 49.25)">Backend (Fastify + BullMQ + Drizzle + Redis)</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Chain indexer: poll-based event mirror with checkpoint persistence - indexes all 6 contracts and auto-finalises AUDITED verdicts after challenge windows close</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Judgment worker: evidence download, prompt assembly, TEE streaming inference, reasoning upload to 0G Storage, on-chain verdict submission</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Appeal worker: 3-judge swarm across independent TEE providers, majority-vote resolution</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Real-time SSE endpoint streaming tokens as the judge reasons - users watch the chain-of-thought form before the TX lands</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Oracle integration (AviationStack) for parametric insurance triggers</span></p><p><span style="color: oklch(0.147 0.004 49.25)"><br></span></p><p><span style="color: oklch(0.147 0.004 49.25)">0G Integration (all three layers, production usage)</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Chain: 9 mainnet contracts, AssertionRegistry processes live assertions</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Compute: TEE-verified inference via 0g-serving-broker (0.6.5), processResponse() fee settlement on every call, multi-model provider discovery and selection</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Storage: evidence file uploads + full reasoning transcript archival via ZgFile + Indexer, Merkle root verification pipeline</span></p><p><span style="color: oklch(0.147 0.004 49.25)"><br></span></p><p><span style="color: oklch(0.147 0.004 49.25)">Frontend (Next.js 16, React 19, Tailwind, wagmi/viem)</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Marketing landing page with animated protocol flow diagram</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Four fully functional application UIs: create escrows, file insurance claims, submit milestone proofs, request authenticity checks</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Live reasoning stream panel (SSE) showing judge thought process in real-time</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Privy wallet authentication, on-chain transaction signing, evidence upload flow</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Architecture explainer page with deployment addresses</span></p><p></p><p><span style="color: oklch(0.147 0.004 49.25)">Key Technical Decisions</span></p><p><span style="color: oklch(0.147 0.004 49.25)">INSTANT vs AUDITED dual-mode: applications choose their trust/latency tradeoff at assertion creation time</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Bond economics: challenge requires matching the asserter's bond; loser forfeits to winner, creating skin-in-the-game for appeals</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Callback pattern: VerdictEnforcer dispatches outcomes to application contracts via a standardized onVerdict(assertionId, outcome, reasoningRoot) interface - new apps integrate by implementing one function</span></p><p><span style="color: oklch(0.147 0.004 49.25)">Monorepo with shared types/ABIs/deployment manifests ensures contract changes propagate to API and frontend without drift</span></p>