Status: Coming Soon — This feature is under active development.
Overview
Strike currently resolves all markets using Pyth price feeds — deterministic, on-chain price data. This works perfectly for quantitative markets ("Will BTC be above $90k at expiry?") but limits the types of events Strike can support.
AI-Resolved Markets extend Strike to support qualitative and subjective events — geopolitics, culture, politics, sports, and more — by integrating the Flap AI Oracle as an alternative resolution source.
What This Unlocks
Current (Pyth-only)
With AI Resolution
BTC above $X by date?
Will Iran close the Strait of Hormuz by March?
ETH price at expiry?
Will there be a Russia/Ukraine ceasefire by Q2?
BNB above/below?
Who wins the 2026 FIFA World Cup?
—
Will GTA VI release before June 2026?
—
Oscars Best Picture winner?
These are exactly the market categories generating the highest volumes on existing prediction platforms — geopolitics alone drove $529M+ in weekly volume in March 2026.
How It Works
AI-resolved markets use a commit-and-reveal oracle pattern (similar to Chainlink VRF, but for LLM reasoning):
Based on publicly available news and information as of [expiry date]:
Has [event description] occurred?
0 = No — the event has not occurred
1 = Yes — the event has occurred
Consider only verified reports from major news agencies.
Respond with only the number of your choice.
contract FlapAIResolver is FlapAIConsumerBase, IResolver {
// Market question stored at creation time
mapping(uint256 => string) public marketPrompts;
mapping(uint256 => uint256) public pendingRequests; // marketId => requestId
function resolveMarket(uint256 marketId) external {
// Build prompt from market metadata
string memory prompt = _buildPrompt(marketId);
// Send to Flap AI Oracle
IFlapAIProvider provider = IFlapAIProvider(_getFlapAIProvider());
uint256 fee = provider.getModel(MODEL_ID).price;
uint256 requestId = provider.reason{value: fee}(MODEL_ID, prompt, NUM_CHOICES);
pendingRequests[marketId] = requestId;
}
function _fulfillReasoning(uint256 requestId, uint8 choice) internal override {
uint256 marketId = _getMarketForRequest(requestId);
// Map choice to outcome and settle
_settleMarket(marketId, choice);
}
}
// Verify any past resolution
string memory cid = IFlapAIProvider(oracle).getReasoningCid(requestId);
// Fetch from: https://ipfs.io/ipfs/<cid>