Private opportunity markets where scouts trade YES against sponsor liquidity on Sapphire.
Opportunity Markets is a private prediction-market platform where scouts surface early opportunities and sponsors act before the crowd. Markets run as dark constant-product AMMs on Oasis Sapphire so only the sponsor sees book depth; trades sit inside two-week (configurable) windows that auto-lock, then resolve with YES payouts or penalty-reduced refunds on NO.
The Next.js app ships a market directory, trading workspace, and sponsor wizard that hashes questions/options client-side to avoid leaking sensitive strings. Demo mode mirrors the flow with local storage so we can show the UX without a RPC.
This is an implementation of the research writing by Paradigm - https://www.paradigm.xyz/2025/08/opportunity-markets
Built as a split stack. The frontend is Next.js 14 + Tailwind with RainbowKit/Wagmi/Viem wired to Sapphire defaults; it hydrates a market directory from the factory contract, renders a Trading Workspace with slippage-checked YES buys, and offers a Sponsor wizard that hashes questions/options in the browser before calling OpportunityFactory.createMarket. Demo mode falls back to static metadata and localStorage for offline walkthroughs.
The contracts are Solidity ^0.8.20, tested with Foundry: OpportunityMarket is a constant-product AMM where only sponsors provide liquidity, enforces penaltyBps on NO outcomes, blocks sponsor self-trading, auto-locks on window close, and exposes claim paths for winners/sponsor residuals.
OpportunityFactory seeds markets, transfers initial collateral from the sponsor, and keeps minimal metadata to avoid leaking prices; the code is ready for Sapphire’s confidential storage and a ROFL/TEE quote pipeline defined in rofl.yaml.

