Как это устроено
Кривая начисления BACK
Как реализованные убытки превращаются в предложение токена. Предложение начинается с нуля на кривой, которая сначала фиксирована, а затем снижается; после переключения владельцем каждый доллар убытка даёт фиксированную долю текущего предложения.
Две фазы
Предложение токена начинается с нуля, так что начисление не может с самого начала быть долей предложения. Поэтому оно проходит две фазы:
- Стартовая кривая (ниже): фиксированная ставка, затем снижающийся хвост.
- Правило доли предложения — с момента, когда владелец включает его через таймлок. Переключение происходит один раз и необратимо; в этот момент константа нового правила задаётся так, чтобы предельное начисление за доллар осталось прежним.
Стартовая кривая
У кривой две области и три параметра в контракте Tokenomics: порог фиксированной ставки F = $500,000, фиксированная ставка R = 100 BACK за доллар и масштаб хвоста S = $120,000,000. Она зависит от двух переменных состояния:
T— учётный LP (Платёжеспособность и очередь), который может быть отрицательным;H— продвижение по хвосту: общая база начисления, оценённая в хвосте к этому моменту. Оно только растёт.
rate = R while T < F (the flat region, including any negative T)
rate = R · (S / (S + H))² otherwise (the tail)
База начисления — это учитываемая часть вашего реализованного убытка (см. ниже), и она не всегда совпадает с суммой, зачисленной в учётный LP. Расчёт делит базу между областями и начисляет интеграл ставки, поэтому дробление убытка на части не может дать больше, чем несколько wei на округлении:
T −= wins paid in the batch
flat = T < F ? min(basis, F − T) : 0 (a negative T leaves more flat room)
tail = basis − flat
r1 = S · 1e18 / (S + H)
r2 = S · 1e18 / (S + H + tail)
minted = flat · R / 1e18 + ((R · r1 / 1e18) · r2 / 1e18) · tail / 1e18
H += tail
T += what the LP received
Продвижение по хвосту в одну сторону
H — это исторический максимум, который никогда не снижается. Когда распределения передают стейкерам стоимость LP сверх $500,000, T откатывается назад, но H остаётся на месте. Если хвост продвинулся, ставка навсегда остаётся ниже на эту величину: после убытков в хвосте, равных S, ставка составляет четверть R, сколько бы раз LP за это время ни опустошался в пользу стейкеров. Поэтому кривая выше построена в зависимости от H, а не от LP.
Так что ранние трейдеры получают начисление по гораздо более высоким ставкам, чем поздние. Так задумано.
После переключения: доля предложения
После переключения каждый учитываемый убыток даёт фиксированную долю предложения токена за доллар базы начисления, каким бы ни был учётный LP:
c36 = R_now · 1e36 / supply_at_switch fixed once (R_now: the curve's marginal rate)
x = c36 · g / 1e36 g: the effective basis, below
minted = supply · (e^x / (1 + 1e−15) − 1) supply: the token supply before this mint
e^x вычисляется как wad (18 знаков после запятой), а результат уменьшается на запас в 1000 wei от wad — примерно одну часть из 1e15. H перестаёт расти. Поскольку каждый доллар даёт одну и ту же долю имеющегося предложения, у предложения нет потолка: оно растёт вместе с накопленными убытками, а существующие запасы размываются в той же пропорции.
Бонус за неплатёжеспособность
После переключения убыток, пополняющий учётный LP ниже нуля, засчитывается с повышенным весом:
g_below0 = min(credit, −T) the part of what the loss adds to T that lands below zero
m = 1 + 4u(2 − u), u = min(1, t / 3 days)
g = basis + (m − 1) · g_below0
t — время с момента, когда учётный LP ушёл ниже нуля. m растёт от единицы до 5× за 3 дня и затем остаётся на этом уровне, пока T ниже нуля. Отсчёт начинается, когда расчёт оставляет T ниже нуля, и сбрасывается, когда расчёт оставляет его на нуле или выше, поэтому в следующий раз, когда T уйдёт ниже нуля, бонус снова начнётся с единицы. Остальная часть убытка засчитывается один раз.
Что считается «убытком»
- Убыточное закрытие, позиция открыта на ваш баланс, очередь пуста: убыток минус комиссия с убытка 2% и минус комиссия билдера, если закрывающий ключ указывает одобренного билдера; обе вычитаются из того, что получает LP. Учётный LP растёт на ту же сумму.
- Убыточное закрытие, в очереди есть требования: комиссия не берётся, и убыток идёт в отдельный резерв; база — весь убыток, и учётный LP растёт на весь убыток. Отдельный резерв лишь определяет, что эти деньги первыми идут выигравшим в очереди.
- Ликвидация: вся потерянная маржа, независимо от состояния очереди. Учётный LP растёт на маржу за вычетом комиссии за ликвидацию, если она взимается. Закрытие, исполненное по цене банкротства или за ней, рассчитывается как ликвидация, с той же базой.
- Позиции, открытые на требования из очереди: убыточное закрытие даёт начисление на уничтоженную часть требования за вычетом комиссии с убытка, если она взимается; ликвидация уничтожает всё требование, комиссию не берёт и даёт начисление на всю его сумму. Учётный LP меняется на те же суммы.
Пакеты и отложенные начисления
Закрытие нескольких позиций даёт одно начисление на весь пакет; начисленное распределяется между позициями пропорционально их базе методом наибольшего остатка, а при равенстве — в пользу более ранней позиции. Ликвидация начисляет по каждой позиции отдельно.
Exchange вызывает Tokenomics с фиксированным лимитом газа. Если этот вызов не проходит, закрытие всё равно завершается, входные данные начисления сохраняются, и каждое следующее начисление ждёт за ним в очереди, так что воспроизведение в исходном порядке начисляет ровно столько, сколько начислил бы прямой путь. Запустить воспроизведение может кто угодно, и наш кипер это делает.