Представь ситуацию: ты заходишь в Uniswap, вводишь сумму для обмена ETH на USDC, а интерфейс показывает "Slippage: 2.3%". Большинство просто кликают "Swap" дальше, не понимая, что только что согласились потерять 2.3% от суммы сделки. Причём эти деньги не уходят никакому посреднику — они исчезают из-за математики пулов ликвидности.

Когда я впервые столкнулся с этим в 2020 году на Curve, пытаясь обменять 50 ETH, slippage показывал 8%. Я чуть не слил сделку, думая, что это баг интерфейса. Оказалось — это фундаментальное свойство автоматических маркетмейкеров (AMM), на которых работают все децентрализованные биржи.

В этом материале разберём, как работает DEX изнутри: почему цена меняется прямо во время твоей транзакции, откуда берётся slippage и как устроены пулы ликвидности на примере конкретных расчётов.

Почему классические биржи не работают в блокчейне

Традиционная биржа — это Order Book (книга заявок). Ты выставляешь заявку "куплю 100 акций Газпрома по 300₽", кто-то выставляет "продам 100 акций по 299₽". Биржа матчит заявки, когда цены сходятся — сделка происходит.

На бумаге звучит просто. Но попробуй реализовать это в Ethereum:

Проблема #1: Пропускная способность Ethereum обрабатывает ~15 транзакций в секунду. Binance — 1.4 миллиона ордеров в секунду в пиковые моменты. Даже Layer 2 решения вроде Arbitrum (4000 TPS) не дотягивают до централизованных бирж.

Проблема #2: Стоимость газа Каждое обновление Order Book — это транзакция. Если ты хочешь передвинуть свою заявку с 2000$ за ETH на 2001$, заплатишь $5-50 комиссии в зависимости от загрузки сети. На активном рынке тебе пришлось бы тратить тысячи долларов в день только на обновление цен.

Проблема #3: Маркетмейкеры Кто будет создавать ликвидность для пар типа SHIB/USDT? На централизованных биржах это делают профессиональные маркетмейкеры — компании с алгоритмами, которые выставляют заявки на покупку и продажу, получая прибыль от спреда. В блокчейне без них книга заявок превращается в пустыню.

В 2016 году Виталик Бутерин предложил радикальное решение: а что, если вообще избавиться от книги заявок?

AMM: как работает автоматический маркетмейкер

Вместо сопоставления заявок покупателей и продавцов, AMM использует математическую формулу и пул активов.

Базовая механика пула ликвидности

Пул ликвидности — это смарт-контракт, который держит два актива в пропорции 50/50 по стоимости. Например:

  • 100 ETH
  • 200,000 USDC

Если 1 ETH стоит 2000 USDC, пул сбалансирован. Формула, которая управляет ценой:

x × y = k

Где:

  • x — количество первого токена (ETH)
  • y — количество второго токена (USDC)
  • k — константа произведения

В нашем примере: 100 × 200,000 = 20,000,000. Это число k остаётся постоянным при каждой сделке (технически оно чуть растёт за счёт комиссий, но для понимания механики примем его за константу).

Как меняется цена при обмене

Покупатель приходит и хочет купить 1 ETH за USDC. Что происходит:

Шаг 1: Покупатель отправляет 2000 USDC в пул

  • ETH в пуле: 100
  • USDC в пуле: 200,000 + 2,000 = 202,000

Шаг 2: Пул отдаёт покупателю 1 ETH

  • ETH в пуле: 100 - 1 = 99
  • USDC в пуле: 202,000

Шаг 3: Новая цена ETH в пуле 202,000 ÷ 99 = 2,040 USDC за 1 ETH

Цена выросла на 2% от одной сделки! Почему? Потому что ETH в пуле стал более дефицитным. Чем меньше остаётся ETH, тем дороже он становится — это автоматический механизм балансировки спроса и предложения.

Почему невозможно опустошить пул

Математика формулы x × y = k устроена так, что полностью забрать один из активов невозможно. Попробуем купить весь оставшийся ETH:

Чтобы купить все 99 ETH, нужно добавить столько USDC, чтобы:

  • 0 (ETH) × (202,000 + X) = 20,000,000

Но это уравнение не имеет решения — X стремится к бесконечности. С каждым новым ETH, который ты покупаешь, цена следующего растёт экспоненциально.

Когда я тестировал это на Uniswap V2 в testnet, попытка купить 90% пула приводила к slippage в 400%+. Формула защищает пул от полного опустошения математически.

Slippage: почему ты платишь больше, чем ожидал

