Блокчейн

Оракулы: Chainlink и проблема доверия

Lending-протокол Aave управляет залогами на $10 миллиардов. Чтобы решить, когда ликвидировать позицию, ему нужно знать текущую цену ETH. Но блокчейн - изолированная система, он не может открыть браузер и зайти на Binance. Если кто-то запишет в блокчейн неправильную цену, протокол ликвидирует здоровые позиции или не ликвидирует опасные. В октябре 2022 одна такая манипуляция уничтожила $114 миллионов на Mango Markets. Как DeFi-протоколы получают данные из реального мира и кому они при этом доверяют?

  • **Chainlink** обеспечивает ценовыми данными протоколы с суммарным TVL более 75 миллиардов: Aave, Compound, Synthetix. Ошибка в одном price feed может вызвать каскадные ликвидации на миллиарды долларов
  • **Манипуляции оракулами** - главный вектор атак в DeFi: Mango Markets ($114M), Euler Finance ($197M), bZx (8M). Выбор оракула буквально определяет, будет ли протокол взломан
  • **Pyth Network** обновляет цены каждые 400ms - быстрее, чем блоки Ethereum. Это меняет архитектуру DeFi: perpetual DEX (dYdX, Drift) используют суб-секундные оракулы для торговли с плечом, где задержка в одну секунду может стоить миллионы

Предварительные знания

  • AMM: Uniswap and Constant Product

Oracle Problem: блокчейн не видит внешний мир

Блокчейн - это **детерминистическая** система. Каждая нода в сети должна независимо выполнить транзакцию и получить **идентичный** результат. Если нода A и нода B выполняют один и тот же смарт-контракт, но получают разные результаты, консенсус невозможен - сеть не может определить, какое состояние "правильное". Поэтому EVM не имеет инструкций для HTTP-запросов, чтения файлов или доступа к внешним API.

**Оракул (oracle)** - это механизм доставки внешних данных в блокчейн. Название отсылает к древнегреческим оракулам - посредникам между богами и людьми. В блокчейне оракул - посредник между реальным миром и смарт-контрактами. Данные, которые нужны DeFi-протоколам: **цены активов** (для ликвидаций в lending, расчёта залогов), **курсы валют**, **результаты спортивных событий** (для prediction markets), **погодные данные** (для страхования), **случайные числа** (для NFT-минтов и лотерей).

**Oracle Problem** - это не просто техническая сложность, а фундаментальное ограничение: блокчейн может гарантировать целостность данных **внутри** цепочки, но не может проверить истинность данных, поступающих **извне**. Смарт-контракт не знает, соответствует ли записанная цена ETH реальной рыночной цене. Он доверяет тому, кто записал данные. Если этот "кто-то" - единственный сервер или один человек, вся децентрализация протокола рушится в одной точке.

**Mango Markets (октябрь 2022)**: Авраам Айзенберг манипулировал ценой токена MNGO на бирже (единственный источник данных для оракула) через серию крупных сделок. Цена MNGO выросла в 30 раз за минуты. Его позиция в Mango Markets стала показывать unrealized profit в 114M, которые он вывел как реальные средства. Протокол потерял все деньги пользователей. Айзенберг был арестован и осуждён - но деньги пользователям не вернулись.

Проблема оракулов усугубляется **composability** DeFi. Если lending-протокол Aave использует оракул для ликвидаций, а Aave является базовым блоком для десятков других протоколов - ошибка в оракуле каскадирует через всю экосистему. По данным DeFiLlama, более **2.5 миллиардов** было потеряно в 2021–2024 годах из-за атак, связанных с манипуляцией оракулами. Это делает проблему оракулов **главным вектором атаки** в DeFi.

Почему смарт-контракт Ethereum не может напрямую получить цену ETH с API Binance?

Chainlink: децентрализованная сеть оракулов

