How are POLIS locking rewards calculated?

Reward amounts follow a set emissions schedule and are proportionally distributed based on a user's share of total voting power.

A total of 127,800,000 POLIS tokens have been set aside for POLIS staking rewards to be distributed daily over eight years. The first period was August 1, 2022. Rewards are distributed after midnight based on a user's share of the total POLIS Voting Power (PVP) for the previous day. 

These emissions started at 51,121.27 POLIS tokens, distributed on August 2, 2022, and will end on August 1, 2030 with the final 31006.62 POLIS tokens being awarded. The full rewards schedule can be found here.

Rewards for each account are calculated by taking a wallet's pro-rata share of the total PVP for the period and multiplying it by the rewards distribution for a period: User Rewards = (User's PVP / Total PVP) * Daily Emissions.  For example, suppose that the rewards distribution for the day is 50,000 POLIS and there is currently 1,000,000 total PVP in the DAO. Alice has 1000 POLIS with one year remaining on her lock, which gives her 2000 PVP. Therefore, Alice's rewards for the day can be calculated as (2,000/1,000,000) * 50,000 or 100 POLIS tokens.

The POLIS Locker Manager page currently shows the estimated payout value for the next period on the Rewards Over Time chart. This value is accurate at the time displayed, but values may be lower based on additional locks or refreshes performed before the next rewards drop. 

Both the rewards distribution values and historical PVP values are recorded on-chain. A snapshot program is used to calculate and record user escrow and global locker PVP shares. Each time a new lock or refresh operation is performed, the PVP value for the locker is synced to the snapshots. Since PVP is a linear function of stake amount and time to unlock, values for each period between lock and locker expiration can be calculated. One type of snapshot account, called 'escrow history', stores the individual locker PVP values and is unique to each wallet address. The other snapshot account is called 'locker history' and stores the global PVP values for all POLIS locked in the DAO. The sync function that updates the individual escrow histories and locker history only modifies periods that have not yet started. Periods roll over at midnight GMT.