Автоматизований маркет-мейкер не приймає оферти та пропозиції від покупців і продавців. Він встановлює ціну угоди на основі пулу з двох токенів за допомогою формули — найчастіше формули постійного добутку, x*y=k, згідно з документацією розробників Uniswap. Співвідношення резервів пулу встановлює ціну до угоди, але оскільки сама угода змінює це співвідношення, фактично сплачена ціна гірша за початково оголошену, якщо угода не є дуже малою порівняно з розміром пулу.
Що роблять пул і формула
Ліквідність — це смартконтракт, який зберігає резерви двох токенів — наприклад, ETH і USDC — якими будь-хто може торгувати безпосередньо, згідно з блогом Uniswap. Постачальники ліквідності вносять обидва токени в рівній вартості, щоб запустити пул і встановити початкове значення константи k, яка є добутком двох кількостей резервів, згідно з блогом Uniswap. З цього моменту кожен обмін повинен залишати x, помножене на y, рівним тому самому k. Документація розробників Uniswap описує k як інваріант, який має залишатися постійним або збільшуватися після кожної угоди. Оскільки баланси двох резервів повинні завжди множитися на одне й те саме число, вилучення одного токена з пулу означає, що інший має збільшитися, щоб компенсувати це, і саме ця зміна співвідношення й змінює ціну.
Проведемо розрахунки: купівля 1 ETH з пулу 10 ETH / 20 000 USDC
Блог Uniswap наводить розрахований приклад. Почніть з пулу 10 ETH і 20 000 USDC. Константа дорівнює 10 помножити на 20 000, тобто 200 000. На цій початковій точці пул вказує на спот-ціну 1 ETH за 2 000 USDC.
Зараз трейдер купує 1 ETH. Резерв ETH у пулу зменшується до 9. Щоб зберегти константу на рівні 200 000, резерв USDC повинен зростати до 200 000, поділених на 9, що становить приблизно 22 222,22 USDC, згідно з власним розрахунком блогу Uniswap. Трейдер внес 22 222,22 мінус 20 000, або 2 222,22 USDC, щоб отримати цей 1 ETH. Його ефективна ціна за куплений ETH становить 2 222,22 USDC — не ті 2 000 USDC, які пул пропонував до угоди.
Цей розрив, 2 222,22 USDC проти початкового котування 2 000 USDC, називається прослизанням. Це не комісія і не поломка; це формула, яка робить саме те, що має робити — перепризначає ціну пулу відповідно до зміни резервів. У блозі Uniswap зазначається, що більші угоди відносно розміру пулу викликають більше прослизання, тоді як глибший пул поглинає ту саму угоду з меншим рухом ціни. Ту саму думку підтверджує документація для розробників Uniswap, яка описує цей ефект як вплив ціни: більші угоди відносно глибини пулу зміщують ціну сильніше, а менші угоди виконуються ближче до поточної ринкової ціни.
Блог Uniswap також надає простіше роздрібне пояснення того самого механізму: користувач, який обмінює USDC на суму $100 на ETH, бачить курс, розрахований у реальному часі за допомогою формули постійного добутку, а смартконтракт отримує USDC і повертає ETH в одній транзакції, перебалансовуючи пул у процесі.
Там, де звичайна формула перестає застосовуватися
Арифметика x*y=k, зазначена вище, описує пул стилю Uniswap v2, де ліквідність розподілена по всьому можливому діапазону цін. Документація розробників Uniswap стверджує, що у v3 і v4 ця формула застосовується лише всередині обраного діапазону цін кожного постачальника ліквідності — це дизайн, який називається концентрована ліквідність. У v3 позиція постачальника в цьому діапазоні представляється як ненадійний токен ERC-721 через контракт під назвою NonfungiblePositionManager; у v4 позиції відстежуються за допомогою PositionManager з використанням ERC-6909 для внутрішнього обліку, згідно з тією ж документацією. Практична наслідок полягає в тому, що два пули, що торгують тією ж парою, на різних версіях Uniswap або з різними діапазонами ліквідності, обраними їхніми постачальниками, не змінять ціну на однакову суму при ідентичній угоді, хоча обидва описуються як працюючі за формулою постійного добутку.
Uniswap і Balancer належать до ширшої групи, яку стаття 2020 року Жильємо Анжеріса та Таруна Чітри називає константними функційними маркет-мейкерами (CFMM) — автоматизованими маркет-мейкерами, чиє ціноутворення базується на певній фіксованій функції від резервів пулу, з яких x*y=k є одним із прикладів. Та ж стаття зазначає, що не для кожної пари активів слід використовувати саме цю криву. Стейблкоїни, які прив’язані до приблизно $1, але коливаються в вузькому діапазоні навколо цього значення, ефективніше цінуються за допомогою більш плоскої кривої поблизу підстави, щоб торгова комісія залишалася низькою, коли пара близька до $1, і зростала, коли вона відхиляється — підхід, який автори статті приписують дизайну StableSwap від Curve. Основна ідея та сама, що й у Uniswap — резерви та інваріант, що визначає ціну — але форма кривої, а отже, й арифметика, яку трейдер повинен використовувати, відрізняється.
Наскільки великий цей ринок був
Стаття Ангеріса та Чітри, датована березнем 2020 року, навела певні цифри щодо ландшафту DeFi, який вона описувала на той момент. У ній зазначалося, що на той час DEX тримали приблизно 100 мільйонів доларів США цифрових активів, а щоденний обсяг торгівлі іноді перевищував 10 мільйонів доларів США на добу. Одна з цифр у статті, заснована на даних DeFi Pulse та датована 12 лютого 2020 року, показувала, що контракти CFMM тримали 129,7 мільйона доларів США проти 0,721 мільйона доларів США, які були заблоковані у мейкерах прогнозних ринків на основі LMSR, таких як Augur та Gnosis. Та сама стаття зазначала, що Uniswap був створений за допомогою гранту в розмірі 100 000 доларів США від Ethereum Foundation, на відміну від 24 мільйонів доларів США, зібраних 0x, та 153 мільйонів доларів США, зібраних Bancor у рамках початкових пропозицій монет, і стверджувала, що на момент написання статті Uniswap мав приблизно в п’ять–десять разів більше загальної ліквідності, ніж ці два конкуренти разом. Ці цифри описують ринок, який існував п’ять років тому, і корисні лише як історична ілюстрація того, як швидко AMM з простим дизайном перевершив більш фінансово забезпечені та складніші альтернативи — вони нічого не говорять про поточний розмір будь-яких із цих протоколів.
Що ця сторінка вам не розповідає
Ця сторінка пояснює формулу постійного добутку, як вона задокументована для пулів типу Uniswap v2, використовуючи єдиний наведений числовий приклад у джерелах. Вона не розглядає математику концентрованої ліквідності Uniswap v3 чи v4, ні криву StableSwap, яку використовує Curve, оскільки жодне зі звернених джерел не надає пронумерованого прикладу для цих випадків — лише опис того, як вони відрізняються.
Приклад з 10 ETH / 20 000 USDC, наведений вище, не має комісій. Документація розробників Uniswap стверджує, що комісії за обмін налаштовуються для кожного пулу та версії протоколу, і що протокольні комісії можуть застосовуватися, якщо вони увімкнені через управління, але жоден з використаних джерел не вказує реального відсотка комісії для будь-якого конкретного пулу, тому ціна виконання 2 222,22 USDC, розрахована вище, була б трохи вищою на реальному пулі з комісіями.
Блог Uniswap попереджає, не наводячи цифр, що кінцева ціна виконання трейдера може трохи відрізнятися від початкового котування, що відображається на екрані, особливо коли ліквідність низька або активність різко зростає. Жоден із використаних джерел не пояснює, як такі методи, як сендвіч-трейдинг, взаємодіють з цією різницею під час живої транзакції, крім загального попередження.
Нарешті, дані за 2020 рік щодо загальної заблокованої вартості та зборів коштів через ICO — це знімок одного моменту в історії ринку: на 12 лютого 2020 року для порівняння TVL і на час публікації статті у березні 2020 року для порівняння зборів коштів. Їх не слід сприймати як актуальні дані для Uniswap, 0x, Bancor чи ширшого ринку DeFi.
Джерела
Кожен з наведених фактів походить з одного з цих звітів. Де вони розходяться, у статті про це зазначено.



