Caullit
Nicocreated$25·Will the Golden State Warriors make the…|Nicocreated$100·Will Bitcoin be above $90,000 on June 1…|Nicocreated$50·Will GTA VI release before the end of 20…|Nicocreated$50·Will ETH close above $2,000 by May 15 20…|Nicocreated$25·Will the Golden State Warriors make the…|Nicocreated$100·Will Bitcoin be above $90,000 on June 1…|Nicocreated$50·Will GTA VI release before the end of 20…|Nicocreated$50·Will ETH close above $2,000 by May 15 20…|

Caullit Protocol

Whitepaper

A technical and economic overview of the Caullit peer-to-peer prediction protocol: how predictions are created, matched, settled, and disputed on Ethereum.

Version 1.0 · April 2026 · v1 · Ethereum Sepolia testnet · Mainnet: v2

1

Introduction

Caullit is a peer-to-peer prediction market built on Ethereum. It allows any two people to settle a prediction directly with each other. No order book, no house, no intermediary taking the other side of the bet.

The core thesis: predictions should be settled between people, not against a platform. When you make a prediction on Caullit, a real counterparty accepts it. The smart contract holds both stakes in escrow. When the outcome is known, the winner collects automatically, on-chain.

Key properties

  • USDC only. All stakes are denominated in USDC. No price exposure, no gas token risk.
  • Non-custodial. Caullit never holds user funds. The escrow contract does. Caullit cannot unilaterally move funds.
  • Three-path resolution. At expiry, the oracle runs the resolution method chosen at creation: deterministic (CoinGecko price), Claude-assisted (AI + evidence, confidence ≥ 0.90), or human submission (both parties submit independently). Most bets resolve with no manual step required.
  • Dispute system. Either party can dispute an oracle resolution during the 24-hour window. A jury of eligible users (selected by honour score) reviews the case blind and votes.
2

How It Works: Prediction Lifecycle

CreateCreator locks USDCOpenAwaiting challengerMatchedBoth stakes in escrowExpiryOracle or submission windowResolution24h dispute or human voteSettledWinner paid

Create

A creator fills in a prediction title, resolution source, category, expiry date, and stake amount. They submit a transaction that approves and transfers USDC into the escrow contract. The prediction is assigned a unique on-chain ID derived from its MongoDB document ID.

Open

The prediction is live and visible to all users. Anyone can browse open predictions and choose to take the other side. The odds field determines how much the challenger must stake relative to the creator.

Matched

A challenger accepts the prediction and locks their USDC in escrow. Both stakes are now held by the contract. The prediction transitions to in_progress status and the expiry clock begins.

Expiry → Three-path oracle

At the expiry date, the backend runs the resolution path that was chosen when the bet was created. Path 1 (crypto above/below bets) fetches the CoinGecko historical price and produces a deterministic binary outcome. Path 2 (structured bets with a resolution source) calls Claude with fetched evidence and auto-resolves if confidence is 0.90 or above. Path 3 (structurally weak bets or oracle fallback) opens a 2-hour submission window where both parties independently submit the claimed outcome.

Resolution → Dispute window or human verdict

Bets resolved via Path 1 or 2 enter a 24-hour dispute window. Either party may dispute by posting a 10% bond. No dispute within 24 hours means the outcome is final and the winner is paid. Bets in Path 3 settle based on the submission logic: both agree → settle immediately; both disagree → jury; one submits and window closes → submitter wins; neither submits → refund.

Settled

The smart contract releases the combined stake (minus the 2.5% platform fee) to the winner's wallet. The prediction is marked as resolved.

3

Smart Contract Architecture

The core contract is CaullitEscrow, deployed on Ethereum Sepolia at:

0xE8fA428e944B903Fa1fda651042c6faaCD58BcBA

Ethereum Sepolia testnet · Full mainnet deployment pending audit

Escrow model

When a prediction is created, the creator's USDC is transferred from their wallet to the escrow contract via ERC-20 approve + transferFrom. The challenger's stake follows the same pattern when they accept. At no point does Caullit hold custody. Only the contract does.

Settlement

The platform calls resolve() on the contract with the winner's address and the outcome. The contract transfers the net payout (total stake minus fee) to the winner and the fee to the Caullit fee wallet.

Fee structure

  • Platform fee: 2.5% (250 BPS) on total winnings
  • Dispute bond (v1): 10% of creator's stake, posted by the disputing party. Returned if the dispute is upheld. v2 will introduce asymmetric bonds — 10% of each party's own stake — to remove disproportionate friction on asymmetric-odds bets.

Non-custodial guarantee

The contract owner can only call resolve() after expiry. It cannot withdraw funds to an arbitrary address before resolution. If Caullit ceases to exist, a time-locked emergency withdrawal function allows participants to reclaim funds after a defined waiting period.

4

The Honour System

010255075100Jury eligible

Juror

≥ 75

Trusted

50–74

Standard

25–49

Risky

10–24

Every user has an honour score between 0 and 100, initialised at 50. It is the primary reputation signal on Caullit and gates access to the jury system.

