конкретно в том контракте он accSushiPerShare. Сорян. Просто я их уже несколько штук видел, название токена посредине все меняют на свой лад...
Фактически, пометка о том, "по куда" юзер забрал свою награду (дивиденды) делается вот здесь: user.rewardDebt = user.amount.mul(pool.accSushiPerShare).div(1e12); следующий раз, когда он будет забирать токены, это значение будет отниматься: uint256 pending = user.amount.mul(pool.accSushiPerShare).div(1e12).sub(user.rewardDebt); рекомендую сделать тестовый пример в табличке в екселе с параметрами контракта (одного пула и 2 юзеров, допустим), и расписать (по коду), как они меняются при транзакциях. так будет понятнее.
Чтобы решить задачу распределения дивидендов 1 транзой для ERC-20, можно адаптировать подход фармилки MasterChef (0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd) Там используется мультипликатор accPerShare, который показывает накопление дохода в расчете на 1 акцию. Распределение дохода = пересчитать и увеличить accPerShare. Проблемы с mint и burn акций там тоже решены и сопровождаются выплатой купонного дохода. В общем, я такую задачу вполне успешно решил на базе подхода вышеуказанного контракта.
конкретно в том контракте он accSushiPerShare. Сорян. Просто я их уже несколько штук видел, название токена посредине все меняют на свой лад...
Фактически, пометка о том, "по куда" юзер забрал свою награду (дивиденды) делается вот здесь:
user.rewardDebt = user.amount.mul(pool.accSushiPerShare).div(1e12);
следующий раз, когда он будет забирать токены, это значение будет отниматься:
uint256 pending = user.amount.mul(pool.accSushiPerShare).div(1e12).sub(user.rewardDebt);
рекомендую сделать тестовый пример в табличке в екселе с параметрами контракта (одного пула и 2 юзеров, допустим), и расписать (по коду), как они меняются при транзакциях. так будет понятнее.Чтобы решить задачу распределения дивидендов 1 транзой для ERC-20, можно адаптировать подход фармилки MasterChef (0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd) Там используется мультипликатор accPerShare, который показывает накопление дохода в расчете на 1 акцию. Распределение дохода = пересчитать и увеличить accPerShare. Проблемы с mint и burn акций там тоже решены и сопровождаются выплатой купонного дохода. В общем, я такую задачу вполне успешно решил на базе подхода вышеуказанного контракта.