NEP-102. NSBT, gNSBT и быстрый своп в Нейтрино.

Neutrino Protocol
Neutrinoteam
Published in
7 min readFeb 22, 2022

Протокол Neutrino впервые был запущен в 2019, и за это время он претерпел немало изменений. Одним из таких изменений было добавление функции стейкинга для NSBT токена, которое позволило получать пассивный доход сразу в нескольких токенах, а именно: USDN (стейблкоин), WAVES и DeFo-токенах.

2022 год можно назвать годом Neutrino, т.к. протокол претерпит ряд изменений, для того чтобы достичь давно назревшую цель — децентрализацию. Первым шагом на пути к этой цели являются изменения в механике NSBT и своп операциях. Однако, прежде чем перейти к их описанию, давайте подведем итоги 2021 года, ведь в некоторых случаях цифры говорят сами за себя.

1) в 2021 году стейкеры NSBT заработали более $26.5 млн! Было распределено 23.4 млн. USDN, 52.8k WAVES, 1.58 млн. EURN и других DeFo-ассеты.

2) в стейкинге NSBT поучаствовало 3000 пользователей.

3) топ-5 доходов за 2021:

3P2u***WHMd: $2,654,285

3P5L***a9gY: $2,037,442

3PE2***hwXa: $1,380,715

3PD9***Usdy: $1,196,840

3P8T***2F3K: $1,197,680

Вы уже сожалеете, что не купили NSBT? У вас все еще есть возможность сделать это на Waves.Exchange.

4) На момент написания этой статьи рыночная капитализация USDN составляет почти полмиллиарда долларов.

5) В качестве обеспечения токена USDN находится ~43,000,000 WAVES

6) За 2021 год было совершено 20,000 свопов (исключая своп от ноды) общим объемом 1.2 млрд. долларов!

Комментарии тут излишни. Теперь давайте поговорим об изменениях.

Краткое описание изменений

Обновление предполагает изменения в логике двух основных компонентов Neutrino:

  1. Стейкинг NSBT и gNSBT:
  • за стейкинг NSBT начисляются “голоса” (gNSBT) в пропорции 1 к 1
  • владельцы gNSBT получают вознаграждения — процент от собранных комиссий за своп WAVES ↔ USDN (комиссия протокола)
  • голосование в протоколе Neutrino осуществляется с помощью gNSBT
  • при выводе NSBT из стейкинга списывается комиссия — процент от суммы NSBT в соответствии с кривой комиссии (функции полураспада)
  • автоматические выплаты за стейкинг NSBT отменяются.

2. Обмен (своп) Waves↔USDN:

  • отменяется механика случайной задержки свопа, теперь своп осуществляется “почти мгновенно”, а именно с задержкой в 1 блок
  • только владельцы gNSBT (стейкеры NSBT) могут осуществлять своп
  • количество gNSBT определяет максимальный суточный (24-часовой) лимит суммы свопа
  • разрешен только 1 своп в сутки (24 часа)

Эти изменения подробно описаны ниже.

Стейкинг NSBT и gNSBT

gNSBT как новая сущность

Мы ввели дополнительную сущность gNSBT, чтобы разделить баланс голосов и баланс NSBT, которыми владеет пользователь. Голоса (gNSBT) будут использоваться в момент голосования.

Владельцы gNSBT получают вознаграждения — процент от комиссий за своп (комиссия протокола). Сумма вознаграждений пропорциональна доле gNSBT пользователя от всех выпущенных gNSBT. При изъятии из стейкинга / внесении NSBT сумма “голосов” (gNSBT) пересчитывается.

Стейкинг NSBT переносится на новый контракт (новый адрес в сети Waves). На текущем контракте стейкинга NSBT будет отключен вход для новых пользователей, а выход будет доступен неограниченное количество времени (со старой комиссией 0,005 WAVES). Пользователи старого контракта перестанут получать вознаграждение за стейкинг, что должно побудить их произвести миграцию самостоятельно. С точки зрения взаимодействия пользователя с UI это будет выглядеть следующим образом:

  • пользователь заходит на биржу Waves.Exchange и забирает свои NSBT со старого контракта
  • пользователь заходит на официальный сайт Neutrino и производит стейкинг на новых условиях

В протоколе Neutrino голосовать могут только владельцы gNSBT

Реализация голосования в Neutrino — это следующий этап разработки после внедрения новой механики стейкинга и свопов. Получить голоса в протоколе можно будет только выполнив стейкинг NSBT, который предоставляет пользователю бонусы, но и накладывает некоторые ограничения (см. Комиссия при выводе NSBT из стейкинга)

Комиссия при выводе NSBT из стейкинга

На сегодняшний момент очень многие системы внедряют блокировку (lock) токенов, чтобы уменьшить циркуляцию токена и придать ему дополнительную ценность. Предложение NSBT ограничено ~2.8 млн токенами (Moon Factor) и не нуждается в механизме блокировки. Однако у Moon Factor есть и обратная сторона, которая оказывает негативное воздействие на основную функцию NSBT — рекапитализацию контракта Neutrino. Чтобы сгладить негативное проявление Moon Factor, вместо блокировки (lock) мы вводим комиссию при выводе NSBT из стейкинга.

Комиссия подразумевает следующие принципы:

1) комиссия взимается в NSBT токенах

2) вся взимаемая комиссия отправляется обратно на контракт NSBT.

Эти принципы будут способствовать уменьшению текущего (current) предложения (supply = S) NSBT. При уменьшении S будет уменьшается и цена NSBT на контракте, что будет стимулировать покупку NSBT с контракта и в результате мы получим необходимый круговорот NSBT в системе.