Score changes

  • Win: +3 points (weighted by odds)
  • Loss: −1 point (weighted by odds)
  • Score range: 0–100, initialised at 50
  • Decay: 1% per week after 7 days of inactivity, floor at 10

Stake multiplier

The stake multiplier scales on a log₁₀ curve. A $20 stake yields a 1× multiplier; stakes above $1,000 are capped at 3×. This prevents large-stake farming from dominating scores.

Repeat counterparty scaling

After three predictions with the same counterparty, the honour change for that pair is reduced to 50%. This discourages coordinated score manipulation between known accounts.

Jury eligibility

Users with an honour score of 75 or above are eligible to serve as jurors. Eligibility is checked at the point of jury selection, not at the time of dispute. If a user's score drops below 75 between selection and the vote, their vote still counts.

5

Jury System

The jury system is Caullit's primary dispute resolution mechanism. It is designed to be resistant to collusion and bias through three key properties: blind packet delivery, randomised selection, and honour-weighted accountability.

Selection

When a dispute is raised, 3 jurors are selected at random from all users with honour ≥ 75. Jurors who have interacted with either party in the disputed prediction are excluded from the pool for that case.

Blind case packets

Each juror receives a case packet containing: the prediction title, resolution source, both parties' arguments, and any evidence submitted. Wallet addresses are redacted. Jurors cannot see each other's votes while deliberating.

Voting

Jurors have 48 hours to submit a vote. A simple majority determines the outcome. If no majority is reached (e.g. 1-1-1 or a juror fails to vote), the case escalates to 5 jurors.

Juror accountability

  • Correct vote (majority side): +3 honour
  • Wrong vote (minority side): −5 honour
  • Failure to vote within 48h: −2 honour, disqualified from jury pool for 7 days

Version 1 constraints

In v1, disputes are submitted via the in-app "Dispute This Outcome" button visible to both parties during the 24-hour window after an oracle resolution. Human submission bets (Path 3) use the in-app "Creator Won" / "Challenger Won" buttons during the 2-hour window. Full on-chain dispute posting is planned for v2.

6

Resolution System

🤝
Bet Matched
Both stakes locked in escrow. Resolution path already assigned at creation.
Expiry Reached
Oracle runs. Resolution path determines what happens next.
Path 1
Path 2
Path 3
📊
Path 1 — Deterministic
Crypto above/below bets. CoinGecko historical price fetched at expiry timestamp.
Price Compared
Asset price vs target. direction above or below. No interpretation — pure data.
Outcome: Confidence 1.0
Binary result. Creator wins or challenger wins. Always deterministic.
🔒
24h Dispute Window
Either party may file a dispute within 24 hours by posting a 10% bond.
🏆
Settled
No dispute filed → funds released automatically.
🤖
Path 2 — Claude-Assisted
Structured bets with a resolution source. Claude fetches evidence and evaluates the claim.
Evidence Fetched
Resolution source URL fetched (5s timeout). Content passed to Claude with hardened system prompt.
Confidence ≥ 0.90
Clear answer supported by evidence → outcome posted.
Confidence < 0.90
Ambiguous or insufficient evidence → falls through to Path 3.
🔒
24h Dispute Window
Either party may dispute within 24 hours by posting a 10% bond.
🏆
Settled
No dispute → funds released.
👤
Path 3 — Human Submission
Structurally weak bets, or oracle fallback. 2-hour window for independent submissions.
Both submit independently
Creator
Creator Won
Challenger
Challenger Won
Both Agree
Settle immediately. No bond, no jury.
Both Disagree
Escalate to jury. Both disputed.
One Submits
Window closes → submitter wins by default.
Neither Submits
Window closes → full refund.
Dispute Path — Applies to Path 1, 2, or 3
Dispute Filed
Either party disputes within the window. 10% bond posted by disputer (v1: based on creator stake). Bet escalates to jury immediately.
10% bond (creator stake, v1)Sent to jury pool
👥
Jury Assigned
3 jurors selected randomly from users with honour ≥ 75. Blind case packet delivered — no identities, no stake size visible.
3 jurors (first round)5 jurors (if no majority)
CASE PACKET — JUROR VIEW ONLY
Prediction
"Will ETH close above $2,000 by May 15 2026?"
Resolution rule
ETH closing price above $2,000 on May 15 per CoinGecko
Evidence
Fetched from resolution source (if available)
Identities
█████ Permanently redacted
Stake size
Shown as: Medium
Oracle reasoning
Claude explanation if Path 2 was used
🗳️
Jury Votes
48-hour voting window. Simple majority determines outcome. No majority → escalates to 5 jurors.
🏆 Creator Wins
Jury sides with creator. Bond returned to winner side. Loser bond distributed.
🔄 Full Refund
No majority reached after escalation. Both stakes returned.
🏆 Challenger Wins
Jury sides with challenger. Bond returned to winner side.
Final Settlement
🔒
Funds Released On-Chain
Winner receives pot minus 2.5% platform fee. Honour scores updated.
Win: +3 HonourLose: −1Correct jury vote: +3Wrong jury vote: −5
⚖️
Core principle: Most bets resolve automatically with zero human input. The oracle picks the path that best fits the bet structure. Disputes cost money. Silence costs you the bet. The system makes honesty and participation the rational choice.

