Только в образовательных целях; это не инвестиционная рекомендация и не совет по безопасности. Ошибочный ценовой оракул может вызвать неверные ликвидации, недообеспеченные займы и убытки протокола.
Краткий ответ
Универсально безопасного окна TWAP нет. Выберите самое короткое окно, при котором прибыльная манипуляция конкретным пулом и протоколом всё ещё нереалистична, а затем убедитесь, что задержка при реальном движении цены приемлема. Более длинное окно обычно требует дольше влиять на рынок, но и старые цены остаются в среднем дольше. Оно не исправляет низкую или находящуюся вне нужного ценового пути ликвидность, чрезмерный риск и ошибки интеграции.
Это расчёт бюджета риска, а не выбор между 5 минутами, 30 минутами и 1 часом. Зафиксируйте пул и метод усреднения, допустимые ошибку и задержку, извлекаемую стоимость, цену атаки, историю наблюдений и аварийное поведение. Повторяйте анализ при изменении ликвидности, стимулов, производства блоков, лимитов залога или структуры рынка.
Как это работает
Оракул с аккумулятором записывает цену во времени. Для арифметического аккумулятора среднее от t1 до t2 равно:
TWAP(t1,t2) = (cumulativePrice(t2) - cumulativePrice(t1)) / (t2 - t1)
Uniswap v2 накапливает цену в начале каждого блока, а потребитель хранит два значения. Uniswap v3 хранит наблюдения накопленного тика, поэтому преобразование среднего тика даёт взвешенное по времени геометрическое среднее. Способ усреднения, направление котировки, ёмкость, округление и обновление входят в спецификацию. Не всякий TWAP является арифметическим средним спотовых выборок.
Используйте такой процесс:
- Определите функцию потерь. Запишите влияние цены на заём, ликвидацию, выпуск, погашение или расчёт и установите максимальные ошибку и задержку для роста и падения.
- Измерьте исполнимую ликвидность. Смоделируйте резервы, комиссии и активную ликвидность по всему ценовому пути атаки. TVL и недавний объём сами по себе устойчивость не доказывают.
- Ограничьте выигрыш атакующего. Учтите лимиты залога и займов, бонусы ликвидации, открытые позиции, совместимость с другими протоколами и прибыль до паузы. Сравнивайте цену атаки со всей извлекаемой стоимостью.
- Смоделируйте возможные атаки. Проверьте искажение одного и нескольких блоков, flash-капитал, контроль proposer или порядка, арбитраж, back-running, перегрузку и закрытие позиции. Исследования показывают, что линейная зависимость цены атаки от окна может не работать при сильной модели атакующего.
- Переберите окна. Для каждого периода смоделируйте исторические скачки и враждебные пути. Отбросьте варианты с прибыльной манипуляцией или недопустимо старой ценой.
- Добавьте независимые меры. Используйте лимиты риска, проверку отклонения от независимой цены, предел давности, консервативное обеспечение и проверенные правила паузы или резерва. Они ограничивают ущерб, но не делают плохой источник безопасным.
Результат относится только к данному пулу, уровню комиссии, сети, реализации, паре и состоянию протокола. Копирование окна в 30 минут не копирует чужую ликвидность и предел потерь.
Пример
Пусть упрощённый арифметический TWAP использует цену, которая мгновенно меняется со 100 до 70 и остаётся 70. Через 15 минут скользящее 30-минутное окно содержит по 15 минут каждой цены:
(15 x 100 + 15 x 70) / 30 = 85
Через 30 минут старые наблюдения 100 полностью выходят и TWAP достигает 70. Окно 5 минут достигает 70 через 5 минут, но атакующему также нужно меньше времени удерживать искажение. Если кредитный рынок оценивает залог около 85, когда исполнимая цена близка к 70, ликвидация может запоздать и создать плохой долг; другой сценарий может допускать медленную цену.
Пример показывает только задержку, не цену манипуляции, а 85 неприменимо к геометрическому среднему. Настоящая проверка должна воспроизвести точную формулу с наблюдениями, активной ликвидностью, комиссиями, порядком блоков и позициями.
Риски и меры контроля
- Слишком короткое окно: нескольких искажённых блоков может хватить для прибыли. Усильте источник или рынок, снизьте риск либо используйте более разнообразный ориентир.
- Слишком длинное окно: оракул отстаёт от скачка, задерживает ликвидацию при падении или недооценивает залог при росте. Измерьте худшую задержку и задайте консервативные параметры.
- Ошибка оценки ликвидности: TVL может быть неактивным, узко сосредоточенным, односторонним или вне пути атаки. Используйте исполнимую глубину на нужных тиках и ценах.
- Сбой наблюдений: нехватка истории, старые данные, неинициализированная ёмкость, неверные время, пул или направление делают расчёт недействительным. Выполняйте revert или переходите в описанное безопасное состояние без скрытой подмены.
- Неполная модель атакующего: flash-ликвидность, proposer нескольких блоков, порядок и межпротокольная прибыль снижают чистые затраты. Проводите стресс-тест; «комиссия на минуты» не доказательство.
- Изменения управления и рынка: миграция, комиссии, новый залог, рост лимитов, обновление или смена сети могут отменить результат. Контролируйте входные данные и задайте пороги пересмотра.
- Сбой резерва: независимый источник может отличаться охватом, десятичными знаками, задержкой и отказами. Точно задайте паузу, отказ, ограничение или переключение и проверьте путь on-chain.
До запуска опубликуйте единицы, направление, метод, окно, минимальную историю, критерии пула, лимиты и поведение при сбое. Затем следите за отклонением от ориентира и экономическими входами модели атаки.
Распространённые заблуждения
- «Чем длиннее, тем всегда безопаснее». Время атаки может вырасти, но растёт и задержка; слабая ликвидность и неполная модель не исправляются.
- «TWAP за 30 минут — отраслевая гарантия». Длительность — лишь один параметр наряду с глубиной, активной ликвидностью, комиссиями, блоками, формулой и риском.
- «Flash loan не влияет на TWAP». Он снимает ограничение капитала внутри транзакции. Результат зависит от выборки, доступной части окна и окружающей логики.
- «Высокий TVL означает высокую цену манипуляции». Только исполнимая ликвидность на нужном ценовом пути прямо сопротивляется смоделированной сделке.
- «TWAP — текущая рыночная цена». Это среднее исторических on-chain состояний одного рынка; оно намеренно запаздывает и может не отражать широкий рынок.
Похожие темы
Источники
- Uniswap v2 Core - Uniswap (дата обращения: 2026-08-21)
- Uniswap v3 Core - Uniswap (дата обращения: 2026-08-21)
- Uniswap v3 TWAP Oracles in Proof of Stake - Uniswap Labs (дата обращения: 2026-08-21)
- TWAP Oracle Attacks: Easier Done than Said? - IEEE (дата обращения: 2026-08-21)