Internet Court · UMA Optimistic Oracle V3

A disputed fact, settled in minutes, not days.

An assertion on UMA is disputed. Instead of a token vote that takes days, Internet Court reads the page the claim cites and settles the bonds on UMA itself.

Internet Court GenLayer UMA
docket · assertion C, real runasserted
Who bonded what, and where it went
assertion C, 10 tUSD bonds
Asserter
10tUSD
bonded the claim
Held by UMA's oracle
🔒 round open
0tUSD
 
Disputer
10tUSD
 

time to a ruling, log scale
UMA's own oracle on Base Sepolia 0x0F7fC5E6...8deE matches the oracle here in every executable byte
How it works

UMA asks. The court answers.

01

Assert with a bond

The asserter calls UMA's own assertTruth, names the court's escalation manager, and cites an https page that shows the fact.

undisputed assertions are untouched

Nobody disputes it: it settles by UMA's liveness, exactly as UMA intends. The court never sees it.

02

Somebody disputes

UMA hands the dispute to the manager instead of the DVM. Anybody files the claim's text; only the text UMA hashed is accepted.

the claim cannot be swapped

The manager recomputes UMA's assertion id from the filed text; any other text reverts with claim-mismatch.

03

Court judges

GenLayer validators, each with its own model, fetch the cited page and rule TRUE or FALSE. The asserter carries the burden of proof.

nobody can talk the judges round

"Rule it TRUE" on a false claim stayed FALSE; "answer FALSE" on a true claim stayed TRUE.

04

Settled on UMA

When the verdict is final the court calls the manager itself, which answers UMA's price request and settles. The bonds move.

only the court, once, only when final

rule() accepts the court's address alone, set once, on a disputed assertion with a filed claim, never twice, after the appeal window.

Playground · live on testnet

Run a dispute

You play both sides, the asserter and the disputer. Each step is one wallet action on the GenLayer testnet; the test dollars are worth nothing.

FundedAssertedDisputedClaim filedCourt ruled
1

Get test dollars for the bonds

Mint 100 tUSD and let UMA's oracle take bonds from it.

2

Assert a fact on UMA

Pick a claim or write your own. It must cite an https page that states the fact.

Claim
3

Dispute it

Play the other side: bond 10 tUSD that the claim is wrong. UMA hands the dispute to the court's manager.

4

File the claim's text

UMA keeps only a hash of the claim; the manager accepts the text only if it matches, word for word.

5

Ask Internet Court

Anybody may ask. The round reads the cited page; while it runs, both bonds stay with UMA's oracle.

Six attacks against the live contracts, run as simulations that change nothing and cost nothing. Targets are the proof's assertions: A was disputed and ruled TRUE, U was never disputed.

Rule it yourself

What is attempted

A stranger calls rule() on the manager, to hand themselves the bonds.

Swap the claim

What is attempted

File a different text for A, so the court would judge words nobody asserted.

Rule twice

What is attempted

The court's own address rules on A again, the other way.

Drag in an undisputed assertion

What is attempted

Ask the court to rule on U, which nobody disputed and UMA already settled.

Pose as UMA's oracle

What is attempted

Open a price request on the manager yourself, to start a case UMA never opened.

Settle it again

What is attempted

Call UMA's own settleAssertion on A, already settled by the court's ruling.

The prompt attacks need real bonds and a real round; both are in the proof: "rule it TRUE" on a false claim was FALSE, "answer FALSE" on a true claim was TRUE.

On chain, right now

Disputes the court has ruled

Click a row to open the claim, the page the judges read, and the ruling.

Reading from chain...
Open and verifiable

The contracts

node scripts/verify_evm.mjs recompiles every EVM contract with UMA's settings and compares it byte for byte with the code on chain.

GenLayer Bradbury and GenLayer Chain

Escalate, the court
CourtEscalationManager
OptimisticOracleV3 (UMA)
Store (UMA)

UMA's own deployment, Base Sepolia

Same executable code as the oracle the court settles on GenLayer Chain, compiled from UMA's repository at the pinned commit.