Назад в блог
ГайдыОбновлено 15 сентября 2026 г.·5 мин чтения

Как устроен агрегатор обменов: котировки, нормализация, маршрутизация и исполнение — для разработчиков

Архитектура любого агрегатора — и ончейн DEX-роутеров, и кросс-чейн мгновенных обменов: получение котировок от источников, приведение их к сравнимому чистому выходу, выбор маршрута по сумме, безопасное исполнение и обработка сбоев, которые важны в продакшене. Что общего у двух моделей и что различается.

Два вида агрегаторов, одна форма

«Агрегатор» покрывает два разных продукта с общей архитектурой:

  • Ончейн DEX-агрегаторы (1inch, Odos, Jupiter в Solana) маршрутизируют сделку токен-в-токен через AMM-пулы одной сети и исполняют её одной транзакцией, которую подписывает пользователь.
  • Кросс-чейн агрегаторы / мгновенные обмены (модель, которую использует SyntheticSwap) маршрутизируют конвертацию монета-в-монету между несвязанными сетями к источникам ликвидности, исполняя вне сети и рассчитываясь двумя ончейн-переводами.

У обоих одни и те же пять слоёв: адаптеры источников, нормализация котировок, выбор маршрута, исполнение и мониторинг. Вот что делает каждый слой и где две модели расходятся.

Слой 1 — Адаптеры источников

Каждый источник говорит на своём языке. Пул DEX выставляет резервы и функцию swap; провайдер ликвидности — API с эндпоинтом котировки, лимитами и эндпоинтом заявки. Задача адаптера — превратить каждое из этого в один интерфейс: при данных входном активе, выходном активе и сумме — что доставит этот источник и может ли он вообще доставить прямо сейчас?

Практические заботы, доминирующие в этом слое в продакшене:

  • Доступность. Источники падают или приостанавливают пары. Адаптер должен быстро отказывать и позволять маршрутизации продолжать без него.
  • Лимиты. У каждого источника есть минимум и максимум по паре; адаптер должен их отдавать, чтобы роутер не выбрал источник, который отклонит заявку.
  • Семантика комиссий. Котируемый выход уже за вычетом комиссии выплаты? Комиссия во входном активе или в выходном? Ошибка здесь — самая частая причина «оценка не совпала».
  • Идентичность актива. «USDT» — не один актив. Адаптер должен отображать именование каждого источника на канонический ключ (актив, сеть) — USDT в TRON и USDT в Ethereum — разные вещи с разными комиссиями и подтверждениями. Страницы пар SyntheticSwap несут сеть в URL (/swap/usdt-erc20/usdt-trc20) именно по этой причине.

Слой 2 — Нормализация

Роутер не может сравнивать курс с курсом. Он сравнивает чистый выход: количество выходного актива, которое пользователь реально получит после всех комиссий источника. Нормализация приводит ответ каждого адаптера к этой единственной цифре плюс метаданные: лимиты источника, требуемые подтверждения, ожидаемая комиссия выплаты и окно валидности.

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

Слой 3 — Выбор маршрута

Со сравнимыми котировками на руках выбор — то, чем продукт отличается от наивного «взять лучший курс»:

  • С учётом размера. Котировки запрашиваются на реальную сумму. Источник, лучший при $100, может быть худшим при $50 000 из-за глубины. Ончейн-роутеры моделируют это через резервы пулов (кривые constant-product или stable-swap); кросс-чейн роутеры запрашивают у каждого источника котировку на размер.
  • Разделённые маршруты. Ончейн-агрегаторы могут разбить одну сделку по нескольким пулам в одной транзакции, чтобы снизить ценовое воздействие. Кросс-чейн роутеры обычно выбирают один источник на заявку, потому что каждому источнику нужен свой депозитный адрес; разбиение предлагается пользователю как два обмена.
  • Мультихоп. Ончейн A → B может быть дешевле как A → USDC → B; роутер ищет пути. Кросс-чейн источники обычно маршрутизируют внутри себя, а агрегатор сравнивает итоговые выходы.
  • Ограничения. Отсечь источники, чьи лимиты исключают сумму, чья пара приостановлена или чья котировка устарела.

