Делегирование

Почему разные сервисы показывают разную стоимость в BIP моих монет? Почему сумма BIP при продаже кастомных монет отличается от суммы BIP, которая учитывается при делегировании того же количества?

При использовании функций сети Minter вы можете встретиться с несколькими вариантами определения стоимости пользовательских монет в определенных случаях.

В Minter абсолютно каждая монета имеет резерв в BIP, и поэтому ее можно в любой момент купить, продать или делегировать. Это и создает небольшую путаницу. Мы предлагаем следующую систему цен, которую можно использовать по вашему усмотрению:

— PriceB – BUY – цена монеты, если вы покупаете в ближайшее время
— PriceS – SELL – цена монеты, если вы продаете в ближайшее время (преимущественно по умолчанию используется именно это значение)
— PriceD – DELEGATE – цена монет, если они делегированы.
— PriceC – CAPITALIZATION – средняя цена между покупкой и продажей монет.

Стоимость определенной суммы монет при делегировании (ее расчетный эквивалент в BIP) определяется отлично от стоимости при продаже или покупки в текущий момент. О том, с какой целью такой механизм реализован, можно узнать в разделе "Консенсус: Валидаторы и делегаторы" в этой статье https://medium.com/@danillashin/minter-blockchain-development-7b0da2ec4744

Сам же механизм определения эквивалента в BIP выглядит так:

— Суммируются все делегированные монеты одного типа
— Определяется, сколько принесет продажа суммы всех таких стейков
— Полученная сумма BIP распределяется на делегаторов пропорционально их стейкам

Рассмотрим все варианты определения стоимости заданной суммы и цены за единицу. Для примера возьмем несуществующую монету XYZ, которая характеризуется следующими текущими параметрами: резерв (reserve) — 1000 BIP, текущая эмиссия (supply) — 400 XYZ, постоянный коэффициент отношения к резерву (CRR) — 50%. Продавать, покупать или делегировать будем сумму 100 XYZ.

Для определения значений нам понадобятся эти две формулы, зашитые в логику Minter (https://github.com/MinterTeam/minter-go-node/blob/master/formula/formula.go ):

Формула для определения суммы к получению при продаже:
Sale Return = reserve * (1 - (1 - sellAmount / supply) ^ (100 / crr))

Формула для определения суммы к получению при покупке:
Purchase Return = supply * ((1 + deposit / reserve) ^ (crr / 100) - 1)
и ее обратная запись для определения необходимой суммы BIP для покупки обозначенной суммы пользовательской монеты
deposit = reserve * (((wantReceive + supply) / supply)^(100/c) - 1)

1) Стоимость продажи суммы 100 XYZ в ближайшее время (PriceS – SELL)

Sale Return = 1000 * (1 - (1 - 100 / 400) ^ (100 / 50)) = 437.5 BIP
PriceS = 437.5 / 100 = 4.375 BIP, т. е. при единовременной продаже в текущий момент 100 XYZ, 1 XYZ = 4.375 BIP

2) Расчетная эквивалентная стоимость 100 XYZ для учета при делегировании (PriceD – DELEGATE)

Так как при расчете в данном случае используется сумма продажи всех одинаковых делегированных монет, то для данного случая допустим, что, к примеру, заделегировано 70% от текущей эмисии XYZ, т.е. 280 XYZ. Тогда

Sale Return = 1000 * (1 - (1 - 280 / 400) ^ (100 / 50)) = 910 BIP

Так как делегированные 100 XYZ составляют ~37% от общего делегированного объема этой монеты, то при их делегировании стейк в базовой монете сети составит 336.7 BIP

PriceD = 336.7 / 100 = 3.367 BIP

3) Стоимость покупки 100 XYZ в ближайшее время (PriceB – BUY)

deposit = 1000 * (((100 + 400) / 400)^(100/50) - 1) = 562.5 BIP
PriceB = 562.5 / 100 = 5.625 BIP, т. е. при единовременной покупки в текущий момент 100 XYZ понадобится 562.5 BIP, а 1 XYZ = 5.625 BIP при этом

4) Cредняя цена между покупкой и продажей 100 XYZ (PriceC – CAPITALIZATION)

PriceC = (PriceB + PriceS) / 2 = 5 BIP

Делегирование

Все еще остались вопросы?