$BACK
Стейкинг и получение наград
Застейкайте токен и получайте долю доходов протокола в USDC. Стейкинг и вывод из стейкинга действуют сразу — без периода ожидания и без блокировки.
Стейкинг
Стейкайте из приложения с подписью кошелька; с этого момента ваш стейк участвует в каждом распределении. Ни вестинга, ни блокировки.
Приложение передаёт подписанное вами сообщение Stake релейеру, который отправляет его как stakeBySig; прямые вызовы контракта стейкинга отключены. Токен позволяет контракту стейкинга перемещать его без одобрения, поэтому отдельной транзакции одобрения нет. Сеансовый ключ не может подписывать действия со стейкингом.
Вывод из стейкинга
Выводите из стейкинга так же, с подписью кошелька (unstakeBySig). Ваши BACK сразу возвращаются в кошелёк и перестают приносить доход, а уже начисленные награды по-прежнему можно забрать. Периода ожидания нет.
Получение наград
Награды начисляются на каждый застейканный токен через глобальный аккумулятор. Забирайте их когда угодно (claimBySig): получение переводит ваши награды в USDC с баланса контракта стейкинга в Exchange на ваш, откуда их можно пустить в торговлю или вывести.
Чтобы посмотреть незабранные награды без транзакции, прочитайте pendingReward(address) в контракте стейкинга. Туда входят только уже распределённые награды.
Как приходят награды
Награды доходят до стейкеров в два шага:
- Exchange собирает долю стейкеров с каждой комиссии. Вызывать у него
pushStakerFeesможет только контракт стейкинга; эта функция переводит эту долю, плюс стоимость LP сверх $500,000, если она есть, на баланс контракта стейкинга. - Затем распределение раскладывает всё, что контракт стейкинга получил заново, по текущему стейку. Распределение доступно только через вызов
distributeкипера-распределителя и через подписанные запросыDistribute, отправленные через релейер; сначала оно всегда подтягивает комиссии.
Наш кипер проводит распределение каждые 30 секунд, когда накопилось не меньше $100, так что об этом никому не нужно думать. Пока всего в стейкинге меньше 1 BACK, новые награды ждут, пока стейка не станет достаточно, чтобы их распределить.
Математика
Каждое распределение делит только что полученные USDC между стейкерами пропорционально их стейку на этот момент: без бустов, уровней и множителей за блокировку. Контракт хранит одно число — награду на один застейканный токен с самого начала, масштабированную на 10^36; каждый аккаунт хранит свой стейк и долг по наградам. Когда аккаунт стейкает, выводит из стейкинга или забирает награды, разница зачисляется в его начисленные награды с округлением вниз, так что всего начислено никогда не больше, чем распределено.