The Reward Accumulator
Every buyout fee and injected SOL flows to tile holders, split equally per tile.
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 the 1% pool fee enters the vault on a buyout, the accumulator increments proportionally by the fee divided by the number of occupied tiles. Each tile tracks its own reward_debt — the accumulator snapshot at the time it was last acquired or claimed. The difference between the 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.
Every occupied tile in a grid earns the same share of the pool fee. A holder with 3 tiles earns 3× the rewards of a holder with 1 tile, regardless of price.
SOL doesn't move until you call claim_reward. It accumulates passively — no need to check constantly or worry about expiry.
What Feeds the Pool
Where the reward SOL comes from.
Two sources feed the reward accumulator: the automatic 1% pool fee on every transaction, and manual injections via inject_rewards. There is no ongoing tax or deposit drain — rewards only enter the pool when economic activity happens.
inject_rewards
Manually seeding the pool with SOL.
Anyone — creators, partners, whales — can call inject_rewards to send SOL directly into a grid's reward accumulator. If tiles are currently held, the SOL is distributed to the accumulator immediately. If no tiles have been claimed yet, it parks in a pending_seed balance and is flushed to the accumulator when the first tile is claimed.
Inject SOL to reward holders during token launches, community milestones, or token buyback events.
New grids have no buyout history yet. Injecting rewards early makes tiles immediately attractive to claim.
Not limited to the creator — partners, whales, or protocols can inject rewards into any grid.
Before any tiles are claimed, the creator can reclaim injected SOL via withdraw_seed. Once the first tile is claimed the pending_seed flushes to the accumulator and can no longer be withdrawn.
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, multiplier, or tile ownership. It only transfers the accumulated SOL to your wallet and resets your reward_debt.
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 — your reward_debt is reset at buyout time.
