Формулы и экономика на которых построена сеть Minter. I часть.

Формулы и экономика на которых построена сеть Minter. I часть.

@semaphore_team


Оглавление

I часть

  1. Введение
  2. Происхождение формул. Bancor, Minter, Математика
  3. Цена монеты
  4. Цена покупки/продажи

II часть

  1. Конвертация монет
  2. Расчет цены кастомной монеты при делегировании
  3. Undond монеты
  4. Ликвидация монет
  5. Заключение

Документ с формулами

Введение

Современный человек стоит на пороге колоссальных изменений в большинстве сфер, окружающих его жизнь. Учитывая экспоненциальный рост прогресса, дни когда криптовалюты крепко укореняться в нашей повседневной жизни, уже на горизонте и экономика сети Minter приближает нас к этому.

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

Будьте внимательны, некоторые рассмотренные темы перестанут работать с выходом нового обновления сети Minter 1.1.

Происхождение формул. Bancor, Minter, Математика

Под капотом нашей сети фигурируют формулы, выведенные экономистом Джоном Кейнсом и доработанные Мэни Розенфельдом для сети Bancor.

Уделим время рассмотрению вывода формул из данного документа и подчеркнем важные особенности в сети Minter.


Введем: 

R - резерв, измеряемый в единицах базовой монеты, на сегодняшний день, это только BIP. 

S - эмиссия (количество выпущенных монет).

F - коэффициент постоянного резервирования(определяет как сильно будет меняться резерв R при покупке/продаже какого-то количества монет).


Общая рыночная капитализация (Market Value) будет равна SP, а резерв R по определению равен FSP.

    R = FSP

Это означает, что цена в любой момент может быть рассчитана как :

Неплохо, но звучит слишком просто, чтобы быть правдой. Возможно, именно поэтому Minter формирует цену иначе. Как именно - расскажем в следующем блоке, а сейчас продолжим разбор.


Когда пользователь покупает бесконечно малое число монет dS,  на это число увеличивается предложение этих монет (эмиссия). Напомним, что P - это цена монеты. Пользователь платит за них PdS BIP, это число добавляется к резерву, то есть приращение резерва:  dR = PdS . Объясним этот неочевидный момент на графике зависимости цены монеты от ее эмиссии:

Рассмотрим график зависимости цены монеты от ее эмиссии

Площадью под графиком является резерв монеты R и чтобы его рассчитать нужно взять определенный интеграл :

где P(s) - это функция цены, зависящая от эмиссии, a S1 и S2- это начальное и конечное значение эмиссии.

Нам же нужно узнать чему будет равно dR:

В то же время R = FSP.

Продифференцируем это выражение :

Выносим константу за знак дифференциала

По формуле дифференциала произведения:

d(u(x)*v(x)) = d(u(x))*v(x) + u(x)*d(v(x))

Получаем:

Приравниваем эти значения:

Раскрываем скобки:

Делим все выражение на константное значение F и выносим общий множитель,

Пусть α:

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

Поделим уравнение на SP :

Перед нами дифференциальное уравнение с разделяющимися переменными, кому интересно как это решается подробнее, можете посмотреть здесь

После интегрирования обеих частей получаем решение этого уравнения в неявной форме:

Теперь нам надо представить это в явной форме, потому что пока ничего не понятно. По свойству логарифма заносим α в степень S, а коэффициент А представим в виде степени аргумента натурального логарифма:

получаем:

Так же по свойству логарифмов представим их сумму в виде произведения аргументов:

Супер, уже вырисовывается что-то более приятное для глаз. Теперь опустим логарифмы.

Мы получили решение дифференциального уравнения в общем виде, т.к. коэффициент A  может быть любым числом. Теперь составим задачу Коши и найдем этот коэффициент:

Задача Коши в общем виде выглядит как: y(x0)=y0, тогда для нашего случая будет: P(s0)=P0 

Подставим в наше уравнение:

Выражаем экспоненту в степени A:

Отлично, осталось подставить это в наше решение:

Эта формула позволит рассчитать текущую цену, зная начальную цену и текущую и начальную эмиссию монет.

Если пользователь покупает в общей сложности T монет, то эмиссия увеличивается на Т (S =  S0 + T) , а стоимость этих Т монет будет:

Не будем вас окончательно утомлять решением этого интеграла,  ведь его подробное объяснение и так приведено во вложенном документе. В итоге мы получаем формулу покупки монет:

Поздравлю, если вы дошли до этого момента, то можете себя смело называть настоящим ценителем математики. 

Рассуждая таким же образом можно вывести формулу для продажи монет.


Цена монеты

Перейдем к самому интересному.

В сети Minter цена монеты рассчитывается не так как в Bancor.

Для того, чтобы узнать цену, нужно использовать формулу продажи 1-ой

монеты:


