Оракул: очі DeFi, а також його вразливість

robot
Генерація анотацій у процесі

Написано: Чжан Цяовэнь

У листопаді 2020 року одна людина, використавши позику, яку їй позичили, за 15 секунд вивела із DeFi-протоколу майже 1 мільйон доларів.

Спершу вона взяла велику кількість ETH через флеш-кредит, а потім за лічені секунди, концентровано купуючи sETH у вкрай низьколіквідному пулі, різко підштовхнула ціну вгору.

Далі вона внесла ці sETH як заставу в протокол bZx. Те, що «бачив» протокол, — це ціна, штучно піднята саме в ту мить, тож він визнав, що ці sETH мають надзвичайно високу вартість, і відповідно до правил видав кредит WBTC, який значно перевищував реальну цінність.

Після того як атакувальник отримав WBTC, він швидко повернув флеш-кредит, забравши величезну різницю, і зник.

Увесь процес не містив хакерського вторгнення, не було вразливостей у коді й не відбувалося зловживання повноваженнями. Контракт суворо виконував кожен крок за правилами. Єдина проблема в тому, що:

«Світ», який він «бачить», — хибний.

Це — одна з найнижчих меж DeFi: ончейн-контракти за своєю суттю є системою, яка не може бачити реальний світ.

01 Ончейн-контракти — це «сліпі»

Смарт-контракти живуть у замкненому світі.

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

Але те, що відбувається поза ланцюжком, вони повністю не бачать: яка сьогодні ціна ETH? Чи став біткоїн новим максимумом? Чи відірвався від прив’язки якийсь стейблкоїн? Чи зростали сьогодні або падали котирування на Нью-Йоркській фондовій біржі? Контракт про це не має жодного уявлення.

У DeFi-лондингу це смертельна суперечність.

Ліквідація залежить від поточної ціни заставного активу; але смарт-контракт не може сам бачити ціну, і її має хтось повідомити.

Ось чому існують оракули: це «очі» ончейн-контрактів, які відповідають за перенесення реальної інформації з поза ланцюжка на ланцюжок, щоб контракти могли її зчитувати й використовувати. Але звідси виникає проблема:

Хто гарантує, що ця інформація правдива?

02 Оракул: вісник світу на ланцюжку

По суті оракул — це інфраструктура для передавання інформації, яка записує дані реального світу (ціни, відсоткові ставки, результати подій тощо) у формат, який може читати контракт, у блокчейн.

Це поняття звучить просто, але інженерний виклик полягає в тому, що базовим принципом дизайну блокчейна є «нікому не довіряти жодному зовнішньому входу», і за всім мають стояти дані, які можна перевірити в ланцюжку. А оракул приносить якраз дані з поза ланцюжка — вони природно опиняються за межами цієї системи довіри.

Щоб вирішити цю проблему, на ринку сформувалися два основні підходи.

Перший — ончейн-ціни, які напряму зчитують торговельні ціни з децентралізованих бірж (DEX). Найтиповіший приклад — часозважена середня ціна Uniswap (TWAP): вона не бере ціну в якийсь один момент, а бере середню ціну за минулий проміжок часу, розмиваючи короткострокові коливання ціни в часі.

Другий — децентралізовані мережі оракулів, представлені, зокрема, Chainlink. Кілька незалежних вузлів даних отримують ціну з різних каналів, а після агрегування беруть медіану й записують її в ланцюжок; жоден вузол не може одноосібно визначити остаточний результат.

Обидва підходи мають свої компроміси, але обидва намагаються відповісти на одне й те саме питання: як змусити ончейн-контракт довіряти числу, яке прийшло з поза ланцюжка?

03 Чому не використовувати напряму актуальну ціну?

Більшість людей, коли вперше стикаються з оракулами, мають інтуїтивне запитання: якщо ціна походить від ринку, то чому б не просто зчитувати з біржі її поточну ринкову ціну?

Проблема в тому, що: поточна ціна не дорівнює реальній ціні.

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

