The Reward Accumulator
Every tax payment and buyout fee flows to tile holders, proportional to their deposit.
The Accumulator
How reward distribution is tracked on-chain.
Each grid has a single shared reward accumulator — a 128-bit fixed-point number stored in GridState. When fees enter the vault (Harberger tax or buyout fees), the accumulator bumps up proportionally. Each tile tracks its own reward_debt — the accumulator snapshot at the time it last claimed or joined. The difference between current accumulator and reward_debt is your claimable amount.
Each grid has its own accumulator. Rewards from Grid A stay in Grid A's vault and are only claimable by Grid A tile holders.
A holder with 0.20 SOL deposit earns 4× more than one with 0.05 SOL deposit in the same grid, regardless of tile price or seat index.
SOL doesn't move until you call claim_reward. It accumulates passively — no need to check constantly or worry about expiry.
Tax Distribution
Where Harberger tax goes when it's collected.
Harberger tax is deducted from a tile's deposit continuously (5% per month on listed price). The deducted SOL doesn't leave the vault — it stays in place and is credited to the reward accumulator, redistributing value from tile holders to all tile holders proportionally.
Deposit Weights
Your deposit determines your reward share.
Rewards are distributed proportionally to deposit size — not tile count, not listed price. The most efficient way to maximise rewards is to hold a large deposit relative to the grid's total deposited amount.
Any time you top up your deposit, your reward_debt is reset so your new weight applies going forward.
As Harberger tax drains your deposit, your share of the accumulator shrinks. Holders who top up regularly maintain stronger reward positions.
When a buyout occurs, the new holder's reward_debt is set to the current accumulator × their deposit. They earn from fees after they join, not retroactively.
Claiming Rewards
When and how to withdraw your accumulated SOL.
You can claim your pending rewards any time while you hold a tile. Claiming calls the claim_reward instruction, which computes your pending amount, transfers it from the vault to your wallet, and resets your reward debt to the current accumulator value.
Claiming rewards doesn't change your listed price, deposit level, or tax runway. It only transfers the accumulated SOL to your wallet.
Unclaimed rewards stay in the accumulator if you abandon your tile — they redistribute to remaining holders. Always claim before abandoning.
When you are bought out, unclaimed rewards are NOT automatically paid out to you. Claim separately before or after if needed.
