Ф'ючерси
Сотні безстрокових контрактів
TradFi
Золото
Одна платформа для світових активів
Опціони
Hot
Торгівля ванільними опціонами європейського зразка
Єдиний рахунок
Максимізуйте ефективність вашого капіталу
Демо торгівля
Вступ до ф'ючерсної торгівлі
Підготуйтеся до ф’ючерсної торгівлі
Ф'ючерсні події
Заробляйте, беручи участь в подіях
Демо торгівля
Використовуйте віртуальні кошти для безризикової торгівлі
Запуск
CandyDrop
Збирайте цукерки, щоб заробити аірдропи
Launchpool
Швидкий стейкінг, заробляйте нові токени
HODLer Airdrop
Утримуйте GT і отримуйте масові аірдропи безкоштовно
Launchpad
Будьте першими в наступному великому проекту токенів
Alpha Поінти
Ончейн-торгівля та аірдропи
Ф'ючерсні бали
Заробляйте фʼючерсні бали та отримуйте аірдроп-винагороди
Інвестиції
Simple Earn
Заробляйте відсотки за допомогою неактивних токенів
Автоінвестування
Автоматичне інвестування на регулярній основі
Подвійні інвестиції
Прибуток від волатильності ринку
Soft Staking
Earn rewards with flexible staking
Криптопозика
0 Fees
Заставте одну криптовалюту, щоб позичити іншу
Центр кредитування
Єдиний центр кредитування
Центр багатства VIP
Преміальні плани зростання капіталу
Управління приватним капіталом
Розподіл преміальних активів
Квантовий фонд
Квантові стратегії найвищого рівня
Стейкінг
Стейкайте криптовалюту, щоб заробляти на продуктах PoS
Розумне кредитне плече
Кредитне плече без ліквідації
Випуск GUSD
Мінтинг GUSD для прибутку RWA
Оракул: очі DeFi, а також його вразливість
Написано: Чжан Цяовэнь
У листопаді 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 глибшу реальність: ончейн-контракти можуть бути абсолютно прозорими й абсолютно виконуваними, але за умови, що інформація, на яку вони спираються, є правдивою. Якщо ж вхідні дані спотворені, навіть найідеальніший код лише ефективніше ухвалить неправильні рішення та виконає неправильні дії.