Рассмотрим конкретный пример (рис. 6.6). Чтобы сосредоточиться на главном, во всех рассматриваемых ситуациях мы не будем брать в расчет комиссии за транзакции (плату за газ). Предположим, что инвестор на рынке Uniswap USDC/DAI имеет 4 DAI (актив A) и 4 USDC (актив B). При этом мгновенный обменный курс составляет 1 DAI:1 USDC, а инвариант равен 16 (x × y). Чтобы продать 4 DAI за USDC, инвестор депонирует 4 DAI в контракт и выводит 2 USDC. После этого баланс USDC будет равен 4–2 = 2, а баланс DAI – 4 + 4 = 8. Инвариант остается равным 16. Обратите внимание, что эффективный обменный курс теперь составляет 2 DAI:1 USDC. Изменение обменного курса связано с проскальзыванием из-за низкого уровня рыночной ликвидности. Величина инварианта определяет величину проскальзывания. Чтобы расширить пример, допустим, что на балансе контракта содержится 100 DAI и 100 USDC. В этом случае инвариант равен 10 000, но курс останется прежним. Теперь, если инвестору нужно продать 4 DAI за USDC, он может вывести 3,85 USDC, чтобы сохранить инвариант постоянным. Таким образом, проскальзывание получается гораздо меньшим при эффективном обменном курсе 1,04 DAI: 1 USDC.
Рис. 6.6. Механика автоматизированного маркет-мейкера Uniswap
Чтобы минимизировать проскальзывание, требуется глубокая ликвидность. Именно поэтому важно стимулировать инвесторов поставлять капитал на тот или иной рынок Uniswap. Поставщиком ликвидности может стать любой человек, предоставляющий активы для обеих сторон торговой пары по текущему обменному курсу[61]. Это увеличивает произведение сумм активов торговой пары (то есть увеличивает инвариант в соответствии с приведенной выше формулой). Исходя из предыдущего примера, можно утверждать, что увеличение значения инварианта приводит к уменьшению проскальзывания и, следовательно, к увеличению эффективной ликвидности. Мы можем думать об инварианте как о прямой мере ликвидности. Таким образом, предоставление ликвидности увеличивает инвариант, не влияя на цену, в то время как торговля против рынка влияет на цену, не затрагивая инвариант.
За каждую сделку на рынке Uniswap взимается комиссия в размере 0,3 %, которая возвращается в пул. Поставщики ликвидности получают эти комиссионные исходя из своего пропорционального вклада в пул ликвидности, из-за чего предпочитают рынки с большими объемами торгов. Этот механизм получения комиссионных идентичен модели cToken в системе Compound. Долю собственности олицетворяет токен под названием UNI. Например, токеном, представляющим право собственности в пуле DAI/ETH, является UNI DAI/ETH.
Фактически поставщики ликвидности на Uniswap получают пассивный доход пропорционально объему торгов на том рынке, на который они поставляют свои средства. Однако в случае вывода средств обменный курс базовых активов почти наверняка изменится. Это изменение порождает альтернативные издержки (непостоянные убытки), связанные с тем, что поставщик ликвидности может просто придерживать базовые активы и получать прибыль от движения их цены. Чтобы поставщики ликвидности оставались в плюсе, комиссионные сборы, зависящие от объема торгов, должны превышать эти непостоянные убытки. Следовательно, поставщикам ликвидности выгодно работать с торговыми парами со стейблкойнами, такими как USDC/DAI, поскольку высокая корреляция этих активов сводит непостоянные убытки к минимуму.
Модель ценообразования Uniswap k = x × y хорошо работает при неизвестной корреляции базовых активов. Эта модель рассчитывает одну и ту же величину проскальзывания при заданном уровне ликвидности для любых двух торговых пар. Однако на практике для торговой пары со стейблкойном мы ожидаем гораздо меньшего проскальзывания, чем для торговой пары с ETH, потому что заранее знаем, что цена стейблкойна должна быть близка к 1 доллару США. Модель ценообразования Uniswap позволяет зарабатывать арбитражерам, торгующим парами с высокой корреляцией, например стейблкойнами, потому что она не уменьшает проскальзывание (то есть не меняет форму кривой связывания) ожидаемым образом, и это уменьшает прибыль поставщиков ликвидности. По этой причине такие конкурирующие AMM, как Curve[62], которые специализируются на торговых парах с высокой корреляцией, могут каннибализировать ликвидность на этих типах рынков Uniswap.
Если нужной пары не существует, любой пользователь может создать торговую пару ERC-20/ERC-20 или ETH/ERC-20 на Uniswap, просто предоставив капитал для обеих ее сторон[63]. Пользователь задает начальный обменный курс, а арбитражеры смогут привести эту цену к истинной рыночной цене, если она от нее отклонится. По сути, пользователи платформы могут торговать любыми двумя поддерживаемыми токенами ERC-20 с помощью маршрутных контрактов, которые определяют оптимальный порядок свопов для минимизации проскальзывания в случае отсутствия прямых торговых пар.