How it works
Open, draw, pay: one signature for the user, odds on-chain before the draw.
Try it on devnet
The demos at app.fade.finance, with test USDC from the faucet.
Quickstart
Open a wager from TypeScript and have it settled.
Provide liquidity
Deposit USDC and become the other side of every payout.
Why fixed odds need a pool
A raffle among participants (“one buyer in a hundred wins the pot”) only needs a random draw. Any VRF can run it, and Fade adds nothing there. A fixed-odds promise (“every order has a 1 in 101 chance to be free”) is different. It must pay if only one person plays that day, and it must pay if three people win in a row. That takes capital that carries the variance. Fade is that capital, as a public protocol: one pool that every app can draw on, with rules every party can check on-chain.The three roles
Anyone can also move a wager or an epoch forward and be paid a flat, prepaid fee for it. Those parties are called crankers or keepers.
Apps
An app is whoever signsopen_wager: a program calling over cross-program invocation (CPI), a server, or a wallet. That signature is its whole identity. There is no allowlist and no registration: the app’s on-chain record is created by its first wager. The app chooses the stake, the paytable (up to 32 outcomes, each a probability and a multiplier), its own fee and the account the payout goes to.
Users
Users see the app, not Fade. When the stake comes from the user’s own wallet, the user signs once and the USDC moves inside the same instruction. When the app funds the stake (a merchant promotion, a platform paying out of its fees), the user signs nothing for the payout and simply receives it. In both cases the full paytable is stored in the wager account before the randomness exists, so anyone can check the real odds in an explorer.Liquidity providers
Liquidity providers deposit USDC and receive transferable SPL shares. Every paytable must leave the pool an edge, checked in exact integer arithmetic before any money moves, so the pool earns on average. Any single epoch can end up or down. Deposits and withdrawals are priced together at each epoch’s close, at one price for everyone.What the protocol guarantees
- Odds before the draw. A paytable whose expected return exceeds
1 − edgeis refused before a token moves. The paytable, the edge and the fee split are frozen into the wager at open. - Refused early, paid in full. A wager whose worst case does not fit the pool’s caps is refused at open. A wager that was accepted is paid in full; Fade never trims a payout.
- Randomness bound after the bet. The oracle seed is derived from a block hash that did not exist when the wager opened.
- Settlement is permissionless. Anyone can request the randomness and settle. No pause can block a settlement.
Prize-linked payouts are subject to local gaming and promotion law. Whether a given product is a promotion, a lottery or a game depends on who funds the stake and on the jurisdiction. Apps that build on Fade are responsible for the rules that apply to their users.