A binary prediction market and “parametric cover” demo:
- YES = “flight disruption” (default:
cancelled OR diverted OR delayMinutes ≥ thresholdMin) - NO = otherwise
- Anyone can request settlement after close.
- A Chainlink CRE workflow listens for the onchain
SettlementRequestedevent, fetches flight status from AirLabs, deterministically computesdelayMinutes+ outcome, builds an Evidence Pack (JSON) +evidenceHash, then submits a signed report back onchain via the CRE Forwarder → onReport flow.
- User trades YES/NO on
FlightMarket.sol(parimutuel pools). - After close, someone calls
requestSettlement(marketId)→ emitsSettlementRequested. - CRE Workflow (TypeScript):
- EVM Log Trigger catches the event
- HTTP Client calls AirLabs
/flight?flight_iata=... - Deterministically computes:
delayMinutesfromdep_delayed/arr_delayed/delayedcancelled/divertedinferred fromstatus
- Builds Evidence Pack JSON → canonicalize →
keccak256→evidenceHash - stores settlement data in Firestore
- Creates a signed report and performs onchain write via Forwarder →
onReport(...).
- Contract stores
resolved,delayMinutes, andevidenceHash, enabling verification.
solidity/— Foundry project (FlightMarket.sol)workflows/flight-delay/— Chainlink CRE workflow (TypeScript)frontend/— React + Vite + TS + Tailwind + Recharts UI