**Chainlink** - крупнейшая децентрализованная сеть оракулов, обеспечивающая данными более 75 миллиардов TVL в DeFi (2024). Ключевая идея: вместо одного источника данных используется **сеть независимых операторов нод**. Каждый оператор получает данные из собственных источников (биржи, провайдеры данных), и результат агрегируется on-chain. Для манипуляции нужно скомпрометировать большинство операторов одновременно - экономически нецелесообразная задача.

**Chainlink VRF (Verifiable Random Function)** решает ещё одну проблему оракулов - **случайные числа**. Блокчейн детерминистичен, а `block.timestamp` и `blockhash` предсказуемы майнерами/валидаторами. VRF генерирует доказуемо случайное число off-chain, а on-chain смарт-контракт верифицирует криптографическое доказательство. Используется в лотереях (PoolTogether), NFT-минтах (Bored Apes), GameFi. Стоимость: ~0.25 LINK (3-5) за запрос.

Помимо ценовых фидов и VRF, экосистема Chainlink включает **Automation** (бывший Keepers) - децентрализованную сеть для автоматического вызова функций контрактов при выполнении условий. Например: ликвидация позиции когда collateral ratio упал ниже порога, ребалансировка vault по расписанию, автоматический сбор наград в yield farming. **CCIP (Cross-Chain Interoperability Protocol)** обеспечивает безопасную передачу сообщений и токенов между блокчейнами - альтернатива мостам, которые исторически являлись главной целью хакеров (2.5B потерь в bridge-хаках за 2022).

Экономическая безопасность Chainlink строится на **стейкинге LINK**. Операторы нод блокируют токены LINK как залог. Если нода предоставляет некорректные данные или становится недоступной, её стейк может быть **slashed** (конфискован). В Staking v0.2 (2024) общий пул стейкинга достиг 45 миллионов LINK (~$600M). Это создаёт экономический стимул: стоимость атаки на Chainlink должна превышать суммарный стейк, что при защите $75B TVL требует астрономических затрат.

DeFi-протокол использует Chainlink ETH/USD Price Feed для ликвидаций. Какую проверку КРИТИЧЕСКИ ВАЖНО добавить при чтении цены?

TWAP-оракулы: цена из самого блокчейна

Chainlink - внешний оракул: данные приходят из-за пределов блокчейна. Но существует альтернативный подход - **on-chain оракулы**, которые используют данные, уже записанные в блокчейне. Самый важный из них - **TWAP (Time-Weighted Average Price)** - средневзвешенная по времени цена. Идея: AMM-пулы Uniswap непрерывно торгуют и хранят историю цен. Эту историю можно использовать как оракул, не полагаясь на внешние источники.

**Uniswap V3** улучшил механизм TWAP. Вместо простого cumulative price используется массив **observations** - кольцевой буфер, хранящий tickCumulative и secondsPerLiquidityCumulative для каждого блока с торговлей. По умолчанию хранится 1 наблюдение, но пул можно инициализировать с бо́льшим буфером (до 65,535 слотов). Функция `observe()` позволяет запросить данные за произвольный период в прошлом и получить интерполированные значения.

**Euler Finance (март 2023)**: хакер использовал flash loan для манипуляции цены в пуле, а затем эксплуатировал уязвимость в lending-протоколе Euler. Потеря: **197M**. Euler частично полагался на TWAP-оракул Uniswap V3, но с коротким окном наблюдения. Урок: TWAP безопасен только для пулов с высокой ликвидностью и при достаточно длинном периоде. Для малоликвидных пар и коротких окон - TWAP манипулируем.

TWAP-оракулы имеют фундаментальный **компромисс между безопасностью и задержкой**. Длинное окно (например, 30 минут) делает манипуляцию дорогой, но цена отстаёт от рынка на 15 минут в среднем. При резком обвале рынка ликвидации опоздают - протокол накопит bad debt. Короткое окно (1 минуту) реактивнее, но дешевле в манипуляции. Идеального решения нет: для высоколиквидных пар TWAP отлично работает как **вторичный** оракул (проверка данных Chainlink), но как единственный источник цены - рискован для большинства сценариев.

Протокол использует 30-минутный TWAP с Uniswap V3 для определения цены токена X. Атакующий хочет сдвинуть TWAP на 20%. Что усложняет атаку?

