> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fade.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Payments are programmable. Payouts should be too. Fade is a permissionless payout layer on Solana.

**Fade lets any app attach a fixed-odds payout to a payment, a reward or a trade.** A shared USDC pool takes the other side. The odds are written on-chain before the draw, and the draw comes from ORAO's verifiable random function (VRF).

The app decides what the user is offered: "1 order in 100 is on us", "this swap might be fee-free", "turn this 2 USDC cashback into a 1 in 10 shot at 19.30 USDC". Fade supplies the guaranteed payout behind it. The app holds no prize budget, carries no variance and runs no randomness oracle.

<CardGroup cols={2}>
  <Card title="How it works" icon="diagram-project" href="/how-it-works">
    Open, draw, pay: one signature for the user, odds on-chain before the draw.
  </Card>

  <Card title="Try it on devnet" icon="flask" href="/try-it">
    The demos at app.fade.finance, with test USDC from the faucet.
  </Card>

  <Card title="Quickstart" icon="code" href="/build/quickstart">
    Open a wager from TypeScript and have it settled.
  </Card>

  <Card title="Provide liquidity" icon="vault" href="/liquidity/pool">
    Deposit USDC and become the other side of every payout.
  </Card>
</CardGroup>

## 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

| Role | Brings | Earns | Carries |
| - | - | - | - |
| **App** (integrator) | The product, the users and the paytable | 0 to 500 bps of every stake, its own choice per wager | Nothing: no capital, no deposit, no registration |
| **User** | The stake, or nothing at all when the app funds it | Whatever the paytable pays | The stake, when they fund it |
| **Liquidity provider** | USDC | The pool's share of the edge on every stake | The pool's variance |

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 signs `open_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 − edge` is 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.

<Note>
  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.
</Note>

## Where Fade runs today

The program, the pool, a public keeper and the demos run on **Solana devnet with test USDC**. Addresses and live parameters are on [Devnet addresses and parameters](/build/devnet). Where devnet parameters differ from the protocol defaults, the pages say so.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.