Каждый раз, когда происходит транзакция, изменяющая состояние, мы смотрим, сколько прошло блоков, умножаем это на вознаграждение за блок, а затем делим на общее количество поставленных средств. Это и есть сумма вознаграждения, накопленная токеном за этот промежуток времени.
Затем мы добавляем это значение в глобальный аккумулятор, который в начале был равен нулю. Если мы будем повторять этот процесс каждый раз, когда вызывается транзакция, мы узнаем, сколько один токен накопил вознаграждений с начала времени.
На скрине вы можете видеть пример подобный графику из предыдущего поста с добавленным аккумулятором.
А вот таблица с теми же значениями:
| Block | Rewards issued/block | Supply of staked tokens | Reward token/block |Number of blocks in interval | Rewards issued in interval | Accum. reward/token |
| :-——------- | :----————----------: | --——------------------: | ---———-----------: |---———---------------------: |---———--------------------: |---———-------------: |
| block 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| block 1-5 | 1000 | 100 | 10 | 5 | 50 | 50 |
| block 6-13 | 1000 | 200 | 5 | 8 | 40 | 90 |
| block 14-15 | 1000 | 100 | 10 | 2 | 20 | 110 |
| block 16-20 | 1000 | 500 | 2 | 5 | 10 | 120 |
То есть за один токен, поставленный на протяжении всего нашего сюжета, было накоплено 120 вознаграждений.
На следующей неделе поговорим уже более детально про сами контракты и приведем примеры.
#Sushiswap #MasterChef #staking