Вводный курс DeFi для всех. Занятие №02. Ценовые оракулы
Дисклеймер
Данный раздел составлен моим коллегой TW4Ys.
Что такое оракул?
Оракул - это источник данных о цене.
Эти данные используются DeFi-протоколами, особенно протоколами заимствования и кредитования, которые полагаются на внешние ценовые данные для ликвидации.Общие оракулы берут данные из таких источников, как chainlink, redstone_defi и PythNetwork, etc.
Наравне с термином Price Oracle встречается термин Price Feed.
Типы оракулов
Существует два основных типа оракулов:
- Оракулы с рыночным курсом используют индекс цен из различных источников, обычно смешанных между децентрализованными биржами (DEXs) и централизованными биржами (CEXs).
- Оракулы с обменным курсом используют внутреннюю стоимость актива, обычно определяемую тем, чем этот актив обеспечен.
Оракулы с рыночным курсом (market price oracle)
Например оракул Redstone для $ETH использует в данный момент ШЕСТНАДЦАТЬ источников ценовой информации для создания единой составной индикативной цены, которую протоколы могут использовать по мере необходимости.
Оракулы с рыночным курсом чувствительны к давлению продавцов и покупателей на цену.
Пример: Если цена wstETH отклонится на 5%, а у вас кредитное плечо 10x в паре wstETH/ETH, ВАС ЛИКВИДИРУЮТ, если этот протокол и рынок используют оракул с рыночным курсом.
Оракулы с обменным курсом (redemption price oracle)
У этого типа оракулов есть три популярных названия:
- Оракул чистой стоимости активов (NAV Oracle);
- Фундаментальный оракул (fundamental oracle);
- Оракул обменного курса (exchange rate oracle).
Все они означают одно и то же: цена определяется НЕ рыночным курсом, а СТОИМОСТЬЮ актива, обычно основанной на том, чем этот актив обеспечен.
Они чаще всего ассоциируются с LST (токены с ликвидным стейкингом - Liquid Staked Tokens) и LRT (токены с ликвидным рестейкингом - Liquid Restaked Tokens), потому что оба эти производных инструмента полностью обеспечены застейканными или рестейканными формами $ETH.
Вот пример оракула wstETH/stETH от Chainlink, который использует внутреннее обеспечение ETH стейкинга stETH для определения стоимости wstETH.
Обратите внимание, что это не индекс цен, и график никогда не падает. Здесь оракул не зависит от рынков, а только от того, сколько стоит актив на основе его обеспечения.
Как определить тип оракула?
Самое простое - внимательно посмотреть в приложении. Например рынок sUSDe/DAI на Morpho Labs:
Здесь можете ясно видеть, что на рынке sUSDe/DAI используется оракул обменного курса, что означает, что вас не ликвидируют из-за отклонений. Однако это не значит, что каждый оракул Morpho - оракул обменного курса.
Вот другой рынок Morpho sUSDe, где заимствуется USDT, и мы видим оракул Redstone вместо "Exchange Rate".
Когда вы нажимаете на Base Feed1 (sUSDe), вы перенаправляетесь на контракт в Etherscan. Перейдите на вкладку “Contract” и потом “Read as Proxy”:
Первый явный признак того, что это оракул с рыночным курсом - отсутствие функций в разделе "Read as Proxy" и наличие упоминания Redstone Price Feed в поле description. Оракул обменного курса будет иметь некоторые функции, которые выводят определённую информацию.
Silo Finance делает это очень просто. Здесь вы можете увидеть, что оракул $ezETH указан внизу информации о залоге и долге для каждого рынка.
Если мы нажмём на оракул Chainlink и перейдём в "Contract", вы увидите, что на этот раз у нас есть множество функций для чтения.
Это отличный признак того, что используется оракул обменного курса, но лучше убедиться. Нажать на "description".
Проверить функцию "latestAnswer"
Нажимаем на число и определяем значение в ETH:
Cверяем 1.0408539017392788 с фактическим обменным курсом (например с Coinmarketcap).
Aave также позволяет легко просматривать оракулы. Нажав на детали залога, мы можем увидеть ценовой оракул вверху.
Нажмите на "Read Contract", чтобы посмотреть, есть ли какие-либо функции, которые расскажут нам об оракуле.
"weETH / eETH (ETH) /USD" говорит о том, что используется соотношение weETH к ETH и используют оракул ETH к USD для долларовой цены. В этом же контракте смотрим функцию "RATIO PROVIDER".
Если мы нажмём на этот адрес и перейдём в "Read Contract", мы найдём описание "Description" с указанием типа оракула
и "latestAnswer", подтверждающие, что это обменный курс между weETH и eETH.
НО, если оракул weETH использует оракул eETH<>USD, то вы всё ещё можете быть ликвидированы, если eETH отклонится, поэтому нам нужно знать, что они используют для оценки актива в USD. Возвращаемся в контракт AAVE в котором смотрели функцию "RATIO PROVIDER" и проверяем функцию "BASE_TO_USD_AGGREGATOR", чтобы проверить контракт, который оценивает базовый (eETH) в USD.
Переходим к указанному контракту и проверяем описание:
Это фид ETH<>USD: это означает, что этот оракул weETH использует обменный курс weETH<>eETH, а затем оценивает eETH так, как если бы это был ETH.
Выводы
Если в "Read Contract" или "Read as proxy" есть функции получения курса типа
это, вероятно, оракул обменного курса.
Найти описание функций получения обменного курса часто можно в документации проекта. Если в "Read Contract" или "Read as proxy" нет таких функций, это, вероятно, оракул с рыночным курсом.
Всегда проверяйте функцию "description" для дополнительной проверки. Существуют протоколы, которые не делают оракулы легко доступными для просмотра.
В этих случаях лучше всего попросить команду предоставить адрес контракта оракула, чтобы вы могли проверить и убедиться, с чем имеете дело.