Slippage (проскальзывание) — это разница между ожидаемой ценой и фактической ценой исполнения сделки.

Расчёт slippage на примере

Вернёмся к нашему пулу: 100 ETH и 200,000 USDC. Покупатель хочет купить 10 ETH.

Текущая цена: 1 ETH = 2,000 USDC

Ожидание покупателя: заплатить 10 × 2,000 = 20,000 USDC

Но на практике:

Шаг 1: Добавляем USDC, забираем ETH Чтобы забрать 10 ETH из пула, нужно добавить столько USDC, чтобы константа k сохранилась:

  • После сделки в пуле останется: 90 ETH
  • Сколько нужно USDC: (200,000 + X) × 90 = 20,000,000
  • X = (20,000,000 ÷ 90) - 200,000 = 22,222 USDC

Фактическая цена: 22,222 ÷ 10 = 2,222 USDC за 1 ETH

Slippage: (2,222 - 2,000) ÷ 2,000 = 11.1%

Ты заплатил на 11% больше, чем показывала цена до начала сделки. Эта разница не досталась никому конкретно — она распределилась между всеми держателями LP-токенов (поставщиками ликвидности) через изменение соотношения активов в пуле.

Факторы, влияющие на slippage

Размер пула В пуле с $1M ликвидности сделка на $10k даст slippage ~1%. В пуле с $100k — уже 10%+. Поэтому крупные киты используют Curve Finance — там пулы по $500M+, и даже обмен на $1M проходит с минимальным проскальзыванием.

Размер твоей сделки Чем больше % пула ты пытаешься "съесть", тем выше slippage. На Uniswap есть эмпирическое правило: если твоя сделка больше 1% от TVL пула, жди значительного проскальзывания.

Волатильность Между моментом подписания транзакции и её попаданием в блок может пройти 12-30 секунд. За это время цена в пуле меняется от других сделок. Твоя транзакция может вообще не пройти, если slippage превысит установленный тобой tolerance.

Настройка slippage tolerance

В Uniswap, Curve, Balancer — везде есть настройка максимального допустимого slippage:

  • 0.1-0.5%: для стейблкоинов (USDC/USDT) и крупных пулов
  • 1-2%: для популярных пар типа ETH/USDC
  • 3-5%: для волатильных токенов или мелких пулов
  • 5%+: крайний случай для экзотических токенов

Если фактический slippage превысит установленный лимит, смарт-контракт откатит транзакцию. Ты потеряешь только газ, но не получишь худшую цену, чем готов принять.

В моей практике оптимальные настройки для разных ситуаций:

  • Обмен стейблов на Curve: 0.1% slippage tolerance, обычно фактический slippage ~0.01%
  • Покупка ETH на Uniswap: 0.5%, при ликвидности пула $100M+ реальный slippage 0.1-0.3%
  • Обмен низколиквидных DeFi токенов: ставлю 5%, но внимательно смотрю на предварительный расчёт — если показывает 4.8%, лучше подождать или разбить сделку на части

История AMM: от идеи до $100B индустрии

2016: концепция Виталика

Виталик Бутерин опубликовал пост на Reddit, где предложил использовать формулу постоянного произведения для создания on-chain обменников. Идея была проста: вместо order book — математическая кривая, которая автоматически определяет цену.

На тот момент это казалось теоретическим упражнением. Комьюнити скептически отнеслось к идее: "Кто будет пользоваться биржей с проскальзыванием, когда есть Poloniex и Bittrex?"

2017: Bancor привлекает $153M на ICO

Проект Bancor (сейчас практически мёртв) первым попытался реализовать AMM в продакшене. Они собрали $153M — один из крупнейших ICO того времени. Но технически продукт был сырой: высокий slippage, дорогой газ, медленные свопы.

Bancor использовал модифицированную формулу с "умными токенами", которая оказалась слишком сложной. Проект так и не взлетел, несмотря на огромный капитал.

2018: Uniswap V1 меняет игру

Хейден Адамс (Hayden Adams), бывший инженер Siemens, уволенный в 2017 году, потратил год на разработку Uniswap. Он реализовал чистую версию идеи Виталика — без лишних усложнений, просто формула x × y = k и минималистичный смарт-контракт.

Запуск в ноябре 2018 прошёл незаметно. Первые месяцы объём торгов был $10-50k в день. Но летом 2020 года, во время DeFi Summer, Uniswap взорвался:

  • Июль 2020: $500M объём в месяц
  • Сентябрь 2020: $15B объём в месяц
  • Май 2021: пиковый дневной объём $10B

