
Оракулы: как блокчейны узнают, что происходит снаружи
Смарт-контракт безупречно проверяет балансы, подписи и собственное состояние. Чего он не умеет, так это что-либо узнавать извне. Он понятия не имеет, сколько стоит ETH в долларах, кто выиграл матч или шёл ли вчера дождь в Мадриде. Блокчейны намеренно изолированы: каждый узел должен прийти к одному и тому же результату из одних и тех же данных, а внешний мир такой гарантии не даёт.
Тем не менее протоколам кредитования нужны цены, стейблкоинам — обменные курсы, а страховым контрактам — события реального мира. Мост между изолированной цепочкой и внешним миром называется оракулом, и это одна из самых атакуемых частей децентрализованных финансов.
Что делает оракул
Оракул — это любой механизм, который помещает внешние данные в блокчейн, где их могут прочитать контракты. Обычно:
- Один или несколько поставщиков данных собирают информацию, например цену ETH/USD с множества бирж.
- Они подписывают её и отправляют в контракт-оракул в блокчейне — регулярно или когда значение достаточно изменится.
- Другие контракты читают последнее значение из этого контракта-оракула и действуют на его основе.
Контракт полностью доверяет оракулу. Если оракул сообщает, что ETH стоит 10 $, протокол кредитования, который его читает, будет считать, что ETH стоит 10 $, — и соответственно ликвидировать позиции или выдавать займы.
Проблема оракула
В этом и состоит главная трудность: протокол может быть написан безупречно и всё равно быть надёжным лишь настолько, насколько надёжны его данные. Децентрализация контракта мало что даёт, если цены ему поставляет единственный источник.
Разные конструкции оракулов снижают эту зависимость по-разному:
- Несколько независимых репортёров, чьи ответы агрегируются, чтобы один ошибочный или скомпрометированный источник не мог сдвинуть результат.
- Множество исходных источников данных, чтобы одна манипулируемая биржа не исказила цену.
- Ончейн-средние цены, рассчитываемые во времени по децентрализованным биржам, которые труднее сдвинуть надолго.
- Экономические штрафы для репортёров, присылающих неверные данные.
Как эксплуатируют оракулы
Многие из крупнейших потерь в DeFi были не ошибками контрактов в обычном смысле, а сбоями оракулов:
- Манипуляция спотовой ценой. Протокол берёт текущую цену из одного небольшого торгового пула. Атакующий занимает крупную сумму в одной транзакции, сдвигает цену этого пула, занимает или ликвидирует по ложной цене, а затем откатывает сделку — и всё это до окончания транзакции. Флеш-кредиты делают это возможным вообще без собственного капитала.
- Тонкие рынки. Токен, который торгуется в основном в одном небольшом пуле, дёшево двигать, и любой протокол, принимающий его в залог, наследует эту слабость.
- Устаревшие данные. Оракул, который перестаёт обновляться на быстром рынке, может позволить людям занимать под цены, которых уже не существует.
- Скомпрометированные репортёры или ключи администратора, способные изменить, откуда оракул получает данные.
То же рассуждение применимо к мостам: система защищена ровно настолько, насколько защищён компонент, сообщающий ей о том, что произошло в другом месте.
Почему это касается вас
Вы не взаимодействуете с оракулами напрямую, но во многих протоколах именно они решают, что будет с вашими деньгами:
- Кредитование: стоимость вашего залога — и то, ликвидируют ли вас, — берётся из оракула.
- Стейблкоины: ряд конструкций зависит от ценовых фидов, чтобы держаться у целевого курса.
- Деривативы и синтетические активы: цены расчётов берутся из оракулов.
Прежде чем использовать протокол с реальными деньгами, стоит выяснить: откуда он берёт цены? Это проверенный фид с несколькими источниками или единственный пул? Что произойдёт, если фид перестанет обновляться? Протокол, который не может чётко ответить на эти вопросы, просит вас взять на себя риск, которого вы не видите.
Оракулы и SSP
Сам SSP не зависит от оракулов в защите ваших средств. Ваши монеты хранятся в мультисиг-хранилище 2 из 2, и их перемещение зависит только от подписей с двух ваших устройств, а не от какой-либо внешней цены.
Цены, которые вы видите в SSP, — стоимость вашего портфеля в выбранной валюте, — служат только для отображения. Они не влияют ни на то, что делает транзакция, ни на её действительность.
Оракулы становятся вашей заботой, когда вы переводите средства в DeFi-протоколы через WalletConnect. Там SSP показывает, что именно вы подписываете, и требует подтверждения с обоих устройств, но не может оценить, надёжен ли ценовой фид протокола. Эта проверка — ваша задача, и проверка контрактов и того, кто их контролирует, — её часть.
Честный итог
Блокчейны не видят ничего за своими пределами, поэтому данные внутрь приносят оракулы — и каждый контракт, опирающийся на эти данные, наследует слабости оракула. Многие крупные эксплойты в DeFi манипулировали ценовым фидом, а не взламывали код.
Когда используете протокол, зависящий от цен, спросите, откуда эти цены берутся. Хорошо агрегированные оракулы с несколькими источниками обмануть гораздо труднее, чем единственный пул, — а «децентрализованный» код с единственной точкой данных не так децентрализован, как кажется.