Ландшафт децентрализованных оракулов

Chainlink доминирует на рынке оракулов, но не является единственным решением. Разные протоколы предлагают разные **модели доверия**, оптимизированные для разных сценариев. Понимание ландшафта оракулов критично для оценки безопасности DeFi-протоколов: от выбора оракула зависит, какие атаки возможны и какова их стоимость.

**Pyth Network** - оракул нового поколения, созданный при участии Jump Trading, Jane Street и других HFT-фирм. Ключевое отличие - **pull-модель**: данные обновляются off-chain каждые 400ms (быстрее, чем блоки Ethereum), подписываются криптографически и хранятся в сети Pythnet (построена на Solana). Когда DeFi-протоколу нужна цена, пользователь **сам** передаёт подписанные данные в транзакцию. Контракт верифицирует подпись и использует цену. Экономия: Chainlink тратит миллионы долларов в год на gas для push-обновлений, Pyth перекладывает эту стоимость на потребителя.

**UMA (Optimistic Oracle)** использует радикально другой подход. Вместо сети нод, агрегирующих данные, UMA позволяет **любому** утверждать факт ("ETH стоит $3,012", "команда X победила в матче", "событие Y произошло"). Утверждение проходит через **dispute period** (обычно 2 часа). Если никто не оспорил - утверждение принимается как истинное. Если оспорено - вопрос решается голосованием держателей токена UMA. Этот механизм позволяет оракулировать **любые** данные, включая субъективные. Polymarket (prediction market с $1B+ объёма) использует UMA для разрешения рынков.

**Oracle Extractable Value (OEV)** - новая проблема экосистемы оракулов. Когда оракул обновляет цену, это может вызвать ликвидации в lending-протоколах. Ликвидатор, который первым увидит обновление оракула, получает прибыль. Это создаёт MEV-гонку: боты конкурируют за право ликвидировать позиции сразу после обновления оракула. **API3 OEV Network** и **Pyth Express Relay** пытаются решить эту проблему, направляя OEV обратно протоколам вместо MEV-ботов - через аукцион на право обновить цену.

**API3** предлагает модель **first-party oracle**: данные поставляются напрямую провайдерами (dxFeed, Finage, NCFX), без посредников-нод. Каждый провайдер данных сам запускает **Airnode** - лёгкий сервер, подписывающий данные. Это устраняет «посредническую» ноду Chainlink и снижает поверхность атаки. **Chronicle** (бывший оракул MakerDAO) использует Schnorr-мультиподписи - все подписи нод агрегируются в одну, что экономит gas. Chronicle защищает 10B+ TVL MakerDAO/Sky с 2017 года - один из самых проверенных временем оракулов.

Децентрализованные оракулы полностью решают проблему доверия - раз данные приходят от множества нод, манипуляция невозможна

Оракулы **смещают** проблему доверия, но не устраняют её. Chainlink с 21 нодой безопаснее одного API, но всё ещё требует доверия операторам нод и правильности off-chain источников. TWAP trustless, но ограничен задержкой и зависит от ликвидности пула. Каждый оракул - это компромисс между скоростью, стоимостью, безопасностью и универсальностью. **Нет оракула, который бы решал все задачи**, именно поэтому production-протоколы используют комбинацию нескольких оракулов с circuit breakers.

