Перейти к основному содержимому
логотип Avana

Ценовые оракулы

Как протокол превращает состояние LP-позиции в залоговые стоимости, релевантные для кредита.

Обзор

Avana оценивает LP-залог, восстанавливая позицию и оценивая активы внутри неё. Для взаимозаменяемых LP протокол выводит стоимость из внешних цен активов и реконструкции балансов пула. Для концентрированной ликвидности он разлагает позицию по ликвидности, диапазону, текущему тику, токенной экспозиции и накопленным комиссиям.

Результат дисконтируется до реализуемой залоговой стоимости. Заёмная сила опирается на то, что позиция реально может поддержать при риск-допущениях рынка, а не на оптимистичный NAV.

Это различие между mark value и реализуемой стоимостью делает оракул полезным для кредитования, а не только для аналитики. ERC-20 LPs, NFT LPs и мультиактивные пулы могут разделять один высокоуровневый интерфейс только потому, что каждый класс проходит свои проверки валидации и устойчивости к манипуляции, прежде чем стоимость доходит до spoke.

LP collateral value depends on:

  • Цены базовых активов
  • Резервы пула или распределение инвентаря
  • Fee accrual
  • Для концентрированной ликвидности — текущий тик относительно диапазона позиции
  • Находится ли позиция in-range или в основном односторонняя

Интерфейс оракула: IOracle

Borrow Spokes нужен один контрактный surface, даже если форматы LP сильно различаются между DEX. `IOracle` даёт эту общую форму и держит отдельно основную стоимость, накопленные комиссии и зарезервированные буферы, чтобы последующая риск-логика не гадала, на какую часть позиции смотрит:

function getValue(uint256 tokenId, address asset)
  external view returns (
    uint256 fullValue,
    uint256 feeValue,
    uint256 reserveValue
  );
fullValueВосстановленная стоимость основной ликвидности до последующих корректировок стресса ликвидации.
feeValueСтоимость комиссий, накопленных позицией, которые можно учитывать вместе с основной частью.
reserveValueЗарезервированная доля, удерживаемая для буферов оракула, размотки и протокольного риска.

Интерфейс скрывает DEX-специфичную сантехнику от spoke. Это позволяет одному вызывающему обрабатывать ERC-20 LPs, NFT LPs и мультиактивные пулы через одну форму возврата, оставляя место для консервативной, специфичной для семейства залога обработки за кулисами.

Многослойная архитектура

Оценка LP — поэтапный процесс, а не одно чтение spot-цены. Путь оракула проходит следующие шаги:

1

Оценить базовые активы по внешним устойчивым оракулам

Начинать с устойчивых внешних фидов по базовым активам, чтобы залог не наследовал полный шум или манипулируемость сырого spot-состояния пула.

2

Консервативно вывести стоимость LP

Восстановить балансы взаимозаменяемого LP или разложить позиции концентрированной ликвидности из резервов, ликвидности, диапазона и комиссий по детерминированному пути, который spoke может обосновать.

3

Дисконт за непостоянные потери и проскальзывание ликвидации

Дисконтировать восстановленный mark до реализуемой залоговой стоимости, предполагая стресс, проскальзывание и несовершенные выходы, а не чистый redemption по теоретическому NAV.

4

Ограничить экспозицию по семейству LP и глубине пула

Применять контроли на основе семейства LP, класса пула и доступной глубины, чтобы более тонкие или сложные рынки не получали те же лимиты займа, что более глубокие и простые.

5

Ликвидировать по реализуемой стоимости размотки, а не по оптимистичному NAV

Использовать стоимость, которую разумно реализовать через путь размотки, при выдаче заёмной силы и решении о ликвидации, а не best-case mark.

DEX-специфичная обработка

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

DEX / тип LPИсточник оракулаЗаметки
Curve Stable/Stable ERC-20 LPsВнешние фиды стейблкоинов + проверки состояния пула + верификация TWAPВнешние цены якорят активы, а балансы пула и начисление комиссий определяют дисконтированную залоговую стоимость.
Uniswap V2 ERC-20 LPsChainlink + реконструкция резервов + верификация TWAPСтандартные LP-токены оцениваются по восстановленным базовым балансам, а TWAP служит устойчивой к манипуляции перекрёстной проверкой.
Uniswap V3 NFT LPsChainlink + разложение позиции + проверки tick/TWAPNFT разлагается по ликвидности, активному диапазону и текущей цене, затем применяется haircut до реализуемой ликвидационной стоимости.
Balancer Multi-Asset LPsChainlink + реконструкция взвешенного инвентаряМультитокенные пулы используют внешние цены и взвешенный инвентарь пула для оценки консервативной залоговой стоимости.
SushiSwap / AerodromeChainlink + реконструкция резервов + верификация TWAPНаблюдения из пула проверяют восстановленную стоимость и помогают сопротивляться abuse в той же транзакции на рынках с низкой ликвидностью.
PancakeSwapChainlink + блоковая верификация TWAPВнешние цены остаются якорем, а блоковые наблюдения подтверждают состояние позиции и допущения размотки.

Вычисление TWAP по DEX

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

Uniswap V2 & SushiSwap

On-chain cumulative price data over a 1-hour window is used to cross-check the reconstructed reserve picture and reduce sensitivity to flash swaps or other short-lived pool distortions.

Uniswap V3

Проверки с учётом позиции включают диапазон тиков, распределение ликвидности и накопленные комиссии, чтобы протокол мог проверить разложенную токенную экспозицию каждого NFT LP, а не считать NFT чёрным ящиком.

Balancer

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

Curve

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

Trader Joe & Aerodrome

Кумулятивные ценовые наблюдения на окне 30–60 минут помогают валидировать состояние пулов с более низкой ликвидностью и сопротивляться манипуляции в той же транзакции при проверках залога.

Безопасность и предотвращение манипуляций

  • Пороги отклонения

    Новые займы или ликвидации могут быть приостановлены, когда данные верификации из пула слишком далеко уходят от внешних референсных цен за пределы maxDifference.

  • maxPoolPriceDifference

    Это держит подразумеваемое пулом состояние согласованным с ценами базовых токенов и ограничивает мгновенную манипуляцию пулом или abuse оракула в той же транзакции.

  • Лимиты открытого интереса

    Экспозиция ограничивается по семейству LP, глубине пула и сложности залога, поэтому более тонкие рынки получают более жёсткие лимиты займа.

  • Haircut восстановления

    Оракул дисконтирует теоретическую стоимость LP за непостоянные потери, проскальзывание размотки и допущения стрессовой ликвидации, прежде чем выдаётся любая заёмная сила.

  • Oracle Sentinel

    Oracle Sentinel следит за здоровьем фидов и входами верификации и может запускать fallback, когда данные устарели, скомпрометированы или несогласованы с проверками состояния позиции.

Настраиваемые параметры оракула

Настройки оракула, специфичные для пула, конфигурируются per token через setTokenConfig. Таблица ниже показывает параметры, определяющие, как проверять токен и связанный пул:

ПараметрОписание
TokenАдрес залогового токена
AggregatorV3InterfaceФид Chainlink для базового токена
maxFeedAgeМаксимально допустимый возраст фида Chainlink
PoolКонкретный DEX-пул (Uniswap V3, Balancer, Curve и т. д.)
twapSecondsОкно для вычисления TWAP
ModeОперационный режим оракула (standard/fallback)
maxDifferenceМаксимально допустимое отклонение между ценой DEX и ценой верификации

На практике поведение оракула складывается из сочетания внешнего ценообразования активов, логики реконструкции LP, обработки реализуемой стоимости и per-token настроек черезsetTokenConfig.