І смарт-контракт не може визначити, чи ця ціна сформувалася природно, чи її навмисно маніпулювали. Контракт може лише зчитати це число і на його основі виконати правила — дозволити позичальнику позичити більше коштів. Коли ціна повертається вниз, реальна вартість застави вже недостатня, щоб покрити позику, і тоді протокол зазнає збитків.

Саме тому подія атаки на протокол bZx, про яку йдеться на початку статті, стала можливою, а також у чому плата за використання поточних цін: оракул бере «числа, якими можна короткочасно маніпулювати», і трактує їх як саму реальність.

04 Рішення Chainlink: децентралізувати ціну

Якщо система покладається лише на одне джерело даних, то варто цьому джерелу помилитися або бути скомпрометованим, як увесь протокол буде збито з курсу. Найпряміший спосіб зменшити цей ризик — не довіряти «сильнішій» людині, а змусити кілька незалежних вузлів окремо озвучити свої цифри, а потім витягнути з них відносно надійний результат.

Chainlink використовує саме таку ідею: кілька незалежних вузлів даних отримують ціну з різних джерел, кожен окремо звітує, а система бере медіану як остаточний результат. Таким чином, навіть якщо один вузол помилиться або на нього вплине атакувальник, це не зможе самотужки зрушити остаточну ціну; а щоб атакувальник зміг одночасно контролювати понад половину вузлів, з економічної точки зору це майже неможливо.

Цей механізм ефективно зменшує проблему однієї точки маніпуляції.

Але він також вводить нову ціну: оновлення з затримкою.

Онишнейн-ціни не синхронізуються в режимі реального часу: вузли збирають дані, досягають консенсусу й записують це в блокчейн — на це потрібен час. Коли ринок коливається нормально, ця затримка не має значення. Але коли ринкова ситуація різко змінюється, ціна оракула може не встигнути за зміною реальної ціни.

Ось чому, як ми писали в чому питання, «чому в DeFi-лондингу потрібне надмірне забезпечення?»: DeFi-протоколам потрібно встановлювати резерв надмірного забезпечення — не лише щоб справлятися з самими коливаннями ціни, а й щоб у той період, поки оракул ще не встиг оновитися, система все одно мала достатній запас безпеки, щоб запустити ліквідацію.

05 Атака на оракул: найдорожча криза довіри

Проблема оракулів не зникла остаточно з появою Chainlink.

В історії DeFi вразливості, пов’язані з оракулами, були однією з найбільш збиткових категорій атак. У період з 2021 по 2023 роки лише за задокументованими атаками з маніпуляцією оракулами сумарні втрати вже перевищили кілька сотень мільйонів доларів.

У цих втрат є спільна риса: атакувальникам не потрібно знаходити вразливості в коді. Їм достатньо знайти «просвіт» між ціною оракула і реальною ринковою ціною, а потім за допомогою коштів розширити цей просвіт, змусивши контракт виконати операцію, вигідну для атакувальника, на викривленій ціні. Це ризик, який складніше захистити, ніж у випадку вразливостей у коді, — бо ти не можеш прописати в коді правило, яке б перевіряло: «чи ця ціна правдива».

Проблема оракулів, по суті, не є вразливістю якогось конкретного компонента, а радше компромісом:

коли ти використовуєш більше джерел даних, щоб протидіяти маніпуляціям, тобі доводиться приймати більшу затримку;

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

Цьому компромісу немає ідеального рішення.

І саме тому існування оракула відкриває DeFi глибшу реальність: ончейн-контракти можуть бути абсолютно прозорими й абсолютно виконуваними, але за умови, що інформація, на яку вони спираються, є правдивою. Якщо ж вхідні дані спотворені, навіть найідеальніший код лише ефективніше ухвалить неправильні рішення та виконає неправильні дії.

ETH6,16%
WBTC3,87%
BTC3,8%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Репост
  • Поділіться
Прокоментувати
Додати коментар
Додати коментар
Немає коментарів
  • Закріпити