Based on feedback from our active and engaged community, Parsl is changing the way we calculate rewards for participants in our RewardDrop. We will make the system more transparent, primarily by utilising a staking smart contract instead of taking unannounced snapshots of SEED token holdings. We will then be able to produce an accurate picture of an account’s SEED holding over the entire RewardDrop period, rather than a single point measure that comes from taking snapshots.
The following describes how we will do the calculation, which will be fully transparent and verifiable by anyone who chooses to do so.
Initially, all account staking balances are 0.
When an account moves tokens into the staking contract (or removes them), a delta is created. The delta is time stamped and exported to a standard (EG. SQL) database.
The list of deltas is shown on the rewarddrop website, so they can be verified by the public, and so they can also be used for calculation purposes by the public. We provide all the data so that our numbers can be checked.
Our RewardDrop backend will then calculate a user’s average staking balance for the month in question. Once the average balance for every user has been calculated, the rewards for each user can then be calculated (obviously we need to include the RewardDrop task completion percentage as well), and they are then published on the RewardDrop Leaderboard.
Below is a guide that allows anyone to calculate the average SEED holding for any account, at any time.
We are considering the calculations for a particular RewardDrop period, we call RDP. It begins at a time t = T0 and finishes at a time t = TF.
We will now proceed to calculate the average balance of EOS accounts up to anytime, t.
Between T0 and t, there will be N number of deltas, labelled Δ1 to ΔN.
For example, if the first delta, Δ1, n was the result of account A putting 100 SEED tokens into the staking contract at 10am on the 5th January,
Note: The notation A1 means the change in balance for account A in Δ1
Depending on N, we use a different formula, as follows;
if N = 0
if N = 1
if N = 2
if N ≥ 2