К 2025 году Uniswap обработал транзакций на $2+ триллиона, став крупнейшей DEX и доказав работоспособность AMM-модели.

Эволюция формул

Uniswap V2 (2020): добавил возможность создавать любые ERC20/ERC20 пары, а не только ETH-пары как в V1.

Curve Finance (2020): использует StableSwap formula — гибридную кривую, которая для стейблкоинов даёт slippage в 10-100 раз ниже, чем классический AMM. Идеально для обмена USDC ↔ USDT ↔ DAI.

Uniswap V3 (2021): концентрированная ликвидность. Поставщики могут указать ценовой диапазон, где их ликвидность активна. Это увеличивает капиталоэффективность в 4000x в теории, в 2-10x на практике.

Balancer (2020): пулы с любыми пропорциями (не только 50/50), до 8 токенов в одном пуле. Формула: ∏(x_i^w_i) = k, где w_i — веса токенов.

Практический кейс: сравнение slippage на разных DEX

Возьмём реальную задачу: обменять 100 ETH на USDC. Цена ETH = $3,500.

Uniswap V2

Пул ETH/USDC: $150M TVL (~42,857 ETH)

Расчёт:

  • Моя сделка = 100 ETH = 0.23% пула
  • Предварительный slippage: ~0.5%
  • Фактическая цена исполнения: $3,482 за ETH (вместо $3,500)
  • Итого получу: ~$348,200 вместо $350,000
  • Потеря от slippage: $1,800

Комиссия: 0.3% = $1,050

Общие потери: $2,850 (0.81%)

Curve Finance

Пул 3pool (USDC/USDT/DAI): $500M TVL Обмениваю ETH → USDC через два хопа: ETH → USDT (на Uniswap), USDT → USDC (на Curve)

Первый хоп (Uniswap ETH/USDT):

  • Slippage: ~0.5%
  • Комиссия: 0.3%

Второй хоп (Curve USDT/USDC):

  • Slippage: ~0.01% (стейблкоины)
  • Комиссия: 0.04%

Общие потери: ~0.85% (хуже, чем прямой свап на Uniswap)

Uniswap V3

Пул ETH/USDC (concentrated liquidity): $250M TVL

Большая часть ликвидности сконцентрирована в диапазоне $3,400-$3,600.

Расчёт:

  • Эффективная ликвидность в моём ценовом диапазоне: ~$400M
  • Моя сделка = 100 ETH = 0.088% эффективного пула
  • Slippage: ~0.2%
  • Комиссия: 0.05% (пул с низкой комиссией)

Общие потери: ~$875 (0.25%)

Вывод: Uniswap V3 выигрывает для этой сделки благодаря концентрированной ликвидности.

1inch Aggregator

Умный роутер, который разбивает сделку между несколькими DEX:

  • 60 ETH через Uniswap V3
  • 30 ETH через Curve (через промежуточные стейблы)
  • 10 ETH через Balancer

Итоговый slippage: 0.18%
Комиссии: 0.15% (средневзвешенная)
Общие потери: ~$1,150 (0.33%)

Чуть хуже, чем чистый Uniswap V3, но разница незначительная. Выгода агрегаторов проявляется на менее ликвидных парах.

Распространённые ошибки при работе с DEX

Ошибка #1: Игнорирование предупреждений о высоком slippage

Интерфейс Uniswap показывает: "Price impact: 12%". Новички кликают "Swap anyway", думая, что это просто комиссия. Это не комиссия — это потеря части твоих активов из-за математики пула.

Решение: Если slippage >3%, всегда проверяй:

  • Размер пула (может, он слишком маленький?)
  • Можно ли разбить сделку на части?
  • Есть ли альтернативные пулы на других DEX?

Ошибка #2: Обмен через неоптимальные пары

Хочешь обменять AAVE на UNI. Прямого пула AAVE/UNI нет. Варианты:

Плохой путь:
AAVE → WBTC → UNI (два хопа через низколиквидные пулы)
Slippage: 2.5% + 1.8% = 4.3%

Хороший путь:
AAVE → ETH → UNI (два хопа через высоколиквидные пулы)
Slippage: 0.3% + 0.4% = 0.7%

Агрегаторы типа 1inch, Matcha, Paraswap делают это автоматически, но если свапаешь через нативный интерфейс DEX — думай о маршруте.

Ошибка #3: Неправильная настройка slippage tolerance

Слишком низкий tolerance (0.1%) на волатильной паре: Транзакция провалится при малейшем движении цены. Потеряешь газ ($5-20), не получив ничего взамен.

