Pull to refresh
1
0
Send message
  1. конкретно в том контракте он accSushiPerShare. Сорян. Просто я их уже несколько штук видел, название токена посредине все меняют на свой лад...

  2. Фактически, пометка о том, "по куда" юзер забрал свою награду (дивиденды) делается вот здесь:
    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 акций там тоже решены и сопровождаются выплатой купонного дохода. В общем, я такую задачу вполне успешно решил на базе подхода вышеуказанного контракта.

Information

Rating
Does not participate
Registered
Activity