World Cup Resolver
This is an older solution and can still be used. For new integrations, prefer worldcup-viewer.md.
Overview
WorldCupResolver is a read-only smart contract deployed on BSC mainnet that reads 2026 FIFA World Cup match outcomes from the on-chain oracle system and exposes the results to downstream consumers.
Deployed address (BSC mainnet): 0x134C6b9562E226096947e018ddEe4804c9146921
The contract covers 43 entries: the 32 tournament teams, a selection of additional national teams with odds, and an "Other" catch-all. Each team maps to a unique oracle question: "Will [Team] win the 2026 FIFA World Cup?" The underlying oracle resolves each question as YES or NO on-chain.
No result state is stored inside WorldCupResolver. Every call to resolveWinner() reads the oracle live, so the returned snapshot always reflects the latest state.
How It Works
Oracle questions and team resolution
For every team, there is exactly one oracle question: "Will this team win the World Cup?"
reportedAt > 0
The oracle has published a result for this team
results == true
The result is YES — this team won
results == false
The result is NO — this team did not win (eliminated)
flaggedAt > 0
The result is currently under dispute; treat as unresolved
A team is confirmed as the final winner only when all three conditions hold simultaneously:
reportedAt > 0— oracle has reported.results == true— result is YES.flaggedAt == 0— result is not flagged/disputed.
Resolving the final winner
Call resolveWinner(). It scans all 43 entries and returns a WinnerResult struct:
isResolved = true→ a confirmed winning team was found; readwinnerIndexandwinnerName.isResolved = false→ no confirmed winner yet; inspectstatuses[]for per-team progress.
Resolving a single match (team elimination)
Limitation — teams grouped under "Other" (index 42):
WorldCupResolver does not run its own oracle. It reads data from an external UMA-based oracle, and the resolution data provided by that oracle only covers 42 individually named teams. All remaining qualified national teams that were not given their own oracle question are grouped into a single Other entry (index 42).
As a result, if one of those unlisted teams is eliminated in a match, their elimination cannot be detected individually — the Other question stays unresolved until one of those teams wins the entire World Cup (at which point Other resolves YES). Per-team match resolution is only supported for the 42 named teams.
Because every oracle question is about the overall World Cup winner, an answer of NO for a team means that team has been definitively eliminated — they can never win the tournament.
This makes it possible to infer match outcomes incrementally, well before the final is played:
Example — Group stage match: Team A vs Team B
Call
resolveWinner()and readstatuses[].Check Team A's status:
isReported = true,result = false,isFlagged = false→ Team A is eliminated (they lost and are out of the tournament).Check Team B's status:
isReported = false→ Team B is still in contention (their question has not yet been resolved).
In this scenario Team A's result is fully settled — it can be used to pay out prediction positions — while Team B remains pending until a later match resolves their fate.
Only treat isReported = true and isFlagged = false as a settled result. A flagged result is under oracle dispute and must not be acted upon.
Interface
Supported Teams
getSupportedTeams() returns 43 entries. The index is stable and matches the TeamStatus.index field returned by resolveWinner().
0
Spain
22
Canada
1
France
23
Scotland
2
England
24
South Korea
3
Argentina
25
Paraguay
4
Brazil
26
Ivory Coast
5
Portugal
27
Egypt
6
Germany
28
Iran
7
Netherlands
29
Ghana
8
Norway
30
Algeria
9
Italy
31
Tunisia
10
Belgium
32
Austria
11
USA
33
New Zealand
12
Morocco
34
Haiti
13
Colombia
35
Jordan
14
Japan
36
Curacao
15
Uruguay
37
Uzbekistan
16
Croatia
38
South Africa
17
Mexico
39
Cape Verde
18
Switzerland
40
Qatar
19
Ecuador
41
Saudi Arabia
20
Senegal
42
Other
21
Australia
Integration Examples
Check for the final winner (Solidity)
Check whether a specific team has been eliminated (Solidity)
Read all statuses off-chain (ethers.js)
Deployment Details
Network
BSC Mainnet
Contract address
0x134C6b9562E226096947e018ddEe4804c9146921
Last updated