Слишком высокий tolerance (10%) на стейблах: Открываешь дверь для MEV-ботов. Они могут вклиниться в блок перед твоей транзакцией (frontrun), искусственно сдвинуть цену в пуле, и ты получишь худшую цену, чем мог бы.

Рекомендации:

  • Стейблы: 0.1-0.5%
  • Основные токены (ETH, WBTC): 0.5-1%
  • Альткоины: 1-3%
  • Мем-коины и микрокапы: 5%+, но с осторожностью

Ошибка #4: Свап во время высокой волатильности

Цена ETH падает на 5% за 10 минут. Ты в панике пытаешься свапнуть ETH в USDC на Uniswap.

Что происходит:

  1. Арбитражёры активно выравнивают цену в пуле с CEX
  2. Пул временно разбалансирован
  3. Твоя транзакция попадает в очередь, пока арбитраж идёт полным ходом
  4. Slippage может быть в 2-3 раза выше обычного

Решение: В момент резких движений либо жди стабилизации 5-10 минут, либо используй лимитные ордера через CoW Swap или 1inch Limit Order.

Продвинутые техники минимизации slippage

Техника #1: TWAP (Time-Weighted Average Price)

Вместо одной большой сделки разбиваешь её на 10-20 маленьких с интервалом в несколько минут.

Пример: Нужно продать 500 ETH. Вместо одной сделки делаешь:

  • 25 ETH каждые 5 минут
  • Общее время исполнения: 2 часа

Каждая маленькая сделка даёт slippage 0.1-0.2% вместо 5%+ от одной крупной.

Инструменты:

  • Gelato Network — автоматизация TWAP-ордеров
  • CoW Swap — batch auctions, которые группируют сделки для снижения slippage
  • Custom скрипты через Ethers.js для полного контроля

Техника #2: Использование пулов с концентрированной ликвидностью

Uniswap V3 позволяет поставщикам ликвидности выбирать ценовой диапазон. Большинство концентрирует ликвидность в узком диапазоне вокруг текущей цены.

Как этим пользоваться: Смотри на распределение ликвидности в интерфейсе Uniswap V3. Если видишь большую концентрацию в диапазоне $3,400-$3,600 для ETH/USDC, и текущая цена $3,500, твой свап внутри этого диапазона получит минимальный slippage.

Но если цена выходит за границы концентрированной ликвидности (например, внезапно падает до $3,350), slippage резко возрастёт.

Техника #3: Арбитраж между DEX и CEX

Если видишь разницу в ценах между Binance и Uniswap >0.5%, можно заработать:

  1. Купить на Uniswap (где дешевле)
  2. Вывести на Binance
  3. Продать на Binance (где дороже)

Но учитывай:

  • Комиссию за вывод с DEX на CEX (bridging)
  • Время подтверждения транзакций (5-30 минут)
  • Риск изменения цены за это время

В моей практике такой арбитраж работал только на крупных движениях (>2% спред) и требовал автоматизации через ботов. Вручную редко успеваешь.

Техника #4: Flash loans для оптимизации маршрута

Продвинутая техника для разработчиков. С помощью flash loan берёшь большую сумму (например, 10,000 ETH), делаешь сложный мультихоп-свап, возвращаешь кредит — всё в одной транзакции.

Пример: Хочешь обменять USDC на редкий токен XYZ. Прямого пула нет, ликвидность через ETH низкая.

С flash loan:

  1. Берёшь 10,000 ETH из AAVE
  2. Свапаешь часть на USDC, создавая временную ликвидность
  3. Свапаешь свои USDC на XYZ по лучшей цене
  4. Возвращаешь 10,000 ETH + 0.09% комиссия

Это работает, потому что временное добавление ликвидности улучшает цену для твоей сделки больше, чем стоит комиссия за flash loan.

Инструменты:

  • Furucombo — визуальный конструктор для сложных DeFi-стратегий
  • DeFi Saver — автоматизация с flash loans

Риски, о которых молчат

Impermanent Loss (IL)

Если ты поставщик ликвидности в пуле ETH/USDC, то при изменении цены ETH ты теряешь деньги по сравнению с простым холдом.

Пример: Добавил в пул 1 ETH ($2,000) + 2,000 USDC. Итого $4,000.

Через месяц ETH вырос до $4,000. Твоя доля пула теперь:

  • 0.707 ETH ($2,828)
  • 2,828 USDC
  • Итого: $5,656

Если бы просто держал: 1 ETH ($4,000) + 2,000 USDC = $6,000

