> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intention.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Комиссионные уровни

> Тарифная сетка, как измеряется и агрегируется скользящий объём, когда меняется ваш уровень и какие ребейты получают значимые мейкеры.

Ваша ставка падает по мере роста скользящего объёма. Тарифная сетка — это ончейн-конфигурация, а уровень, на котором вы находитесь, — ончейн-состояние счёта; и то и другое читается, ничего не выводится косвенно.

<h2 id="the-schedule">
  Тарифная сетка
</h2>

| Уровень | Взвешенный объём за 14 дней | Тейкер, бессроч. | Мейкер, бессроч. | Тейкер, спот | Мейкер, спот |
| ------: | --------------------------: | ---------------: | ---------------: | -----------: | -----------: |
|       0 |                           — |           0,045% |           0,015% |        0,07% |        0,04% |
|       1 |                   > \$5 млн |           0,040% |           0,012% |        0,06% |        0,03% |
|       2 |                  > \$25 млн |           0,035% |           0,008% |        0,05% |        0,02% |
|       3 |                 > \$100 млн |           0,030% |           0,004% |        0,04% |        0,01% |
|       4 |                 > \$500 млн |           0,028% |           0,000% |        0,04% |        0,00% |
|       5 |                  > \$2 млрд |           0,026% |           0,000% |        0,03% |        0,00% |
|       6 |                  > \$7 млрд |           0,024% |           0,000% |        0,03% |        0,00% |

