← All articles
On-chain#fairness#math

What the house edge actually is on a provably fair game

Verifiable does not mean free. Here is what the edge is, where it lives in the contract, and how to read it yourself.

The Lemon Jet mascot lifting one thin wedge out of a gold disc on a workbench beside a balance scale

"Provably fair" and "no house edge" are two different claims, and only one of them is true about Lemon Jet. Conflating them is the single most common misreading of on-chain games, so it is worth separating carefully.

Two independent questions

When you place a prediction, two things determine what happens to your money.

The first is whether the random number was honest. That question is settled by Chainlink VRF: the contract verifies a cryptographic proof before it accepts a value, so the number cannot have been chosen to hurt you. This is what "provably fair" means, and it is fully verifiable by anyone.

The second is what the payout schedule looks like. If you pick a multiplier, the contract has to decide how often that multiplier should win in order for the game to remain solvent. That relationship — win probability against payout — is the house edge. It is a design parameter, not a property of the randomness.

A game can have honest randomness and an edge. A game can also have a dishonest generator and advertise no edge at all. The two axes are independent, and only the first one is something cryptography can answer.

Where the edge lives

The edge is not applied by a server, and it is not adjusted per player. It is arithmetic inside the settlement function: given a requested multiplier, the contract computes the threshold the random value must clear, and that threshold is set slightly tighter than the break-even point.

This has two consequences worth stating plainly.

It is public. The exact parameters are readable in the deployed contract on BaseScan, which is linked from every post on this blog. You do not need us to tell you what the edge is; you can read it. If a number in our interface ever disagreed with the number in the contract, the contract is the one that decides what happens to your funds.

It is fixed at deployment. Because the computation is on-chain, it cannot be changed for a particular wallet, a particular session, or a losing streak. A game running on a private server can quietly widen its margin when it does not like the week it is having. A deployed contract cannot do that without a transaction anyone can see.

Why an edge exists at all

Someone has to be on the other side of your prediction, and that side needs capital to pay out when you win. Over a large number of rounds, the edge is what funds that capital and keeps the game able to settle.

Remove it and the game is not generous, it is insolvent — it pays out early players with later players' deposits until it cannot. That failure mode has a long history and it is not one worth repeating with better cryptography attached.

What this means for a single round

Nothing. That is the part worth being blunt about.

The edge is a statement about a large number of rounds, not about yours. Any individual round is decided by one verified random value, and no property of the schedule tells you what that value will be. A run of wins does not mean the edge is absent, and a run of losses does not mean anything was manipulated — which, unlike on most platforms, is a claim you can check rather than take on faith.

The honest summary: the randomness is verifiable, the payout schedule is public and unfavourable by a documented margin, and both of those facts are readable on-chain. That is a narrower promise than "fair" usually implies, and it is the one we can actually keep.

Try one verifiable round
Non-custodial, on Base, resolved by Chainlink VRF.
Open dApp

KEEP READING