Impermanent Loss: $344 (5.7%)

Этот убыток "impermanent" (непостоянный), потому что исчезает, если цена вернётся к начальной. Но если выводишь ликвидность после движения цены — убыток фиксируется.

Компенсация: комиссии от свопов и farming rewards. Если в пуле высокая активность, заработанные комиссии перекрывают IL.

MEV (Maximal Extractable Value)

Боты видят твою pending транзакцию в mempool и могут:

Frontrun: Вклиниться перед тобой, купить токен, подняв цену. Ты покупаешь дороже.

Sandwich attack: Бот покупает перед тобой (поднимая цену), ты покупаешь дорого, бот продаёт сразу после тебя (опуская цену назад).

Защита:

  • Используй Flashbots RPC — транзакции идут напрямую к майнерам, минуя публичный mempool
  • Private transactions на Optimism, Arbitrum
  • Лимитные ордера через CoW Swap — защищены от MEV встроенной механикой

Rug pulls в низколиквидных пулах

Создатель токена может:

  1. Создать пул TOKEN/ETH
  2. Добавить минимальную ликвидность ($1,000)
  3. Ты покупаешь токен
  4. Создатель выводит всю ликвидность из пула

Ты остаёшься с токеном, который невозможно продать.

Защита:

  • Проверяй ликвидность: минимум $100k для безопасной торговли
  • Смотри на locked liquidity: если создатель заблокировал LP-токены на 6+ месяцев (через Unicrypt, Team Finance), риск rug pull ниже
  • Используй RugDoc для проверки контрактов

Альтернативные модели: не только x × y = k

Curve: StableSwap formula

Для стейблкоинов формула x × y = k даёт слишком большой slippage. Curve использует гибрид между постоянной суммой (x + y = k) и постоянным произведением:

A × (x + y) + xy = k

Параметр A контролирует "плоскость" кривой. При A → ∞ кривая близка к x + y = k (идеально для стейблов). При A → 0 кривая близка к xy = k (как Uniswap).

Результат: Slippage для обмена USDC/USDT на Curve в 10-100 раз ниже, чем на Uniswap при той же ликвидности.

Balancer: Weighted pools

Формула:

∏(x_i^w_i) = k

Где w_i — вес i-того токена (сумма весов = 1).

Пример: Пул 80% WBTC / 20% USDC

  • Меньше impermanent loss, если веришь в рост WBTC
  • Поставщики ликвидности платят меньше IL за exposure к WBTC

Uniswap V4: Hooks

В 2024 Uniswap анонсировал V4 с поддержкой custom hooks — кастомной логики, которую можно добавить к пулам:

  • Dynamic fees (комиссия меняется от волатильности)

  • TW

  • Time-weighted average price (TWAP) oracles встроены в сам пул

  • Limit orders встроены в механику свопов

  • Take-profit и stop-loss без отдельного контракта

Это позволит создавать специализированные AMM под конкретные стратегии без развёртывания отдельных контрактов.

Практическая стратегия: как заработать на спредах

Самый безопасный способ — статусный трейдинг на спредах между биржами:

  1. Мониторь спреды. На Coingecko или DefiLlama ты видишь цену одного токена на разных DEX
  2. Находи арбитраж. Например, XYZ стоит 1.05$ на Uniswap V3 и 1.02$ на Curve
  3. Свапай в пуле с низкой ценой, затем в пуле с высокой
  4. Забирай прибыль минус комиссии (gas + swap fees)

Важно: Арбитраж работает в первые миллисекунды. Боты с Flashbots это ловят мгновенно. Но при достаточной ликвидности и низких комиссиях спреды существуют постоянно — нужна просто скорость выполнения.

Используй MEV-resistant инструменты:

  • CoW Swap (Coincidence of Wants) — ордера матчатся между собой, убирая MEV
  • 1inch Fusion Mode — батчевые аукционы вместо классических свопов
  • Balancer Batch Auctions — справедливое ценообразование

Итог

DeFi торговля — это не просто свап токенов. Это экосистема, где понимание формул пулов, рисков и защит означает разницу между прибылью и потерей.

Ключ к успеху:

  • Начни с крупных пулов (Curve для стейблов, Uniswap V3 для волатильных пар)
  • Не трогай flashbots и сложные стратегии, пока не поймёшь базу
  • Проверяй ликвидность и locked LP перед покупкой неизвестного токена
  • Используй private RPCs для защиты от MEV

Подписывайся на канал https://t.me/serg_defi — разбираю такие темы каждую неделю.