Итоги

  • **Oracle Problem** - фундаментальное ограничение: блокчейн детерминистичен и не может обращаться к внешним API. Данные должны быть записаны в цепочку через транзакцию оракула до использования смарт-контрактом. Единая точка отказа в оракуле разрушает децентрализацию всего протокола
  • **Chainlink** решает проблему через сеть из 21+ независимых нод, агрегирующих данные с нескольких бирж. Медиана отбрасывает выбросы, heartbeat гарантирует свежесть, стейкинг LINK создаёт экономическую ответственность. Тройная проверка при чтении: answer > 0, freshness, round completeness
  • **TWAP-оракулы** используют cumulative price accumulators из AMM-пулов. Формула: TWAP = (cumPrice₂ - cumPrice₁) / (t₂ - t₁). Безопасны для крупных пулов с длинным окном, но имеют компромисс: безопасность vs задержка. Стоимость манипуляции пропорциональна ликвидности пула умножить на период TWAP
  • **Ландшафт оракулов** разнообразен: Pyth (pull-модель, 400ms), UMA (optimistic, любые данные), API3 (first-party), Chronicle (Schnorr-мультиподписи). Каждый - компромисс между скоростью, стоимостью и безопасностью. OEV (Oracle Extractable Value) - новый вид MEV, возникающий при обновлении цен
  • Вопрос из начала урока - как DeFi получает данные и кому доверяет - не имеет единого ответа. Production-протоколы комбинируют несколько оракулов с circuit breakers: если Chainlink и TWAP расходятся более чем на 5%, ликвидации приостанавливаются. Абсолютного trustless оракула не существует - каждый сдвигает, а не устраняет проблему доверия

Связанные темы

Оракулы - центральный компонент DeFi-инфраструктуры, связывающий AMM, lending, стейблкоины и безопасность:

  • AMM: Uniswap и constant product — TWAP-оракулы строятся поверх cumulative price accumulators Uniswap V2/V3. Ликвидность AMM-пула определяет стоимость манипуляции TWAP. AMM - единственный trustless on-chain оракул
  • Lending: Aave, Compound, ликвидации — Lending-протоколы - главные потребители оракулов. Корректность цены определяет ликвидации: stale price → bad debt, манипулированная цена → theft. Aave использует Chainlink + fallback на TWAP
  • Стейблкоины и привязка к доллару — Алгоритмические стейблкоины (DAI) используют оракулы для определения collateral ratio. Если оракул покажет завышенную цену залога - стейблкоин станет недоколлатерализованным. Chronicle оракул был создан специально для MakerDAO
  • Integer Overflow, Flash Loans, Oracle Manipulation — Flash loan + манипуляция оракулом - самая распространённая атака в DeFi. Mango Markets, Euler, bZx - все эксплуатировали зависимость от ненадёжного источника цены. Защита: множественные оракулы + circuit breakers

Вопросы для размышления

  • Chainlink - это сеть из ~21 ноды, управляемых коммерческими компаниями. В традиционных финансах для определения цен используются данные бирж, регулируемых государством. Является ли Chainlink «более децентрализованным» или «менее регулируемым» решением - и что из этого важнее для DeFi?
  • TWAP-оракул trustless (не требует доверия третьим сторонам), но медленнее и ограничен ликвидностью пула. Chainlink быстрее и универсальнее, но требует доверия сети операторов. Может ли существовать оракул, который одновременно trustless, быстрый и универсальный - или это невозможный треугольник (подобно trilemma блокчейна)?
  • Oracle Extractable Value (OEV) возникает, когда обновление оракула создаёт возможность для ликвидации. MEV-боты конкурируют за эту прибыль, создавая негативные экстерналии (переполнение mempool, рост gas). Справедливо ли перенаправлять OEV обратно протоколам через аукционы - или ликвидаторы выполняют полезную функцию и заслуживают этой прибыли?

Связанные уроки

  • dist-12-consistency
Оракулы: Chainlink и проблема доверия

0

1

Войти

Маркетинг оракульных проектов акцентирует внимание на «децентрализации», но умалчивает о точках доверия. Chainlink ноды могут сговориться (хотя экономически невыгодно). Pyth получает данные от market makers, которые заинтересованы в определённых ценах. TWAP безопасен для крупных пулов, но бесполезен для 90% токенов с низкой ликвидностью. Зрелый подход - понимать модель доверия каждого оракула и строить многослойную защиту.

DeFi-протокол на Ethereum использует для ликвидаций спот-цену из одного Uniswap V3 пула (без TWAP). Атакующий берёт flash loan на 50M и в одной транзакции: 1. сдвигает цену в пуле 2. вызывает ликвидацию 3. возвращает цену. Какой оракул предотвратил бы эту атаку?