TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.48K subscribers
Post #1077 914
Как Uniswap V2 вычисляет mintFee?

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

Uniswap V2 был разработан для сбора 1/6 части комиссии за своп в протоколе. Так как комиссия за своп составляет 0,3%, 1/6 часть от этой суммы равна 0,05%; то есть 0,05% от каждой сделки должно идти в протокол.

Ранее мы уже обсуждали, что сама процедура взимания комиссии за своп еще не активирована. Одной из причин может быть то, что это крайне не эффективное занятие. Посудите сами, при каждом свопе требовался бы дополнительный перевод токенов в пул (комиссия) и обновление переменных. И это при условии, что в одном пуле есть оба необходимых для свопа токена. А если нужно использовать несколько пулов? В общем, в V2 посчитали это трудоемким процессом.

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

Для того чтобы собрать mintFee, контракт вычисляет сумму комиссий, собранных с момента последней операции, и чеканит на адрес получателя достаточное количество токенов LP, чтобы вкладчик имел право на 1/6 часть самого сбора.

P.S. Во избежание путаницы в терминологии, мы обозначаем "fee" как 0,3%, взимаемые с трейдеров во время свопа, а "mintFee" - как 1/6 часть от 0,3%. Да, наличие комиссии в обоих терминах - не самая лучшая номенклатура, но это то, с чем нам приходится работать.

P.P.S. Также в данном контексте "ликвидность" - это квадратный корень из произведения остатков токенов в пуле. В некоторых источниках она обозначается как √𝑘, где 𝑘 = 𝑥𝑦, а 𝑥 и 𝑦 - остатки токенов.


Что еще нужно держать в уме для дальнейшего разбора?

В этой работе расчетов Uniswap V2 опирается на следующие два инварианта:

1. Если mint и burn не вызываются, ликвидность пула может только увеличиваться;

2. Увеличение ликвидности происходит исключительно за счет комиссий;

Таким образом, измеряя увеличение ликвидности с момента последнего mint или burn, пул понимает, сколько сборов было собрано.

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

Предположим, что в t₁ пул начинается с 10 токенов_0 и 10 токенов_1.

После множества торгов и сбора комиссии новый баланс пула составляет 40 токенов_0 и 40 токенов_1 в t₂.

Ликвидность измеряется как квадратный корень из произведения двух токенов, то есть ликвидность = sqrt(xy). Ликвидность составляла 10 на t₁ и 40 на t₂, sqrt(100) и sqrt(1600) соответственно. Мы собираемся взимать комиссию за рост с 10 до 40.

То есть 3/4, или 30 единиц ликвидности пула, приходится на комиссию. Мы хотим сминтить достаточное количество токенов LP, "mintFee", чтобы бенефициар получал 1/6 часть "комиссионной части" пула. То есть он должен иметь право на 5 единиц ликвидности (30 / 6).

Для формулы на скрине мы используем следующие обозначения:

s - количество LP токенов до сбора комиссии
η - комиссия
ℓ1 - ликвидность до сбора комиссии
ℓ2 - ликвидность после сбора комиссии

И ключевой инвариант:

η / p = s / d

То есть? если mintFee η может выкупить (redeem) количество ликвидности в протоколе 𝑝, то первоначальное предложение LP s может выкупить (redeem) оставшуюся часть пула d.

Именно этот расчет и показан на скрине.

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

#uniswap #v2 #mintfee
  • 🌭 6
  • 🔥 4
  • 🤯 2
  • ❤ 1
  • 👍 1
More from @solidityset
  1. Oct 2, 2026Вторая сложность — как доказать, что установилось именно опубликованное. В первом варианте…
  2. Oct 2, 2026Задача с полуоткрытым кодом На днях, в процессе создания одного приложения, столкнулся с и…
  3. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  4. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
  5. Sep 14, 2026Графы повсюду Если вы также следите за новостями в мире ИИ, то наверняка уже все чаще встр…
  6. Sep 10, 2026GTA6, Cyberleek, блокчейн и безопасность Увидел несколько постов (тут и тут) про Cyberleek…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →