Drafted players are held in your wallet, not on a platform’s server. League rules are frozen at creation and hashed on-chain. The champion is derived from the Week 17 result, not declared by an administrator.
Inside a league
Head-to-head matchups, a waiver wire, a trade deadline, a playoff bracket. The format is the one every manager already has in muscle memory — what changes is who can alter it afterwards.
Route 66
2-0 · proj 118.4
Fourth & Long
1-1 · proj 112.0
| Slot | Starter | Proj | Pts |
|---|---|---|---|
| QB | J. Barrow | 18.4 | 21.2 |
| RB | A. Villanueva | 14.1 | 16.8 |
| RB | D. Okonkwo | 11.7 | 9.3 |
| WR | T. Mackey | 13.2 | 17.5 |
| FLEX | R. Silva | 10.9 | — |
Why it’s different
This one doesn’t. Four things are true of a rostr league that are not true anywhere else.
01
A league’s scoring, roster, payout split, and deadlines are frozen at creation and shown in full before anyone joins. The rule set is hashed on-chain and joining is a signed transaction referencing that hash — so consent is cryptographic, not a checkbox.
No commissioner can rewrite scoring in Week 10 because their team is losing.
02
Optional per league. Everyone deposits the same amount of the same token; funds unlock only when the season resolves.
Deposits are refused until the program can pay a pot back out — the gate is the code, not a promise.
03
The contract holds the bracket, the scores, and the rules, and derives the champion from the Week 17 result. There is no sign-off step to corrupt.
04
Drafted players mint as Token-2022 NFTs held in your wallet. Trades move through an escrow with a 48-hour league veto window — they can’t be front-run on a marketplace, and they can’t be forced through by a commissioner.
How it works
Step 1
Pick a format or take the default. The rule set is hashed and written on-chain before anyone joins.
Step 2
The draft order comes from a Solana block produced after the field locks — nobody can grind it, and anyone can recompute it.
Step 3
A snake draft, then head-to-head weeks. Each pick is a signed transaction against the frozen rules.
Step 4
The champion derives from the Week 17 result. Nothing is signed off, because there is nothing to sign off.
Format
Every value below is frozen when a league is created. The complete rule set lives in docs/RULES.md.
| Scoring | Full PPR. 4pt passing TD, 6pt rushing/receiving TD, 1pt per 25 passing yards, 1pt per 10 rushing/receiving yards, −2 per interception and lost fumble. |
|---|---|
| Teams | 12 teams, minimum 2 humans, bots fill the rest. |
| Draft | Snake draft, fast (90s minimum) or slow (up to 24h per pick). |
| Season | Weeks 1–14 regular season, 15–17 playoffs, championship Week 17. Week 18 is excluded — NFL starters rest once seeding is settled. |
| Matchups | Head-to-head weekly. Schedule luck is retained deliberately. |
| Waivers | Rolling priority. Win a claim, go to the back of the order. |
| Consolation | The consolation bracket is played, so eliminated teams still have something to play for. This is the anti-abandonment mechanism — punishment doesn't work on someone already guaranteed nothing. |
Multi-sport
Football ships first, but the schema does not know what football is. Sports are data — a registry of stat keys, positions, and lineup slots — never structure or code branches.
Adding a sport should insert rows and write one provider adapter, with no migration and no change to scoring, drafting, trading, or settlement.
Free leagues are open now. Create one, invite eleven people, and the rules you agree on are the rules the season runs on.
Open source under MIT. Every rule this page describes is in the repository.
Pre-alpha, targeting the 2026 season. The escrow program is not audited.