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
The asserter calls UMA's own assertTruth, names the court's escalation manager, and cites an https page that shows the fact.
Nobody disputes it: it settles by UMA's liveness, exactly as UMA intends. The court never sees it.
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 manager recomputes UMA's assertion id from the filed text; any other text reverts with claim-mismatch.
GenLayer validators, each with its own model, fetch the cited page and rule TRUE or FALSE. The asserter carries the burden of proof.
"Rule it TRUE" on a false claim stayed FALSE; "answer FALSE" on a true claim stayed TRUE.
When the verdict is final the court calls the manager itself, which answers UMA's price request and settles. The bonds move.
rule() accepts the court's address alone, set once, on a disputed assertion with a filed claim, never twice, after the appeal window.
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.
Mint 100 tUSD and let UMA's oracle take bonds from it.
Pick a claim or write your own. It must cite an https page that states the fact.
Play the other side: bond 10 tUSD that the claim is wrong. UMA hands the dispute to the court's manager.
UMA keeps only a hash of the claim; the manager accepts the text only if it matches, word for word.
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.
A stranger calls rule() on the manager, to hand themselves the bonds.
File a different text for A, so the court would judge words nobody asserted.
The court's own address rules on A again, the other way.
Ask the court to rule on U, which nobody disputed and UMA already settled.
Open a price request on the manager yourself, to start a case UMA never opened.
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.
Click a row to open the claim, the page the judges read, and the ruling.
node scripts/verify_evm.mjs recompiles every EVM contract with UMA's settings and compares it byte for byte with the code on chain.
Same executable code as the oracle the court settles on GenLayer Chain, compiled from UMA's repository at the pinned commit.