TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.48K subscribers
Post #1103 886
Алгоритм стейкинга в Sushiswap MasterChef и Synthetix. Часть 6

В последний месяц наблюдаю забавную тенденцию на канале: количество участников постоянно меняется в пределах 6:-6, т.е. приходят несколько человек, потом несколько уходят после новых постов. Сложилось такое ощущение, что многие заходят на канал в поисках чего-то простого по изучению Solidity, потом видят посты по расчеты в DeFi и такие: "Да ну нахер..." и уходят.

За все время существования канала, я старался никогда не повторяться с темами и постоянно выкладывать что-то новое. Ну, и к сегодняшнему моменту мы добрались до достаточно сложных тем.

Тем не менее, я подумаю, как можно сделать посты более "дружелюбными" для новичков и может выделить разборы DeFi в отдельный бесплатный канал.

А пока что, на этой неделе мы закончим читать статью про Sushiswap MasterChef и Synthetix, и для начала разберем небольшой пример, чтобы вспомнить посты с прошлой недели.

Мы снова выдаем по 1 000 Rewards за блок. За 20 блоков будет выдано 20 000 вознаграждений.

Вот что делают Алиса и Боб:

- Алиса сделала депозит 100 жетонов с блока 1 по блок 20.
- В блоке 10 Боб делает депозит 100 жетонов.
- В блоке 20 Алиса должна получить 75 % от всех вознаграждений, выданных до этого момента, или 15 000 вознаграждений.

Визуально доля пула ставок на блок будет выглядеть как на скрине выше.

С блока 1 по блок 10 награда за токен в блоке составляла 10 (1 000 ÷ 100). За этот интервал в 10 блоков каждый токен накапливал 100 Rewards (10 вознаграждений за токен в блоке x 10 блоков).

Но когда Боб пополнил счет в блоке 10, награда за токен в блоке уменьшилась до 5 (1 000 ÷ 200). За следующий интервал в 10 блоков (блоки с 11 по 20) каждый токен накопил 50 Rewards.

Таким образом, общая стоимость, накопленная токеном с блока 1 по блок 10, равна 100, а стоимость, накопленная с 11 по 20, равна 50. Таким образом, общая стоимость накопленного токена равна 100 + 50 = 150.

Поскольку Алиса положила на счет 100 токенов, а каждый токен накопил 150 вознаграждений, ей будет выдано 15 000 вознаграждений, что действительно составляет 75 % от общего количества выданных вознаграждений.

Но что, если ни кто не делал депозиты с самого начала?

Очевидный исключительный случай в приведенном выше примере заключается в том, что если бы Боб потребовал вознаграждение, то он также получил бы 15 000, потому что его ставка в блоке 20 равна 100, как и у Алисы.

Чтобы решить эту проблему, мы хотим, чтобы аккумулятор начинал считать для Боба только в тот момент, когда Боб сделал депозит.

Интуитивное решение состоит в том, чтобы хранить номер блока, в котором Боб сделал депозит, и скорректировать его позже.

Однако еще проще рассчитать сумму вознаграждений, которую он получил бы при пополнении счета в блоке 10, а затем сразу же потребовал вознаграждение. Например, в блоке 10 накопленное вознаграждение за токен составляло 100. Поскольку Боб положил на счет 100 жетонов, теоретически он мог бы сразу получить 10 000 Rewards.

Для того, чтобы этого не произошло, у нас есть переменная для Боба, которую мы называем «долг награды» (“reward debt”).

В тот момент, когда он вносит депозит, мы устанавливаем reward debt равным балансу депозита, умноженному на накопитель вознаграждения за токены. Это не позволит ему сразу же получить награду, поскольку в этот момент причитающееся ему вознаграждение будет равно нулю (текущее вознаграждение минус долг вознаграждения).

Мы создали для Боба отдельную переменную под названием «долг вознаграждения» и присвоили ей эту гипотетическую сумму вознаграждения. В блоке 10 накопленное вознаграждение за токен составляло 100, и депозит Боба был 100, поэтому его долг по вознаграждению составляет 10 000.

Если Боб потребует вознаграждение в блоке 20, мы вычтем вознаграждение в 15 000 из суммы долга в 10 000. Боб сможет получить только 5 000 Rewards в блоке 20.

Это может быть слегка сложно читать, поэтому рекомендую смотреть на скрины выше и размечать движение токенов, чтобы понимать суть работы вознаграждений.

Дальше мы поговорим про MasterChef.

#Sushiswap #MasterChef #staking
  • ❤ 3
  • 🔥 3
More from @solidityset
  1. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  2. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
  3. Sep 14, 2026Графы повсюду Если вы также следите за новостями в мире ИИ, то наверняка уже все чаще встр…
  4. Sep 10, 2026GTA6, Cyberleek, блокчейн и безопасность Увидел несколько постов (тут и тут) про Cyberleek…
  5. Sep 9, 2026Работа с чистой энергией Дисклеймер Сегодня ава и название канала, наконец, поменялись. Я…
  6. Sep 9, 2026Channel name was changed to «Из Solidity в AI и дальше»
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →