Overview
Checkmates (pieces) and Chessboards (boards) are two NFT collections on Ink. Staking pieces on a board opens a Position, which earns token rewards and a share of trading fees in ETH. Rules are enforced by non-upgradeable contracts; the numbers below are constants in those contracts unless marked configurable. For the story version, read the lore.
Examples
The rules below are exact. These are the same rules with real numbers, using three players.
Building a Position
A Position is one Chessboard with your Checkmates standing on it. You don't need a King: two Pawns are enough to start.
| Player | What they stake | Score |
|---|---|---|
| Sam | 2 Pawns on a Common board | 208 |
| Mia | 8 pieces with a King and a Queen, one of them on a glowing square, Rare board (×1.1) | 1,024 × 1.25 × 1.25 × 1.1 = 1,760 |
| Leo | A full set of 16, each piece on its own square, the King on one of the board's glowing squares, Epic board (×1.15) | 2,560 × 2.5 × 1.25 × 1.15 = 9,200 |
Leo's score is 44 times Sam's, and the day's tokens are shared by score, so Leo earns 44 times more. Three things make the difference: more pieces (each one adds more than the last), the right mix (a King unlocks the set bonuses, and only 174 exist) and a piece on a glowing square (×1.25). The very best board (×1.375) takes a full set to about 11,000.
A week of Moves
Every day you can make one Move with a piece you have staked. It burns a few tokens and puts you in this week's pot. Your Move's weight = your score × the piece's weight × your streak bonus.
| Day | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| Streak bonus | +0% | +5% | +10% | +15% | +20% | +25% | +30% |
Mia moves her Queen (×1.35) every day: 1,760 × 1.35 = 2,376 weight on day 1, a bit more each day after, about 19,100 for the week. Sam moves a Pawn (×1) every day: about 1,670. If they were the only two players, Mia would get 92% of the week's pot and Sam 8%. Miss a day and the streak starts again from +0%.
When the week ends, each of them claims their share (ETH and tokens) within 30 days. They have to still be staked when they claim: unstaking first gives up the share, and it goes into a later pot for the players who stayed.
Collections
Checkmates: 3,200 pieces. Traits used on-chain: Piece (type) and Square, proven with a Merkle proof built from the final metadata.
Chessboards: 1,024 boards, minted on OpenSea. Each has 1–5 positions: a home square plus up to four more. The home square follows the board number: #1 is a1, #2 b1, … #64 h8, then it starts again, so every square has 16 boards. Staking reads the same rule on-chain.
| Move (stage) | Who | Price | Limit | Length |
|---|---|---|---|---|
| Treasury | Project wallet | free | 64 boards, given back to the community as rewards | 15 min |
| 1 | Checkmates holders (snapshot 4 Nov) | 0.0015 ETH | 1 per wallet | 3 h (17:00–20:00 UTC) |
| 2 | Holders who missed Move 1 | 0.0015 ETH | their 1 | 2 h (20:00–22:00 UTC) |
| Public | Everyone, no list | 0.0015 ETH | 10 per wallet | from 22:00 UTC, until sold out |
| Mint ETH goes to | Share |
|---|---|
| Starting liquidity of the token pool (added in one go at launch, locked) | 75% |
| OpenSea (drop fee) | 10% |
| Treasury (marketing, partnerships, growing the pool) | 10% |
| Dev | 5% |
| Board rarity | Positions | Share | Multiplier |
|---|---|---|---|
| Common | 1 | 40% | 1.0× |
| Uncommon | 2 | 30% | 1.05× |
| Rare | 3 | 15% | 1.1× |
| Epic | 4 | 10% | 1.15× |
| Legendary | 5 | 5% | 1.25× |
Palette rarity multiplies further: Common 1.0×, Uncommon 1.02×, Rare 1.05×, Gilded 1.1×. Board multiplier range: 1.0×–1.375×.
Positions & score
A Position = 1 board + 1–16 pieces, at most one piece per square. Score:
score = tierWeight × composition × perfectMatch × boardMultiplier tierWeight(n) = 100n + 4n(n − 1) // each extra piece adds more than the last
| Pieces | 1 | 2 | 4 | 8 | 12 | 16 |
|---|---|---|---|---|---|---|
| Tier weight | 100 | 208 | 448 | 1,024 | 1,728 | 2,560 |
Because every extra piece is worth more than the one before, putting your pieces into one Position always scores more than splitting them across several boards.
| Composition (highest only) | Requires | Bonus |
|---|---|---|
| King + Queen | a King and a Queen | ×1.25 |
| Army | all six piece types | ×1.5 |
| Full Set | exactly 8 P, 2 N, 2 B, 2 R, 1 Q, 1 K | ×2.5 |
Perfect Match ×1.25: any staked piece whose Square is one of the board's positions. Positions are non-transferable; the contract holds the NFTs while staked.
Rewards
Token emissions: 16% of supply streamed linearly over 3 years to Positions, shared pro-rata by score. The contract can never owe more than it holds.
| Rule | Value |
|---|---|
| Cycle | 30 days, counted from each Position's own stake time (no global claim day) |
| Claimable at the end of a cycle | 30% of that cycle's earnings |
| Bonus | 70%, unlocking in 6 equal monthly slices over the next 6 cycles |
| Unstake early | Locked bonus + current cycle are forfeited and redistributed to remaining Positions |
| Minimum hold | 24 hours before a Position can claim. Moves are open right away (a set that already played today in another Position, or has a pass running, waits until that ends) |
| Castle | Lock tokens into a Position for up to +50% score (full at 1,000 per point of base score). Returned on unstake; leaving within 30 days of a lock-in burns 20% |
| After emissions end | Anyone can call burnUndistributed(): unearned emissions are burned |
The token
ERC-20, 1,000,000,000 fixed supply, burnable, no mint function. It launches after the Chessboards sell-out. No token exists yet: the only contract will be posted here and by @checkmates3200 on X.
| Bucket | % | Enforced by |
|---|---|---|
| Initial liquidity | 24 | Added and locked when the pool is created |
| Liquidity reserve | 13 | Paired with incoming ETH (0.5% of every trade + launch-tax share) and locked in the pool; never sold or withdrawn |
| Airdrop | 15 | AirdropStream |
| Airdrop Patient bonus | 5 | Covers everyone choosing Patient; unused part burned |
| Emissions | 23 | 3 years: Positions 16%, weekly pots 5%, token lock 2%; leftovers burned |
| Treasury | 10 | 2% at launch, 8% vested over 24 months, to the Safe |
| Partners | 5 | 1% at launch, 4% vested over 24 months, to the Safe |
| Team | 5 | Vesting: 12-month cliff, then linear |
Trading & fees
One ETH/token Uniswap v4 pool. All fees are taken in ETH by the hook; the pool's own LP fee is 0%. Exact-input swaps only. No discounts: every route pays the same fee.
| Buy | Sell | |
|---|---|---|
| Normal | 3% | 3% |
| Snapshot holders, holder window | 0% | 3% |
| Dip mode (price stays below half its 7-day average) | 0.5% | 3% |
| Hard caps (immutable) | 3% | 4% |
| Every fee goes to | Share |
|---|---|
| Weekly + monthly pots (players) | half of the fee |
| Liquidity reserve (locked in the pool) | 0.5% of the trade |
| Dev | 0.25% of the trade |
| Treasury (marketing, partnerships, buybacks) | the rest (0.75% at 3%) |
Launch: a holder-only window where Checkmates and Chessboards holders from the snapshot buy at 0% (per-wallet cap), then a 10-minute launch tax for everyone else, starting at 60% and dropping 5 points a minute to 15%, and a max buy of 0.05 ETH per transaction for the first 30 minutes. Launch-tax premium: 50% liquidity reserve, 50% treasury.
Dip mode (automatic): when the 1-hour average price is below half of the 7-day average, buys pay 0.5% until it is back above 60%. Averages count how long each price held, so a dump can't switch it on instantly: the price has to stay down for hours.
Moves & pots
| Move | Needs staked | Pot weight | Price |
|---|---|---|---|
| Pawn | a Pawn | ×1.00 | ×1.00 |
| Knight / Bishop | that piece | ×1.10 | ×1.05 |
| Rook | a Rook | ×1.20 | ×1.10 |
| Queen | a Queen | ×1.35 | ×1.20 |
| King | a King | ×1.50 | ×1.30 |
One Move per wallet per day, with a piece you have staked, from the moment it's staked. A set of NFTs plays once a day: one that already played today in another Position waits until the day ends (or until its pass ends); up to 2 extra Moves a day at 2× and 4× the price. Price scales with staked score (about $0.10 to $1 for a week of daily Moves), paid in tokens (burned) or ETH (bought and burned). Weight = staked score × piece weight × streak bonus (+5% per day in a row, up to +30%).
Weekly pot: a third of the pots' ETH plus a weekly token release, split by Move weight. Monthly pot: two thirds of the pots' ETH, for wallets with a Move in each of the 4 weeks, split by their lowest weekly weight. Monthly pass: 28 daily Moves for 28 Moves + 10%. Shares can be claimed for 30 days, then roll into the next pot; unstaking before claiming cancels the share. A claim counts Positions held at least 24 hours: if newer ones would cover the whole share, the claim waits for them (always leaving a day to claim) instead of paying less.
Token lock
Lock tokens for 16, 32, 64 or 128 days (no NFTs needed). Weight = amount × days ÷ 128. Lockers share 2% of supply over 3 years, a fixed amount per day, from the day after locking until the last day. No early exit; days nobody is locked are burned.
Airdrop
| Who | Amount |
|---|---|
| Every Checkmates holder wallet in the 4 Nov snapshot | 80,000 tokens, one per wallet however many you hold |
| Every Chessboard held at the snapshot after the sell-out | 100,000 tokens per board |
The airdrop belongs to the wallet, not the NFT: sell a board after the snapshot and your airdrop keeps streaming to you.
| Path | Unlocks |
|---|---|
| Normal | 5% at start, the rest linearly over 180 days |
| Patient (choose before claiming) | Nothing until day 30, then allocation + ⅓ linearly over days 30–180 (same end day as Normal) |
Claims stay open for 365 days, after which anyone can burn what is left.
Governance & security
| Role | Can | Cannot |
|---|---|---|
| Owner = 48 h timelock (Safe proposes & executes) | Change configurable settings within the hard caps (e.g. raise fees up to the caps) | Exceed caps, change reward rules, move users' NFTs or tokens |
| Guardian = Safe (instant) | Lower fees, add liquidity within a price band (anyone can add it near the average price) | Raise anything, withdraw liquidity |
No upgradeable proxies. Reward rules (cycle, 30/70 split, slices, tier weights) are constants. The liquidity reserve has no withdraw or remove function. Randomized invariant tests replay thousands of random actions and check token and ETH accounting to the wei.
The live Checkmates collection uses OpenSea's transfer security registry, so the staking contract must be added to the collection's operator list by its owner before staking opens.
Contracts & ABIs
Contract addresses, verified source code and ABIs are published here at launch.