где Price - цена монеты, Reserve - её резерв, CRR - коэффициент постоянного резервирования, Supply - эмиссия.

Возникает логичный вопрос - почему цена рассчитывается такой формулой, когда во всех математических выводах мы используем эту:

Ответ на этот вопрос не очевиден, стоит привести комментарий Даниила Лашина, главного разработчика блокчейна Minter:

Стоит отметить, что он имел ввиду именно продажу.

Также, обратим ваше внимание на то, что рассчитать сколько вы можете получить BIP при продаже монет, просто умножив количество продаваемых монет на цену одной монеты, не получится. Рассмотрим элементарный пример:

Пусть Price - цена монеты BTCSECURE, Amount - количество монет. Согласно привычному рыночному обмену, за продажу Amount монет мы получим Amount*Price BIP, проверим так ли это в экономике Minter:

Сформируем цену с помощью Explorer-Api, и будем использовать Matlab для точных математических расчётов:

Мы якобы должны получить такую сумму за продажу 10000 BTCSECURE, а теперь проверим в BIP Wallet:

И это не округление и не потеря точности, мы рассчитали всё верно. Таким образом мы показали, что цена монеты не отражает практически ничего. Зная цену одной монеты, мы не можем точно знать сколько получим за продажу N монет. Аналогично и для покупки.

Проверим свои высказывания, и раз и навсегда запомним, как правильно считать цену монеты.

Возьмём случайные пары из 2-х значений резервов монеты, 2-х значений эмиссий и 2-х коэффициентов CRR. Вычислим цену по корректной формуле - Price, и покажем значения по неверной - Price_Wrong


Начнём подтверждение своих высказываний. За эталон правды берем Minter calculator:


Как видим цена первой монеты 0.14 BIP, а второй 255.24 BIP, что совпадает с формулой продажи 1-ой монеты Price:

и не совпадает с PriceWrong формулой:

Всё же, кому-то могло показаться это счастливой случайностью. Ведь калькулятор написан на JS, а он не первый язык, который нужно выбирать для работы с числами с плавающей запятой. Ошибки здесь нет, но стоит ещё посмотреть на следующие аргументы.

Такие крупные сервисы как Interchain и Minterscan считают цену именно по верной формуле. 

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

formula.CalculateSaleReturn это и есть "формула продажи 1", которой мы передаём 4 аргументом - количество продаваемых монет - 1 .

Как видим, это продажа 1-ой единицы монеты. Однако, не стоит забывать, что все формулы и вся логика выведена вокруг именно “неправильной” формулы и именно эта “неправильная” формула объясняет роль CRR, регулирующая отношение между резервом и эмиссией.

Обращаем ваше внимание на то, что с выходом нового обновления сети Minter 1.1 монеты больше не будут ликвидироваться. Вместо этого они будут иметь минимальный резерв в зависимости от их CRR. Любая транзакция, которая приведет либо к снижению резерва меньше минимума, либо стоимость монеты станет меньше 0.0001 BIP, либо объем выпуска станет меньше 1-й монеты, будет отклоняться.

Цена покупки/продажи

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

Будем называть покупкой/продажей монет операцию, в которой любая монета обменивается на базовую монету BIP и обратно.

Формулы покупки

Формула покупки Amount монет за E BIP. CRR ∈ [0.1; 1]. Назовем эту формулу формулой покупки 1.

Ограничения:

Формула считает сколько E BIP надо заплатить, чтобы купить Amount монет.

Когда это происходит? Происходит это, например, в разделе GET в мобильном приложении:

Покупка 94.12 монет LIGMARGAME:


Возьмём данные монеты с Explorer-Api и посчитаем вручную:

Как мы доказали - все значения предсказуемы и поддаются моделированию.

Получим зеркальную формулу для ситуации, когда нужно узнать сколько монет мы получим заплатив E BIP. Просто выразив из предыдущей формулы Amount.

Назовем эту формулу формулой покупки 2.

Ограничения:

Потратим 37.11 BIP за покупку LIGMARGAME монет, узнаем сколько получим монет, в разделе SPEND:

Проверим:

Формулы продажи

Формула продажи Amount монет за E bip: 

Рассчитывает сколько BIP вы получите, если продадите Amount монет. Назовем эту формулу формулой продажи 1.

Ограничения:

Это формула используется, например, в разделе SPEND в мобильном приложении:

Проверим:

Получим зеркальную формулу для ситуации, когда нужно узнать сколько надо продать (Amount) монет, чтобы получить Е BIP. Просто выразим из предыдущей формулы Amount:

Назовем эту формулу формулой продажи 2.

Ограничения:

Это формула используется, например, в разделе GET в мобильном приложении:

Проверим:

Данные ограничения на формулы актуальны только для текущей версии сети Minter 1.0. С выходом версии Minter 1.1 появятся новые ограничения на резерв монеты. Также появятся монеты с ограниченной эмиссией.

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