Введение комиссии за вывод NSBT из стейкинга — сложный шаг, т.к. необходимо сохранить баланс между интересами пользователей и протокола. С одной стороны, высокий процент комиссии будет отпугивать пользователей от стейкинга, а, с другой, очень маленький процент может не оказать нужного эффекта. В результате для достижения компромисса мы выработали 3-ий принцип:

3) размер комиссии должен представлять функциональную зависимость (кривую) от t — времени нахождения NSBT в стейкинге; т.е. чем раньше пользователь решит забрать свои NSBT, тем больший % комиссии он заплатит, и наоборот.

Кривая комиссии

В качестве кривой комиссии была выбрана функция полураспада с периодом T=6 месяцев, который, конечно же, можно будет регулировать через голосование.

где stakingDuration — время нахождения (кол-во блоков) NSBT в стейкинге
T — период полураспада

Графически это представлено следующим образом:

Такая функциональная зависимость с одной стороны подобна блокировке токенов. При этом она не налагает на пользователя жесткого ограничения в виде невозможности забрать токен обратно, но и не дает полной свободы, т.к. в первые месяцы комиссия достаточно велика. Так, при значительном увеличении цены NSBT на рынке у пользователя появляется возможность пренебречь комиссией, если получаемая прибыль от продажи превосходит комиссию за вывод NSBT из стейкинга.

Ниже представлена детализация кривой комиссии для пользователя, который отправил в стейкинг 1 000 NSBT:

  • если пользователь решит забрать свои NSBT через 1 месяц (43 200 блоков), то в качестве комиссии контракт возьмет 89,09%, т.е. пользователь заберет из своих 1 000 только 109,101 токенов, а остальные вернутся на контракт NSBT и станут доступны для покупки другими пользователями.
  • если пользователь решит забрать свои NSBT через 20 месяцев (864 000 блоков), то в качестве комиссии контракт возьмет 9,92%, т.е. пользователь заберет 900,787 из 1 000, а остальные вернутся на контракт NSBT.

Отмена автоматических выплат за стейкинг NSBT

Протокол Neutrino всегда стремился к полной децентрализации. Мы предприняли еще один шаг к этой цели. Теперь пользователи смогут самостоятельно совершать операцию “claim”. Т.е., чтобы забрать вознаграждение из суммы накопившихся комиссий протокола, нужно будет послать транзакцию вызова (invoke) в блокчейн. Также обратите внимание, что “claim” операция для вознаграждений за свопы DeFo станет доступна только после того, как свопы DeFo мигрируют на RideV5, до этого момента данные вознаграждения будут накапливаться на контракте.

Своп WAVES ↔ USDN

Время операции свопа было и является важной темой обсуждения в сообществе. Текущее изменение предлагает компромиссное решение, которое заключается в введении лимита на сумму операций свопа с одной стороны, а с другой дает возможность быстрого свопа за 1 блок без рандома. Исключение рандома из операций свопа необходимо, чтобы продолжить путь к полной децентрализации протокола.

Введение лимита — непростой процесс. Для его понимания нужно ответить на несколько вопросов:

  • для чего нужен лимит на своп?
  • как пользователю получить лимит на своп?
  • какое время действует лимит?
  • есть ли исключения ?

Ниже приводятся ответы на эти вопросы.

Для чего нужен лимит на своп?

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

Изменения, вносимые в рамках NEP-102, сфокусированы на том, чтобы перепрофилировать протокол на новые принципы:

  • минимизировать арбитраж контракта
  • сфокусироваться на стабильности резервов
  • избавиться от непопулярных и централизованных решений.

NEP-102 — один из шагов к достижению стабильности протокола.

Путь к достижению изложенных выше принципов протокол начинает с внесения следующих изменений в операции свопа:

  • только владельцы gNSBT (стейкеры NSBT) могут осуществлять своп
  • количество gNSBT определяет максимальный лимит суммы свопа в USDN
  • время операции свопа составляет 1 блок
  • разрешен только 1 своп в сутки (24 часа / 1440 блоков), либо WAVES → USDN, либо USDN → WAVES

Далее дано подробное определение лимита в операции свопа.

Определение механики лимита

Для того, чтобы было проще разобраться, введем несколько определений.

Максимальный лимит пользователя (limitMax) — это максимальная сумма в USDN, которую пользователь может обменять в течение 24ч (1 440 блоков). LimitMax зависит от количества gNSBT у пользователя. LimitMax можно выразить следующей формулой:

где gnsbtAmount — количество gNSBT у пользователя
a — коэффициент, который будет регулироваться через голосование
e — числом Эйлера

Израсходованный лимит одной операцией свопа пользователя (limitSpentByOperation) — при WAVES→USDN это сумма USDN, получаемая пользователем на выходе операции, для направления USDN→WAVES — сумма USDN, подаваемая на вход.

Опираясь на эти определения, можно сформировать набор следующих правил для описания механики лимита:

  • limitMax является общими для всех операций свопа независимо от направления (WAVES → USDN и USDN → WAVES)
  • пользователь может выполнить только 1 своп в сутки (24 часа / 1440 блоков) при условии что limitSpentByOperation <= limitMax.

Пример работы лимита

Предположим что коэффициент а = 0.00000003. Тогда limitMax в зависимости от gNsbtAmount выглядит следующим образом:

Диаграмма ниже показывает возможности пользователя совершать своп с учетом лимитов.

Эта статья описывает один из первый шагов долгого пути к децентрализации протокола Нейтрино. Реализация описанных идей уже не за горами, а на пороге стоит полноценное голосование, которого мы уже так заждались.

--

--

Neutrino Protocol
Neutrinoteam

A multi-assetization protocol acting as an interchain toolkit for frictionless DeFi. Powered by Waves. https://neutrino.at