Мне интересна тема AMM, но я опять прошу прощения я ничего не понял.
Но сразу скажу что у меня есть уже опыт - я недавно создал DeFi, который совмещает с собой стейблкоин (USD) и Своп. Своп классический - аналогичен uniswap, поэтому я думаю что хорошо представляю как работает uniswap. В нем AMM - стандартный. Добавлены только варианты защиты от манипуляций курсом.
Вот пример работы этого свопа:
ОбменСмарт-контракт содержит резервы ликвидности TERA и USD, и сделки совершаются непосредственно против этих резервов. Цены устанавливаются автоматически с помощью механизма маркет-мейкера (x*y=k), который поддерживает общие резервы в относительном равновесии. Обмен ведется в предположении постоянства значения TeraSwapPool * USDSwapPool = Invariant. Этот инвариант не изменяется и остается практически одной и той же константой при всех обменах (комиссия незначительно влияет на инвариант), существенно он изменяется только при добавлении или удалении ликвидности.
Обмен Тера на USDПри таком обмене увеличивается
TeraSwapPool и уменьшается
USDSwapPoolvar AmountFee=AmountTera*KFee;
var Invariant=TeraSwapPool * USDSwapPool;
var TeraSwapPoolNew = TeraSwapPool + AmountTera;
var USDSwapPoolNew = Invariant/(TeraSwapPoolNew - AmountFee);
var USDOut = USDSwapPool - USDSwapPoolNew;
TeraSwapPool = TeraSwapPoolNew;
USDSwapPool = USDSwapPoolNew;
Более подробно в документации (RUS:
https://docs.google.com/document/d/1iTp9gjpwa4KTqkh1TCy_-kccPdTDFDH2uSD-vWgZqQs/edit?usp=sharing )
Обратная операция фактически симметрична, поэтому не буду приводить. Таким образом я хочу сказать что нет никакой цены ASK или BID. Есть только движение по кривой x*y=k
P.S.
Кстати мне еще ОЧЕНЬ интересна тема про манипуляции курсом на AMM (для создания защит от них). Какие вы знаете (особенно те которые не вошли в документ указанный выше)?
Ну вот, для Вас это представляет практический интерес поэтому и давайте поговорим предметно к вашему обменнику.
Вы привели уже работающую модель Uniswap, которую можно форкнуть и сделать сразу для себя. Моя же модель пока не существует в реальности, поэтому её я и предлагаю в этой теме.
Защита от манипуляций, а также больших неопределенностей ситуации - это раздвижка спреда.
Я уже писал, как это в моей модели.
Просто представьте, что у Вас резко просел курс в вашем обменнике скажем с 1000 до 500. Ваша терра подешевела на 50% одним рывком. С одной стороны сейчас это хорошо, ведь стоило терра 1000, а Вы купили её за 500.
Но теперь с другой стороны, вашему обменнику придется плясать от этой пониженной цены.
Если в остальных обменниках цена просто просела с 1000 до 900, а у Вас с 1000 до 500. То кто на этом заработает, все, но только не ваш обменник. Так как условно у Вас купят по 500 и продадут в другом месте за 900.
Теперь Вы видите, что ваш обменник не зарабатывает, а теряет деньги.
У меня же при аналогичной ситуации было бы так. Цена покупки ещё терры была 500 (как и в вашем случае), далее у Вас цена продажи терры тоже была бы 500, а вот у меня благодаря спреду была бы уже 750.
То есть Вы видите разницу, да при таком резком спаде арбитражерам было бы ещё выгодно покупать у меня по 750 и продавать за 900, но я бы уже зарабатывал, так как мы купили за 500, а продаем за 750 минимум.
Вы же купили за 500 и продаете за 500, получая только комиссию, у меня же обменник получает и комиссию и спред.