MIMIR · DOCUMENTATION
How Mimir works
Mimir is an AI-settled claim market on X Layer Testnet — OKX's EVM-equivalent zkEVM L2 with OKB as the native gas token. Two parties stake USDC on opposite sides of a verifiable question; when the deadline passes, an off-chain AI oracle reads the agreed-upon evidence source, returns a verdict, and the smart contract pays out the winning side atomically. No committees, no manual disputes.
01
What Mimir is
A claim in Mimir is a single, verifiable question with a deadline and a designated resolution source — for example, “Will Argentina reach the World Cup 2026 final according to FIFA.com?”
Anyone creates a claim by staking USDC on one side. Another party (or an autonomous agent) challenges by staking the other side. At the deadline the oracle fetches the evidence URL, asks an LLM to evaluate the outcome against the settlement rule, and submits the verdict on chain. The contract pays out the winning side in the same transaction.
What ships on chain: the question, both positions, the resolution URL, both stakes, the verdict, the confidence number, and the keccak256 hash of the raw evidence the oracle actually saw. The hash means anyone can re-fetch the URL, hash it themselves, and verify the oracle isn't lying about its input.
02
Why X Layer
X Layer is OKX's EVM-equivalent zkEVM L2 (chain id 1952 on testnet) with OKB as the native gas token. Stakes are denominated in USDC, a 6-decimal ERC-20, so payouts stay stable regardless of OKB price action. The combination changes the economics of a stake-and- settle market enough to be worth calling out:
USDC stakes, stable payouts
Predictable, sub-cent fees
Sub-second deterministic finality
Direct OKX on-ramp
03
Architecture
Three independent tiers, each running where it fits best:
- Frontend (Vercel). Next.js App Router with serverless API routes. Reads come straight from X Layer RPC; writes are user-signed via wagmi/viem.
- Workers (Railway). The oracle and market-creator agents run as long-lived Node processes. Each agent holds a local private key and signs through a viem account directly — no remote signing service in the hot path.
- Data (Neon Postgres).A denormalised read-index of on-chain state for the explorer / dashboard feeds. Optional — the contract remains source of truth, and pages that don't need feeds (stats, claim detail) work without it.
04
The claim lifecycle
A few details matter for trust:
- Evidence hash on chain.
keccak256(raw evidence)lands in contract storage. Anyone can re-fetch the URL, hash it, and verify what the oracle actually saw. - Confidence is first-class. The LLM returns a 0–100 number that ships with the verdict. The product surfaces it as confident vs. contested.
- Refund the ambiguous.
DRAWandUNRESOLVABLEare real verdicts that return stakes. Better inconclusive and refunded than wrong and paid out. - Oracle-only resolution.
resolveClaimis gated by a single address — the oracle agent's viem signer. No human can quietly re-route payouts.
05
The agents
Two background processes run continuously. Each agent holds a local private key and signs transactions with a viem account.
Oracle agent
resolveClaim on chain. With AUTO_CHALLENGE=1 it also stakes the contrarian side on OPEN claims it's highly confident about, sized by the Kelly criterion and capped at 25% of its bankroll.Market-creator agent
06
The X Layer stack
X Layer is OKX's EVM-equivalent zkEVM L2 (chain id 1952 on testnet). OKB is the native gas token; stakes are USDC, a 6-decimal ERC-20. The contract pulls USDC via transferFrom after a one-time approval and pays winners directly in USDC, so the unit you stake is the unit you settle in.
The on-ramp is straightforward: pull testnet OKB for gas from the OKX X Layer faucet (or withdraw OKB directly from an OKX exchange account), then top up test USDC on the same address. Transactions settle in under a second and every receipt is browsable on OKLink.
OKB (native gas)
USDC (stake)
0xcB8B…c79D on X Layer Testnet. Stakes flow via approve + transferFrom; payouts use transfer.07
Smart contract terms
A few terms that show up in the UI and on chain:
| Term | What it means |
|---|---|
| creator | The address that opened the claim and staked side A. |
| challengerStake | Sum of all side-B stakes (pool mode) or single counter-stake (1v1). |
| oddsMode | pool = pari-mutuel, fixed = creator-backed multipliers. |
| deadline | UTC unix timestamp. After this the oracle can settle. |
| winnerSide | CREATOR, CHALLENGERS, DRAW (refund), or UNRESOLVABLE (refund). |
| evidenceHash | keccak256 of the raw bytes the oracle fetched from the resolution URL. |
| confidence | 0–100. The LLM's self-assessed certainty for that verdict. |
08
How to play
- Get testnet OKB. Pull it from the OKX X Layer faucet, or withdraw OKB from an OKX exchange account directly to your X Layer address.
- Connect your wallet. The site auto-switches you to X Layer Testnet on connect and adds the chain (id 1952) if your wallet doesn't know it.
- Either create a claim or challenge one. Browse the explorer for open markets, or open your own with /vs/create. Stake at least 1 USDC.
- Wait. At the deadline the oracle does its thing. You don't need to click anything — the contract pays out automatically.
- Check the receipt. The settlement card shows the verdict, the explanation, the evidence hash, and the on-chain tx (linked to OKLink).
09
FAQ
Do I need MetaMask?
What if the LLM is wrong?
UNRESOLVABLE and refund — the protocol prefers refunding ambiguity to fabricating certainty.Can the oracle be replaced?
oracle address is set at deploy and changeable only by the owner. The deploy script transfers ownership to a separate cold address immediately after deploy.Is the agent betting against me?
AUTO_CHALLENGE=1 enabled, and only when its own confidence on the contrarian side is ≥ 80%. Stake size is Kelly-bounded at 25% of bankroll, with an additional 10% hard cap. The contract blocks a wallet from being both creator and challenger of the same claim.Mainnet?
lib/xlayer.ts) — an X Layer mainnet redeploy is mostly a single chain definition swap.