Мейкерская ставка достигает нуля на уровне 4. Дальше мейкерская ставка улучшается уже не за счёт уровней по объёму, а за счёт [программы ребейтов](#market-maker-rebates): вознаграждаются разные вещи — об этом ниже.

<Note>
  Спотовые ставки хранятся в той же конфигурационной структуре, а работают сегодня бессрочные рынки. Спотовые столбцы — это сетка, которая заработает при открытии спотовых рынков; сейчас по ним ничего не списывается.
</Note>

<Warning>
  Это справочная сетка, а не источник истины. Живая таблица публикуется в блокчейне, и её можно прочитать напрямую. Любая интеграция, зашившая эти числа в код, рано или поздно применит ставку, которую сеть не берёт, — см. [Разработчикам](/ru/developers/overview).
</Warning>

<h2 id="how-volume-is-measured">
  Как измеряется объём
</h2>

$$
\text{взвешенный объём} = \text{объём по бессрочным} + 2 \times \text{объём по споту}
$$

Спот считается вдвойне. Спотовый объём труднее сгенерировать, и в нём нет плеча, раздувающего номинал бессрочных контрактов, поэтому именно повышенный вес и делает две величины сопоставимыми — как мера активности, а не как мера плеча.

Три свойства окна:

**Скользящее, а не календарное.** Четырнадцать дней, отсчитанных назад от текущего момента. Нет ежемесячного обнуления, вокруг которого можно выстраивать торговлю, и нет обрыва на границе месяца.

**Пересчитывается ежедневно.** Объём снимается раз в сутки в 00:00 UTC. Окно — это разница между сегодняшним накопленным срезом и срезом, снятым четырнадцать периодов назад; именно это делает его *скользящим* окном, а не нарастающим итогом.

**Агрегируется на родительский счёт.** Объём каждого субсчёта суммируется под родительским адресом, и полученный уровень действует для всех них. Дробление активности по субсчетам ни помогает, ни мешает: число получается одно и то же.

<h2 id="when-your-tier-changes">
  Когда меняется ваш уровень
</h2>

Уровни пересчитываются раз в сутки и пакетами применяются в первом блоке после 00:00 UTC — ко всем счетам, у которых изменилась ставка.

<div className="dg" data-dg="fee-tier-pass">
  <div className="dg-c" style={{aspectRatio:"720 / 342"}}>
    <svg className="dg-w" viewBox="0 0 720 342" aria-hidden="true">
      <path className="dg-wire" d="M 125.60 78.00 L 139.20 78.00" />

      <path className="dg-head" d="M 145.60 78.00 L 139.20 82.40 L 139.20 73.60 Z" />

      <path className="dg-wire" d="M 275.20 78.00 L 288.80 78.00" />

      <path className="dg-head" d="M 295.20 78.00 L 288.80 82.40 L 288.80 73.60 Z" />

      <path className="dg-wire" d="M 424.80 78.00 L 438.40 78.00" />

      <path className="dg-head" d="M 444.80 78.00 L 438.40 82.40 L 438.40 73.60 Z" />

      <path className="dg-wire" d="M 574.40 78.00 L 588.00 78.00" />

      <path className="dg-head" d="M 594.40 78.00 L 588.00 82.40 L 588.00 73.60 Z" />
    </svg>

    <div className="dg-b dg--sky" style={{left:"0.0000%",top:"7.6023%",width:"16.8889%",height:"30.4094%"}}><span className="dg-t">00:00 UTC</span><span className="dg-s">срез накопленного объёма</span></div>
    <div className="dg-b dg--sky" style={{left:"20.7778%",top:"7.6023%",width:"16.8889%",height:"30.4094%"}}><span className="dg-t">Объём окна</span><span className="dg-s">сегодняшний срез минус срез 14 периодов назад</span></div>
    <div className="dg-b dg--sky" style={{left:"41.5556%",top:"7.6023%",width:"16.8889%",height:"30.4094%"}}><span className="dg-t">Таблица уровней</span><span className="dg-s">читается из блокчейна живьём</span></div>
    <div className="dg-b dg--blue" style={{left:"62.3333%",top:"7.6023%",width:"16.8889%",height:"30.4094%"}}><span className="dg-t">Только изменённые ставки</span><span className="dg-s">пакетом в транзакцию протокола</span></div>
    <div className="dg-b dg--green" style={{left:"83.1111%",top:"7.6023%",width:"16.8889%",height:"30.4094%"}}><span className="dg-t">Блокчейн определяет ставку</span><span className="dg-s">по индексу уровня</span></div>
    <div className="dg-b dg-dashed dg-left" style={{left:"0.0000%",top:"45.0292%",width:"48.8889%",height:"23.9766%"}}><span className="dg-t">Таблица уровней читается каждый проход</span><span className="dg-s">Сервис со своей копией продолжает применять вчерашнюю сетку после того, как сеть её изменила, и ничто не выглядит сломанным, пока кто-нибудь не сверит комиссию.</span></div>
    <div className="dg-b dg-dashed dg-left" style={{left:"51.1111%",top:"45.0292%",width:"48.8889%",height:"23.9766%"}}><span className="dg-t">Изменения отслеживаются по ставкам, а не по номерам</span><span className="dg-s">Сдвиг порога или переоценка уровня меняют то, сколько вы платите, не меняя номера вашего уровня.</span></div>
    <div className="dg-b dg-dashed dg-left" style={{left:"0.0000%",top:"71.9298%",width:"48.8889%",height:"23.9766%"}}><span className="dg-t">Итоговую ставку определяет блокчейн</span><span className="dg-s">Транзакция несёт индекс уровня; индекс вне допустимого диапазона роняет весь пакет, а не применяется частично.</span></div>
    <div className="dg-b dg-dashed dg-left" style={{left:"51.1111%",top:"71.9298%",width:"48.8889%",height:"23.9766%"}}><span className="dg-t">День применён только после фиксации всех пакетов</span><span className="dg-s">Прерывание посреди прохода повторяет весь день — это безопасно, потому что то же окно всегда даёт тот же ответ.</span></div>
  </div>
</div>

Четыре вещи в этом цикле стоит проговорить, потому что именно они отличают сетку, которая верна, от сетки, которая верна обычно.

**Таблица уровней читается из блокчейна на каждом проходе и нигде не хранится.** Сервис со своей копией продолжал бы применять вчерашнюю сетку после того, как сеть её изменила, и ничто не выглядело бы сломанным, пока кто-нибудь не сверил бы комиссию.

**Изменения отслеживаются по ставкам, а не по номерам уровней.** Сравнение *позиций* в сетке упускает два реальных случая: сдвиг порога, из-за которого счёт без единого изменения попадает на другой уровень, и переоценку уровня при сохранении его номера. Оба меняют то, сколько вы платите. Ни один не меняет номер вашего уровня.

**Транзакция несёт индекс уровня; ставку определяет блокчейн.** Определяющее соответствие «уровень — ставка» применяется при исполнении — к той конфигурации, которая действует в этом блоке. Если индекс выходит за допустимый диапазон, пакет не применяется частично: он падает целиком.

**День считается применённым только после того, как зафиксирован каждый пакет.** Прерывание посреди прохода приводит к повтору всего дня, и это безопасно, потому что вычисление идемпотентно: то же окно даёт тот же ответ.

Весь этот цикл работает вне исполнения блока и записывает результат обратно в блокчейн. Почему выбрана такая форма, а не подсчёт объёма внутри блока, см. в разделе [Программные сервисы](/ru/protocol/architecture/programs).

<h2 id="market-maker-rebates">
  Ребейты маркет-мейкерам
</h2>

Мейкеры, дающие заметную долю ликвидности площадки, получают **выплаты**, а не платят.

| Доля мейкерского объёма за 14 дней | Мейкерская ставка |
| ---------------------------------: | ----------------: |
|                             > 0,5% |           −0,001% |
|                             > 1,5% |           −0,002% |
|                             > 3,0% |           −0,003% |

Отрицательная ставка — это ребейт, получаемый с каждого мейкерского исполнения.

База здесь другая, чем у уровней по объёму, и в этом отличии весь смысл. Право на уровень измеряется по **вашему абсолютному объёму**. Право на ребейт измеряется как **доля мейкерского объёма всей площадки**, то есть награждают за то, что вы держите заметную часть стакана, — а это не то же самое, что много торговать. Счёт может быть крупным в абсолютных числах и несущественным для глубины стакана; ребейт нацелен на те счета, чей уход был бы заметен.

Ребейты ограничены в блокчейне: мейкерская ставка не может опуститься ниже −0,1% ни при какой конфигурации. См. [Торговые комиссии](/ru/programs/fees#what-the-rate-can-be).

<h2 id="negotiated-rates">
  Договорные ставки
</h2>

Ставку можно назначить напрямую счёту, вне сетки уровней.

Счёт с договорной ставкой **намеренно пропускается ночным проходом по уровням**. Без этого исключения ежедневный пересчёт перезаписал бы согласованные условия при первом же движении объёма и делал бы это каждую ночь — сбой, который остаётся невидимым, пока кто-нибудь не сверит месяц исполнений.

<h2 id="reading-your-tier">
  Как посмотреть свой уровень
</h2>

Обе половины — состояние блокчейна, и обе доступны для запроса: **сетка** через конфигурацию комиссий, **назначенный вашему счёту уровень и ставка** через состояние счёта.

Привычка, которую стоит заложить в любую интеграцию, — читать обе величины живьём и считать по ним ожидаемую стоимость, а не сохранять ставку при подключении. Это же единственный способ заметить случай, когда ваша ставка изменилась не из-за вашего объёма: пересмотр сетки, сдвиг порога, применение договорной ставки.

<h2 id="where-to-go-next">
  Что дальше
</h2>

<CardGroup cols={2}>
  <Card title="Торговые комиссии" href="/ru/programs/fees">
    Как считается комиссия и какая ставка применяется.
  </Card>

  <Card title="Маркет-мейкинг" href="/ru/trading/market-making">
    Что площадка требует от мейкера и что даёт взамен.
  </Card>

  <Card title="Программные сервисы" href="/ru/protocol/architecture/programs">
    Как уровень считается вне блокчейна и фиксируется обратно.
  </Card>

  <Card title="Неторговые комиссии" href="/ru/programs/other-fees">
    Затраты на мост, счёт, волт и ликвидацию.
  </Card>
</CardGroup>