Caullit uses a three-path resolution system that selects the most reliable method for each bet based on its category, structure, and available evidence. The goal is deterministic resolution wherever possible, AI-assisted resolution where appropriate, and human judgment as the final fallback.

Path 1 — Deterministic (crypto price bets)

Crypto price bets with a structured above/below template resolve against the CoinGecko historical price API at the exact expiry timestamp. No interpretation is involved. The oracle fetches the asset price at the resolution date, compares it to the target, and produces a binary outcome.

This path applies when: category is crypto, resolution source is CoinGecko, and template is above/below. Confidence is always 1.0 on this path. The result is auditable and repeatable.

Path 2 — Claude-assisted (structured bets)

For bets with a clear resolution rule, a named resolution source, and an objective template, Caullit uses Claude to determine the outcome. The resolver:

  1. Fetches the resolution source URL (5 second timeout)
  2. Passes the bet title, resolution rule, expiry date, category, and fetched evidence to Claude
  3. Claude returns a structured result: outcome, confidence (0–1), reasoning, and sources used

Claude only auto-resolves if confidence is 0.90 or above and the outcome is not inconclusive. Bets below this threshold are routed to the human submission flow. Claude operates under a strict system prompt with seven constraints designed to prevent prompt injection and ensure outcomes are based only on verifiable evidence.

Path 3 — Human submission flow

Bets that are structurally weak at creation, or where the oracle cannot resolve with sufficient confidence, enter a 2-hour submission window. Both parties independently submit their claimed outcome. Resolution logic:

  • Both submit the same outcome → settled immediately
  • Both submit different outcomes → disputed, escalates to jury
  • One submits, window closes → submitter wins
  • Neither submits, window closes → refunded

A bet is considered structurally weak if it has no resolution rule, no resolution source (for non-crypto bets), uses a subjective template without an objective rule, or was marked low confidence at creation. Structurally weak bets always go to human flow regardless of oracle availability.

Dispute window

Every bet resolved via Path 1 or Path 2 enters a 24-hour dispute window before settling. Either party may dispute the outcome by posting a bond of 10% of their individual stake. Disputing immediately escalates the bet to jury resolution. If no dispute is filed within 24 hours, the outcome is final and funds are released.

Bond amounts in v1 are calculated on the creator's stake only. A future upgrade will introduce asymmetric bonds — each party's bond calculated as 10% of their own side's stake — to remove disproportionate friction on asymmetric-odds bets.

Jury resolution

Disputed bets are assigned to a pool of qualified jurors selected based on honour score, activity, and category expertise. Jurors review the bet title, resolution rule, evidence, and Claude's reasoning (if applicable) without seeing wallet addresses, stake amounts, or other juror votes. A majority verdict settles the bet.

Resolution status flow

matchedawaiting_resolutionclaude_resolved (Path 1 or 2) or submission_open (Path 3) → disputed (if challenged) → jurysettled

Bets that cannot be resolved before the void deadline are cancelled and stakes returned.

7

Technical Stack

Frontend

  • Next.js 14 (App Router), server and client rendering
  • Tailwind CSS, utility-first styling
  • RainbowKit v2 + wagmi v2, wallet connection and transaction signing
  • viem, Ethereum utilities and ABI encoding

Backend

  • Next.js API Routes, REST endpoints for bets, users, jury, and oracle
  • MongoDB Atlas, persistent storage for predictions, users, and jury cases
  • Mongoose, ODM layer with typed schemas

Blockchain

  • Ethereum, the leading decentralized smart contract platform
  • Ethereum Sepolia, v1 testnet deployment · Ethereum mainnet targeted for v2
  • USDC (Circle), settlement currency on Ethereum

Infrastructure

  • Vercel, deployment with edge functions and CI/CD via GitHub
  • Chainlink Price Feeds, ETH/USD reference for stake multiplier calculations
8

Roadmap

v1Current
  • Core P2P prediction market on Ethereum Sepolia
  • Honour scoring system
  • Jury dispute resolution (3 jurors, blind packets, escalates to 5)
  • Waitlist and soft launch at caullit.gg
  • USDC only
v2Next
  • Ethereum mainnet launch (pending audit)
  • Oracle/resolver backend (reads sources at expiry, posts outcome automatically)
  • Full 6-layer resolution system in the smart contract
  • On-chain dispute submission (currently backend-only)
  • USDT support
  • Mobile app (React Native)
  • Public API
  • Enhanced oracle (multi-source consensus)
  • Terms of Service and Privacy Policy
  • caullit.gg domain setup
v3Planned
  • $CALL token launch
  • Juror staking
  • Governance via token holders
v4Future
  • Institutional integrations

© 2026 Caullit · Terms of Service · Privacy Policy