Corner Case

Adversarial demo

Go ahead. Try to cheat.

Settlement here is permissionless — no oracle wallet, no admin key, no allow-list. Anyone can settle any market, and the reason that is safe is the five check gates the program runs on every settle. To prove it, we seeded three real matched markets and armed three real attacks against them. Connect a wallet and fire one: your wallet signs a real settle_market transaction with a genuinely valid TxLINE Merkle proof — just the wrong one — and watch the program reject it on-chain. The failed transaction lands on devnet anyway, so you can open it in the explorer and read the gate that stopped you.

Attack 1

Settle at halftime

Gate #2

Submit a real, valid TxLINE proof — of the 0–0 score at the halftime whistle (period 3) — to settle before the match is over.

If it worked

A prop like “no red cards in the second half” reads YES at minute 60, when no H2 red has happened yet. Settle early and you bank a bet the match could still lose.

Target · HzcHyw…FHxEkD

Attack 2

Prove the wrong stats

Gate #5

This market is “total corners > 9.5” (keys [7,8]). Submit a real, valid, FINAL proof — of the goals (keys [1,2]) — instead.

If it worked

TxLINE strategies address leaves by index, not by stat key. A valid proof of the wrong stat slots into index 0/1 and can flip a losing corners bet into a winning one.

Target · J2YUfm…CoVEXr

Attack 3

Use another match’s proof

Gate #4

This market is bound to fixture 99999901. Submit the real, valid, final England v Argentina (18241006) proof to settle it anyway.

If it worked

Some match somewhere always satisfies your predicate. If proofs weren’t bound to THIS fixture, a valid proof from a different game could settle any market you like.

Target · 95oW57…HJxasg

No valid proof for fixture 99999901 can ever be produced, so nobody — not even an honest settler — can close this market. Its escrow is recoverable only via the permissionless void hatch (both stakes home, 6h past kickoff). Funds can never strand.

Three of these are what you just fired at. All five run on every permissionless settle; together they mean the only thing a settler controls is which valid proof to bring, and the program decides the rest.

#GatePrevents
1Kickoff deadlinetaking a side after the match started — betting on known outcomes
2Finality (period == 100)settling a mid-match proof as final (this page, attack 1)
3Epoch windowshopping arbitrary historical daily roots
4Fixture bindingsettling with a valid proof from a different match (attack 3)
5Stat-key bindingsettling with a valid proof of the wrong stats (attack 2)