Rewards are calculated based on each users share of the total amount staked at any given time. eg. if a users stake comprises 20% (200 out of 1000) of the total staking pool, then they are entitled to 20% of the rewards, and accrue 20% of the rewards paid out every second.

The total rewards are paid to stakers at a rate equivalent to:
total rewards / time remaining
eg. a staking pool has 1,000 rewardTokens, and runs for 10 days, the reward rate would be 100 rewardTokens per day (1,000÷10), or 0.0011574074 rewardTokens per second (1,000÷864000).

As more users enter or exit the pool, the share of the rewards accruing to each user will change proportionally.