How it works

The whole design
on one page

A fixture on Sportspad is two ordinary coins with two ordinary bonding curves, plus a pool of fee money the match owns and one decision the result gets to make about it. Nothing pays out and nothing redeems.

The curves

Separate money

Each coin holds its own ETH reserve behind a constant-product curve with virtual reserves. Buying one side adds nothing to the other and can never spend it. That separation is what keeps the losing coin tradeable after the whistle.

The split is the read

Divide one side's reserve by the two together and you have the market's view of the fixture. It comes out of buying and selling. No bookmaker posts it, and nobody is on the other end of it.

The bar and the pool

Raise the target and the curve closes. Unsold supply burns, the whole reserve goes into a full-range Uniswap v4 pool against native ETH, and the position is minted to the curve with no code path that removes it. Trading continues there.

Priced before the first buy

Every launch graduates on the same bar and seeds the pool with the same held-back supply, so the opening price is known in advance. The pool is created in the launch transaction at that price, closing the usual window for creating it first at a worse one.

Settlement

Every trade
1.00%
The pot
0.50%
The creator
0.30%
The protocol
0.20%

Home wins

The pot buys the home coin and burns what it buys. On a curve that lifts the reserve and pushes the coin toward its pool; on an open pool it is a swap. Supply falls either way.

Away wins

Same thing in the other direction. Every trade the home side's holders made ends up buying the away coin back.

Draw, void, abandoned

Neither team won, so the pot splits down the middle and burns on both coins. A cancelled or postponed match settles as a void and does the same.

And then it keeps going

Settling reads the oracle once and latches the answer. Trading does not stop, the pot goes on filling from both coins, and anyone can flush it into the same winner again. A fixture people still trade a year later is still burning the winner's supply.

The oracle

Post a result, put up a bond

A football score does not arrive on chain by itself. Anyone can post one after kick-off against a bond. Let the challenge window run out unchallenged and the answer stands with the bond returned. Challenge it and you match the bond, an arbiter rules, and whoever was right takes both.

What the arbiter reaches

Only a question somebody has actually challenged, only once, and only for a fixture a market registered before the match. Curves, reserves, pools, coins and pots are all outside its reach. Settled questions are frozen, and giving up the role leaves every unchallenged question answerable by anyone.

One market per real match

The fixture key is a hash of the data provider's event id, so two people cannot open the same game, and the oracle is always answering about one specific event on one specific date.

Postponements

A match that has not been played has no score. The honest answer is void, which splits the pot between the two coins and leaves both trading.