﻿---
title: "Как выбрать окно TWAP"
description: "Выбирайте период TWAP по стоимости манипуляции, глубине рынка, задержке цены, доступным наблюдениям и риску протокола, а не по универсальной длительности."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Как выбрать окно TWAP

> Только в образовательных целях; это не инвестиционная рекомендация и не совет по безопасности. Ошибочный ценовой оракул может вызвать неверные ликвидации, недообеспеченные займы и убытки протокола.

<a id="answer"></a>

## Краткий ответ

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

Это расчёт бюджета риска, а не выбор между 5 минутами, 30 минутами и 1 часом. Зафиксируйте пул и метод усреднения, допустимые ошибку и задержку, извлекаемую стоимость, цену атаки, историю наблюдений и аварийное поведение. Повторяйте анализ при изменении ликвидности, стимулов, производства блоков, лимитов залога или структуры рынка.

<a id="mechanism"></a>

## Как это работает

Оракул с аккумулятором записывает цену во времени. Для арифметического аккумулятора среднее от `t1` до `t2` равно:

`TWAP(t1,t2) = (cumulativePrice(t2) - cumulativePrice(t1)) / (t2 - t1)`

Uniswap v2 накапливает цену в начале каждого блока, а потребитель хранит два значения. Uniswap v3 хранит наблюдения накопленного тика, поэтому преобразование среднего тика даёт взвешенное по времени **геометрическое** среднее. Способ усреднения, направление котировки, ёмкость, округление и обновление входят в спецификацию. Не всякий TWAP является арифметическим средним спотовых выборок.

Используйте такой процесс:

1. **Определите функцию потерь.** Запишите влияние цены на заём, ликвидацию, выпуск, погашение или расчёт и установите максимальные ошибку и задержку для роста и падения.
2. **Измерьте исполнимую ликвидность.** Смоделируйте резервы, комиссии и активную ликвидность по всему ценовому пути атаки. TVL и недавний объём сами по себе устойчивость не доказывают.
3. **Ограничьте выигрыш атакующего.** Учтите лимиты залога и займов, бонусы ликвидации, открытые позиции, совместимость с другими протоколами и прибыль до паузы. Сравнивайте цену атаки со всей извлекаемой стоимостью.
4. **Смоделируйте возможные атаки.** Проверьте искажение одного и нескольких блоков, flash-капитал, контроль proposer или порядка, арбитраж, back-running, перегрузку и закрытие позиции. Исследования показывают, что линейная зависимость цены атаки от окна может не работать при сильной модели атакующего.
5. **Переберите окна.** Для каждого периода смоделируйте исторические скачки и враждебные пути. Отбросьте варианты с прибыльной манипуляцией или недопустимо старой ценой.
6. **Добавьте независимые меры.** Используйте лимиты риска, проверку отклонения от независимой цены, предел давности, консервативное обеспечение и проверенные правила паузы или резерва. Они ограничивают ущерб, но не делают плохой источник безопасным.

Результат относится только к данному пулу, уровню комиссии, сети, реализации, паре и состоянию протокола. Копирование окна в 30 минут не копирует чужую ликвидность и предел потерь.

<a id="example"></a>

## Пример

Пусть упрощённый арифметический 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` неприменимо к геометрическому среднему. Настоящая проверка должна воспроизвести точную формулу с наблюдениями, активной ликвидностью, комиссиями, порядком блоков и позициями.

<a id="risks"></a>

## Риски и меры контроля

- **Слишком короткое окно:** нескольких искажённых блоков может хватить для прибыли. Усильте источник или рынок, снизьте риск либо используйте более разнообразный ориентир.
- **Слишком длинное окно:** оракул отстаёт от скачка, задерживает ликвидацию при падении или недооценивает залог при росте. Измерьте худшую задержку и задайте консервативные параметры.
- **Ошибка оценки ликвидности:** TVL может быть неактивным, узко сосредоточенным, односторонним или вне пути атаки. Используйте исполнимую глубину на нужных тиках и ценах.
- **Сбой наблюдений:** нехватка истории, старые данные, неинициализированная ёмкость, неверные время, пул или направление делают расчёт недействительным. Выполняйте revert или переходите в описанное безопасное состояние без скрытой подмены.
- **Неполная модель атакующего:** flash-ликвидность, proposer нескольких блоков, порядок и межпротокольная прибыль снижают чистые затраты. Проводите стресс-тест; «комиссия на минуты» не доказательство.
- **Изменения управления и рынка:** миграция, комиссии, новый залог, рост лимитов, обновление или смена сети могут отменить результат. Контролируйте входные данные и задайте пороги пересмотра.
- **Сбой резерва:** независимый источник может отличаться охватом, десятичными знаками, задержкой и отказами. Точно задайте паузу, отказ, ограничение или переключение и проверьте путь on-chain.

До запуска опубликуйте единицы, направление, метод, окно, минимальную историю, критерии пула, лимиты и поведение при сбое. Затем следите за отклонением от ориентира и экономическими входами модели атаки.

<a id="misconceptions"></a>

## Распространённые заблуждения

- **«Чем длиннее, тем всегда безопаснее».** Время атаки может вырасти, но растёт и задержка; слабая ликвидность и неполная модель не исправляются.
- **«TWAP за 30 минут — отраслевая гарантия».** Длительность — лишь один параметр наряду с глубиной, активной ликвидностью, комиссиями, блоками, формулой и риском.
- **«Flash loan не влияет на TWAP».** Он снимает ограничение капитала внутри транзакции. Результат зависит от выборки, доступной части окна и окружающей логики.
- **«Высокий TVL означает высокую цену манипуляции».** Только исполнимая ликвидность на нужном ценовом пути прямо сопротивляется смоделированной сделке.
- **«TWAP — текущая рыночная цена».** Это среднее исторических on-chain состояний одного рынка; оно намеренно запаздывает и может не отражать широкий рынок.

<a id="related"></a>

## Похожие темы

- [Пул ликвидности](/crypto/liquidity-pool/)
- [Ликвидация](/crypto/liquidation/)
- [Атаки на оракулы](/crypto/oracle-attack/)
- [Устаревшие цены оракула](/crypto/oracle-price-staleness/)
- [Оракул TWAP](/crypto/oracle-twap/)

<a id="sources"></a>

## Источники

- [Uniswap v2 Core](https://docs.uniswap.org/whitepaper.pdf) - Uniswap (дата обращения: 2026-08-21)
- [Uniswap v3 Core](https://app.uniswap.org/whitepaper-v3.pdf) - Uniswap (дата обращения: 2026-08-21)
- [Uniswap v3 TWAP Oracles in Proof of Stake](https://blog.uniswap.org/uniswap-v3-oracles) - Uniswap Labs (дата обращения: 2026-08-21)
- [TWAP Oracle Attacks: Easier Done than Said?](https://doi.org/10.1109/ICBC54727.2022.9805499) - IEEE (дата обращения: 2026-08-21)

Source: https://wiki.fcontext.com/ru/crypto/twap-window-selection/index.mdx