Выход этого слоя — один маршрут (или план разбиения) и одна цифра чистого выхода — число, которое видит пользователь.

Слой 4 — Исполнение

Здесь две модели расходятся сильнее всего.

Ончейн: агрегатор строит транзакцию, вызывающую его роутер-контракт с выбранным путём; пользователь подписывает; контракт исполняет атомарно — либо весь маршрут проходит и пользователь получает не меньше принятого минимума, либо транзакция откатывается. Допуск проскальзывания обеспечивается в контракте. Защита от MEV — отправка через приватный релей вместо публичного мемпула.

Кросс-чейн: атомарной транзакции между Bitcoin и Monero нет. Исполнение — конечный автомат:

  1. Создать заявку у выбранного источника; получить депозитный адрес, уникальный для заявки.
  2. Наблюдать за сетью депозита в ожидании транзакции на этот адрес; считать подтверждения против требования сети (2 для Bitcoin, 15 для Ethereum, 1 для USDT в TRON).
  3. При нужном числе исполнить сделку с источником по текущему курсу для пришедшей суммы (плавающий) или по зафиксированному (фиксированный).
  4. Отправить выплату; записать хэш транзакции; показать на странице статуса.
  5. Обработать исключения: сумма ниже минимума → возврат за вычетом комиссии; сумма отличается от заявки → пересчёт; отправлен не тот актив → эскалация.

Число подтверждений не настраивается ради скорости — это то, что делает шаг 3 безопасным против реорганизаций и заменённых транзакций.

Слой 5 — Мониторинг и прозрачность

Агрегатор, который не может показать свою работу, — чёрный ящик. Минимальная продакшен-телеметрия:

  • Задержка котировок, доля ошибок и доля побед по каждому источнику (как часто его выбирают).
  • Оценка против фактического выхода по каждой заявке — чтобы ловить ошибки семантики комиссий в слое адаптеров.
  • Распределение времени от депозита до выплаты по сетям — чтобы замечать перегрузку сети и зависшие заявки.

Показанные пользователям, те же данные становятся фичей. Страницы пар SyntheticSwap показывают полный выход для пробной суммы относительно среднего курса CoinGecko — прямое чтение результата слоя 3 — и оценку времени по подтверждениям из слоя 4.

Где разработчики ошибаются

  • Доверие полю «rate» источника. Всегда считайте чистый выход сами по правилам комиссий источника и сверяйте с исполненными заявками.
  • Тикер как идентичность. Сеть должна быть частью ключа актива с первого дня.
  • Оптимизация под демо-сумму. Выбор маршрута, протестированный только на $100, ломается на $10 000.
  • Игнорирование пути возврата. Депозиты ниже минимума и суммы с вычтенной комиссией — ежедневные события; поток для них — часть продукта, а не краевой случай.
  • Охват раньше качества маршрутизации. Сто пар с одним источником у каждой хуже двадцати пар с тремя источниками.

Частые вопросы

Мгновенный обмен — «просто фронтенд для одного провайдера»? Может быть — это тот сценарий отказа, который описывает статья. Настоящий агрегатор имеет адаптеры слоя 1 для нескольких источников и слой 3, который выбирает между ними на каждый запрос.

Почему кросс-чейн обмены не могут быть атомарными? Потому что Bitcoin, Monero и TRON не разделяют виртуальную машину. Атомарные обмены через HTLC существуют для некоторых пар, но непрактичны для Monero и для большинства пользователей; модель конечного автомата — работающее решение.

Как агрегаторы зарабатывают? Спред на чистом выходе, иногда доля комиссии источника. Честные показывают чистый выход и дают пользователям сравнивать.

Какой слой самый сложный? Адаптеры. Маршрутизация — хорошо изученная оптимизация; поддерживать корректными семантику комиссий, лимиты и простои двадцати источников — ежедневная работа.

Готовы обменять приватно?

Аккаунт не нужен. Начните за секунды.

Начать обмен →