A Croom price is not quoted by anyone. It is computed from a public randomness beacon that signs a new value every three seconds — so nobody can influence a tick, nobody can see one before it exists, and anyone can recompute the entire history from public data.
Not even the person who created the market.
The price process is fixed at creation and driven by randomness no party controls. A Room's identity is the hash of its parameters, so changing one makes a different Room rather than an edited one.
No treasury. No liquidity pool to drain. No mint function, no owner keys, no pause. There is nothing to pull, because there is nothing held.
A Room does not go to zero and does not stop. The beacon ticks every three seconds, and the price follows it — whether or not anybody is watching.
Because a Croom price is a deterministic function of public data, the chain does not need to be told one. It can be shown one, with proof, by whoever needs it. So the chain stores commitments and a game that anyone can win if a commitment is wrong.
A beacon round is verified on chain with a single pairing check, raising a monotone proven floor: the highest round shown to exist. Never a timestamp — a clock is an estimate of when a round existed, and the floor is a proof that it does.
Anyone opens a Room by submitting a spec. The chain keeps the hash and emits the body. Immutability is structural, not promised: there is no field an administrator could change, because the identifier is the content.
A poster commits a batch of prices as one 32-byte root, publishes every value, and puts up a bond. Anyone who can show the batch is wrong takes that bond — in one transaction, with no stake of their own.
Stake on a direction. Entry closes before the randomness that decides the outcome exists. Participants face each other, the fee is one published percent, and the protocol never takes a side.
A checkpoint was posted whose price at one round was wrong by a single unit — 10-18 of a price, the smallest lie the encoding can express. A second address, told nothing, re-derived the batch from the public beacon, found the value that does not follow, and proved it.
| Dishonest checkpoint posted | 0xfbdb3101… |
| Disproved, bond forfeited | 0x35b60b28… |
| Result | rejected |
Two accounts staked opposite sides of a window, and settlement was shown the opening and closing prices with Merkle paths into a batch the ladder had already finalised. No oracle was asked. A batch still inside its challenge window is refused outright, so a payout cannot rest on a number the fraud proof might still overturn.
| Settled against two proven prices | 0xb747af55… |
| Winner paid out | 0x533c173d… |
| Staked 0.02, received | 0.0495 MON |
The 1% rake was credited to the Room's creator rather than sent — a creator whose address reverts on receipt must not be able to freeze everybody else's settlement. One market, two accounts, five hundredths of a MON. The mechanism is proven; the volume is nothing.
Round 21,173,055 was proven on Monad and the contract emitted this randomness. Reproduce it from the public beacon without asking us for anything:
curl -s https://api.drand.sh/v2/chains/04f1e906…/rounds/21173055 \
| python3 -c 'import sys,json,hashlib; print(hashlib.sha256(bytes.fromhex(json.load(sys.stdin)["signature"])).hexdigest())'
0x0a53345742bad1bdfc2064519f95dfe41bd3044ca9f64d8ed4cbef0c27a6f3e4
How a global lottery, a bit of school algebra and one stubborn rule about rounding add up to a market that cannot be fixed. No code, no jargon.
TechnicalWe replaced an interactive bisection game with a one-shot disproof, kept the completeness argument, and removed the thing that made its premise true.