Оракулы: ахиллесова пята DeFi, о которой молчат

Ты написал честный контракт. Каждая строка проверяема. Он не может соврать, его нельзя подкупить, он исполняет ровно то, что в нём написано, и ничего сверх. Ты задеплоил его в цепь, которую независимо верифицируют тысячи нод. Поздравляю. Ты построил идеального судью.

Теперь этому судье нужно вынести решение по вопросу, на который он сам ответить не может: сколько сейчас стоит ETH?

Блокчейн не знает. Он никогда не знал. Цепь видит только то, что внутри неё — балансы, транзакции, собственное состояние. Внешний мир — цены, погода, результаты выборов, пришла поставка или нет — для неё невидим. Чтобы узнать хоть что-то из этого, контракт спрашивает оракул: программу, которая достаёт данные снаружи и записывает их в цепь.

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

Проблема оракула, сказанная прямо

Смарт-контракты детерминированы. Дай им одни и те же входы — каждая нода выдаст один и тот же выход. Именно это делает их бездоверительными: не надо верить посреднику, посредник — это математика.

Но детерминизм — это ещё и клетка. Контракт не может сделать HTTP-запрос. Не может вызвать API. Не может глянуть на тикер Binance. Если бы мог — разные ноды получили бы чуть разные числа в чуть разные миллисекунды, и сеть никогда не сошлась бы на едином состоянии. Поэтому цепь намеренно отгорожена от реальности.

Оракул — мост через эту стену. А мост — это ровно то место, где атакуют.

Скорми честному контракту ложную цену — и он сделает нечто катастрофическое: честно, корректно, необратимо. Ликвидирует здоровую позицию. Даст кому-то занять вдесятеро больше стоимости залога. Выплатит по ставке, которая не должна была выиграть. Контракт не сломан. Он сделал ровно то, что ему сказали. Ему просто сказали ложь.

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

Как отравляют табличку

Классическая атака — это не взлом серверов оракула. Она проще и злее: ты манипулируешь тем, что оракул измеряет.

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

Это не теория. Протоколы обчищали так на десятки и сотни миллионов долларов — bZx, Harvest, Mango Markets и длинный мрачный список после. Эксплойт почти всегда одной формы: контракт был честен, оракул был обманут.

Способы защиты известны, и они помогают:

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

Более глубокий вопрос: кто следит за оракулом?

Вот неудобная симметрия. Всё обещание DeFi — не доверяй, проверяй. Убери доверенного посредника. А потом, ровно в той точке, где система встречается с реальностью, она тихо возвращает доверенного посредника и называет его оракулом.

Задай ему те же вопросы, что и любому посреднику:

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

Централизация, что прячется на последней миле

Вот почему оракул — это точка, где Кольцо дотягивается до крипты. Ты можешь децентрализовать консенсус на десять тысяч нод на пяти континентах, и это ничего не значит, если цена каждого крупного актива, во всех крупных протоколах кредитования, течёт через двух-трёх провайдеров оракулов. Это не сеть. Это узкое горло в костюме сети — тот самый паттерн «единой точки отказа», от которого всё пространство якобы сбежало.

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

Что ты с этим реально делаешь

Не уныние. Чек-лист. Прежде чем доверить протоколу деньги:

  1. Найди его оракул. Он в доках или в контракте. Не можешь найти — это и есть твой ответ, уходи.
  2. Спроси, сколько независимых источников его кормят и использует ли он TWAP или живую спот-цену. Живой спот на тонком пуле — мигающий красный.
  3. Ищи админ-ключ. Кто может переопределить фид и может ли это без таймлока? Мгновенный переопределяющий рычаг — это бэкдор с хорошим пиаром.
  4. Предпочитай проверенные боем фиды хитрым новым. Новизна в оракуле — не фича. Это непротестированная поверхность атаки.
  5. Меряй свою экспозицию по слабейшему звену, а оракул почти всегда — слабейшее звено. Считай его потолком того, сколько ты готов там потерять.

Честный контракт никогда не был риском. Риском всегда был рот, что нашёптывает ему. Научись проверять, чей это рот — и весь собор «бездоверительности» перестаёт тебя дурить и начинает работать на тебя.

Проверяй судью. Потом проверяй того, кто кормит судью.