Це дослідження виникло з виклику отримання надійної інформації про ціни on-chain, яка максимізує безпеку, відображаючи при цьому поточні ціни активів, що є метою. Ми спеціально зосереджуємося на забезпечувальних активах Prisma Finance (wstETH, rETH, cbETH та sfrxETH), а також деривативах з ліквідним стейкінгом на базі Ethereum (LSD). Деякі з цих активів не мають джерел даних Chainlink (часто вважається золотим стандартом для надійних даних про ціни), що впливає на їх інтеграцію з платформою Prisma.
Остання реалізація стабільного пулу фінансів Curve включає внутрішній пул Oracle, який обчислює експоненційний ковзний середній (EMA) для отримання даних про ціни, які не піддаються втручанню. Хоча інтегратори вже почали вивчати використання Oracle в інших додатках DeFi, Oracle використовується в основному для забезпечення безпеки забезпечення власного ринку crvUSD Curve.
Основною метою цього звіту є визначення того, чи може оракул Curve Finance служити надійною альтернативою Chainlink для токенів ETH LSD. Це дослідження включає статистичний аналіз ефективності оракула ціни Curve, порівняння його волатильності, точності та загальної продуктивності з референтними цінами на Uniswap (припускається, що це точні ціни на ланцюжку).
Аналіз поділений на два пов'язаних дослідження:
Аналіз залишкових оракулів stETH: порівняльне дослідження між Chainlink та Curve, використовуючи історичні дані для визначення відхилення оракула від відносно середнього значення та стандартного відхилення посилання на ціну.
Аналіз викупу stETH MEV: порівняльне дослідження між Chainlink та онлайн-оракулом, використовуючи історичні дані для вивчення подій викупу на Prisma та оцінки прибутковості роботів та очікуваної поведінки з використанням альтернативних Оракулів.
Після аналізу ми надаємо попередні технічні характеристики для Оракула, очікуючи покращення відхилення ціни Оракула, забезпечуючи надійність Оракула. Запропоноване рішення може слугувати початковим планом для інших досліджень, спрямованих на оптимізацію Оракула.
Ефективність оракулів оцінюється в конкретному середовищі використання Prisma: ліквідація та викуп. (Додатково зазначимо, що ті самі оракули також використовуються для видачі токенів та продажу набутих токенів в «токенізований стабільний пул», важливість якого зросте після запуску.)
Виступ Оракула має вирішальне значення для користувачів Prisma, оскільки арбітражники можуть мати можливість отримати прибуток від розбіжностей між цінами Оракула та ринковими цінами. Забезпечення використання найточнішого зворотнього зв'язку щодо цін під час ліквідації та викупу, не жертвуючи безпекою джерел ціноутворення, відповідає найкращим інтересам протоколу Prisma та його депозитарів скарбниці.
Дві функції Oracle в межах Prisma описані наступним чином:
Щоб захистити Prisma від банкрутства, де позиції з боргами перевищують вартість їх застави, контракт LiquidationManager виконує логіку ліквідації на всіх активних TroveManagers (казначействах Prisma). Ліквідацію можна спровокувати одним із трьох способів, в залежності від відношення застави цільового рахунку та загального відношення застави в системі.
Індивідуальний коефіцієнт застави (ICR) <= 100%: У рахунку (скарбниці) недостатньо застави. Усі борги та застава розподіляються серед залишених активних скарбниць, ефективно соціалізуючи збиток.
100% < ICR < Мінімальний коефіцієнт застави (MCR): Скарбниця опускається нижче порогу ліквідації, але може бути безпечно ліквідована. Стабільний пул використовується як резерв для обробки ліквідацій (стимулювання ліквідаційного пулу). Застава розподіляється між депозитарями стабільного пулу. Якщо баланс стабільного пулу недостатній для повного погашення скарбниці, залишковий борг і застава розподіляються серед залишкових активних скарбниць.
MCR ≤ ICR ≤ Глобальний Загальний Коефіцієнт Забезпечення (ГЗКЗ) && ГЗКЗ < 150%: Система перебуває в режимі відновлення, що означає, що скарбниці можуть бути ліквідовані, коли КЗ перебуває нижче ГЗКЗ, а не MCR. Вклади в стабільний пул використовуються спочатку для ліквідації скарбниці. Забезпечення, еквівалентне значенню заборгованості при MCR, розподіляється серед вкладників стабільного пулу. Залишкове забезпечення може бути вимагане власником скарбниці.
Можливість ліквідації Prisma збільшується, коли ETH або ETH LSD відчувають значні коливання цін, особливо зниження, в умовах високої волатильності ринку. Хоча відмови або маніпуляції Oracle можуть впливати на протокол у будь-який момент, ризик відмови Oracle може збільшитися в найбільш критичні моменти. Заставні активи можуть не оновлювати ціни вчасно через стрибки в оплаті газу, або методологія ціноутворення Oracle може недостатньо відслідковувати зростаючу волатильність, що призводить до неправильної ціноутворення. Банкрутства можуть збільшуватися, що потребує перерозподілу серед активних скарбниць, або позичальників можуть недобросовісно ліквідувати (у випадках, коли Oracle помилково повідомляє про ціни нижче ринкових цін).
Арбітражники завжди можуть ініціювати викуп, вибравши викуп 1 mkUSD вартості забезпечення за 1 долар (+ динамічні викупні комісії), починаючи з скарбниці з найнижчим відношенням забезпечення в системі. Це допомагає посилити його пег, коли ціна mkUSD падає нижче 1 долара. Процес викупу зменшує забезпечення ризику цільової скарбниці та збільшує її відношення забезпечення. Сторона, що виконує викуп, платить комісію, яку називають комісією викупу. Діапазон комісій за викуп встановлюється для TroveManager і представляє суму мінімальної комісії за викуп + базова ставка. Змінні, збережені в TroveManager, збільшуються пропорційно з викупеною загальною кількістю мкUSD та лінійно зменшуються з плином часу. Ця динамічна комісія, базова ставка, налаштовує прибутковий рівень викупу.
Хоча ліквідації на Prisma історично були рідкісними, викупи є поширеними і потребують особливої уваги для Оракулів. Боти MEV активно шукають такі можливості для швидкого заробітку через флеш-кредити.
Крім незручностей, пов'язаних з примусовим викупом їх скарбниць, користувачі можуть відчути деяке видобуток вартості через відхилення між Оракулом та ринковими цінами. Неправильне ціноутворення може призвести до втрат користувачів більше активів, ніж необхідно, особливо коли Оракул повідомляє ціни нижче справедливої ринкової вартості. З іншого боку, ціни, повідомлені Оракулом, вище, ніж справедливі ринкові ціни, можуть унеможливити погашення, знімаючи зміцнення механізму погашення мкUSD за підлогою.
Ось короткий огляд провідних кандидатів на оракульні котировки Oracle на Prisma.
Chainlink - це децентралізована мережа оракулів, яка агрегує дані з широкого спектру ринкових джерел і підключає ці дані до смарт-контрактів. Її архітектура ґрунтується на незалежних операторах вузлів, які отримують та передають дані з різних бірж та API агрегаторів ринкових даних, мінімізуючи одиничні точки відмов та підвищуючи безпеку. Цілісність даних забезпечується за допомогою криптографічних методів та механізмів консенсусу, які перевіряють точність даних перед передачею. Їхній підхід передбачає обсягово-зважене ціноутворення активів (VWAP) для агрегування справедливих ринкових значень, які найкраще відображають цінові позиції активів.
Мережі вузлів регулярно (пульсують) або на основі порогів відхилення цін відправляють ціни на ланцюжок. Це обмеження, пов'язане з високими витратами на газ на головній мережі, може зробити оновлення цін дорогими та призвести до збільшення затримки, що зменшить продуктивність Oracle. Витрати на підтримку таких Oracle можуть бути високими, особливо під час періодів високої волатильності, що робить своєчасні оновлення Oracle критичними.
Останні реалізації пулів Curve (пули StableSwap та CryptoSwap) включають обчислення ціни EMA, які відкрито за допомогою функцій-гетерів, таких як price_oracle()
. Ці пули не покладаються на зовнішніх оракулів, а замість цього розраховують ціни активів відносно токена у пулі на основі їх власних внутрішніх торговельних операцій. EMA збільшує витрати на маніпулювання за допомогою згладжених коригувань цін, знаходячи баланс між маніпулюванням та відхиленням ціни від ринкової. Кожен пул має ma_exp_time
які можна налаштувати шляхом голосування в Curve DAO.
Як було розкрито в документації Curve Oracle, EMA Oracle активно розробляється:
“Якщо ви хочете використовувати функціональність «оракула ціни» Curve або будь-якого іншого оракула цін для надання даних про ціни на ланцюжку в вашому децентралізованому додатку, який ви будуєте, ми радимо вам проявляти особливу обережність.”
Різні реалізації пулу модифікують версії коду EMA Oracle, тому інтеграторам необхідно розуміти реалізацію Oracle цільового пулу.
У листопаді 2023 року під час впровадження стабільного обміну-pool було виявлено помилку, яка вплинула на басейн Oracle. Цю помилку виявлено незабаром після впровадження використання пулу під час другорядного аудиту yAudit. Це спричинило пропозицію щодо оновлення впровадження та відміни деяких постраждалих пулів. Кошти не були під загрозою, проте ця подія підкреслила активний розвиток оракулів Curve pool та потенціал невідповідностей між пулами, незважаючи на обширні аудити, та можливість продовження існування помилок, які можуть зробити оракули вразливими до маніпуляцій або неточностей.
Третя частина цього звіту - це аналіз викупу wstETH TroveManager. З урахуванням значного впливу викупу на користувачів Prisma, у цьому розділі подано спостереження щодо історичних викупів, які будуть оцінені порівняно з альтернативним Curve EMA Oracle в порівняльному аналізі.
Під час запитування подій викупу на TroveManager wstETH виявлено понад 200 викупних транзакцій загалом, з яких 190 транзакцій визначено як транзакції BOT (метод визначення транзакцій, виконаних BOTs, буде пояснено пізніше в цьому ж розділі). Нижче наведено візуалізацію, яка показує частоту цих транзакцій з плином часу.
Джерело: Dune query_3402461
Тільки 3 боти часто обмінюють mkUSD:
Джерело: Запит Dune_3402461
Кожен БОТ слідує схожому загальному процесу набуття mkUSD та викупу. Нижче подано одну з операцій БОТ, яка розкриває деякі корисні відомості:
Джерело: Дослідник Phalcon Tx
Шаблон транзакції BOT можна поділити на наступні підкатегорії:
Отримуйте швидкі кредити від Uniswap V3: USDC.
Переведіть USDC на mkUSD за допомогою Curve.fi Factory USD Metapool: Prisma mkUSD.
Обмінюйте mkUSD на wstETH на wstETH TroveManager.
Розгорніть wstETH на stETH на wstETH.
Обмінюйте stETH на ETH на кривій стETH/ETH пулі.
Обгорнути ETH, погасити кредит та розподілити прибуток та комісії.
Прибутковість MEV залежить від різниці в цінах на кроках 2, 3 та 5:
2: При зниженні ціни mkUSD збільшується вигідність викупу.
3: Посібники динамічної викуповувальної комісії зменшуються як функція останніх кількостей викупу та часу з моменту викупу, тому прибутковість викупу зростає.
-5: При зростанні просідання на активних біржах (наприклад, stETH) збільшується виправданість викупу. LSD, такі як stETH, можуть бути безпосередньо обмінені на базовий ETH, але цей процес потребує період очікування, що робить ліквідність на вторинному ринку вирішальною.
Prisma використовує механізм для обмеження можливостей заробітку від обміну mkUSD на wstETH через динамічні комісії. Крок 3 передбачає динамічні комісії для запобігання частим та надмірним обміном. Незважаючи на цей механізм, обміни все одно можуть відбуватися через неправильне ціноутворення оракулів для видобутку MEV. Оракульні котирування для обміну mkUSD можуть пропонувати власникам скарбниці неоптимальні курси застави, що призводить до негативного досвіду користувача.
Пропозиція щодо зміни ціноутворення Oracle Prisma для stETH була схвалена. Спочатку Prisma використовувала оракул Chainlink stETH/USD з порогом допустимого відхилення 1% для TroveManager wstETH. Було виявлено, що використання комбінації оракулів Chainlink stETH/ETH та ETH/USD може призвести до покращення, з порогом допустимого відхилення 0.5% для кожного оракула.
Будь ласка, звертайте увагу на відхилення між новим Оракулом та старим Оракулом з роздільною здатністю 15 блоків:
Джерело: Графік від @wavey
Було відзначено, що коли торговельна ціна mkUSD падає нижче закріпленої ставки, відбуваються надмірні викупи через відхилення Oracle, яке перевищує 1%. У цих випадках ми виявили, що динамічні комісії були недостатніми для запобігання надмірним викупам, спричиненим відхиленнями в цінах. Будь ласка, зверніться до налаштування комісій за викупні події нижче.
Джерело: Графік від @wavey
Ці викупи можуть призвести до непрямих витрат для користувачів Prisma, оскільки вони можуть отримувати невигідні ставки при викупі своїх скарбниць. Аналіз Wavey показує, що оракул stETH/USD більш схильний до відхилення порівняно з комбінаціями оракулів, підтвердженими вищезазначеними даними. Тимчасові відхилення, що перевищують 1,2%, створили можливості для MEV-ботів для експлуатації.
Пропозиція змінити Оракула (PIP-004) була виконана 17 листопада 2023 року о 735 вечора +UTC, разом з цією транзакцією. На підставі наведеної нижче діаграми цін mkUSD та дати виконання пропозиції можна помітити, що після виконання пропозиції реалізована ціна mkUSD в USDC знизилася. Зменшення прибутковості викупів через покращення оракулів може призвести до зниження стабільності пегінгу.
Джерело: Dune query_5685458
Інші впливові фактори також повинні бути враховані, включаючи обмеження моделі процентної ставки протоколу, сценарії використання mkUSD та невідповідні заохочувальні заходи. Ще одна значуща пропозиція, яка обмежує викуп, - PIP-019, яка була виконана 31 січня. Ця пропозиція збільшила базову комісію за викуп для всіх TroveManagers на 1%-1,5%, знижуючи анкерну еластичність mkUSD за рахунок зменшення ризику викупу для власників Prisma trove.
Аналіз спрямований на оцінку продуктивності реалізованих оракулів Prisma та оцінку гіпотетичної продуктивності альтернативних on-chain оракулів Curve EMA з використанням історичних даних. Висновки дослідження нададуть початкові уявлення про поведінку off-chain та on-chain оракулів, дозволяючи більш детальну оцінку у наступних дослідженнях.
Метою цього аналізу є визначення того, чи надає поточний оракул найбільш оптимальне рішення щодо продуктивності, чи можна зробити поліпшення, реалізуючи рішення на ланцюжку або гібридні рішення з використанням оракула пулу EMA кривої.
Аналіз буде спрямований на stETH, оскільки це найбільш поширений LSD з взрослим ціновим потоком Chainlink та глибокою ліквідністю в пулі Curve. Був проведений аналіз інших заставних засобів, перелічених на Prisma, і результати наведені в Додатку B звіту для посилання.
Порівняльний аналіз передбачає оцінку ступеня відповідності між даними випробувань та посиланнями набору даних. У цьому випадку розглядаються два набори даних: дані випробувань, що цікавлять, та посилання на набір даних. Хоча очікується, що дані випробувань мають тісно відслідковувати посилання на дані, можуть виникнути відхилення.
Для кількісної оцінки вирівнювання ми досліджуємо залишки, які суттєво представляють собою різницю між даними випробування та довідковими даними. Аналіз залишків спрямований на виявлення патернів або тенденцій у цих різницях.
Під час аналізу залишків (відхилень від посилань), спостерігаються на основі стандартного відхилення залишків. Стандартне відхилення (SD) - це статистична міра, що використовується для кількісної характеристики варіабельності чи дисперсії набору значень. Воно надає показник розподілу значень навколо середнього (середнього). Низьке стандартне відхилення вказує на те, що точки даних схильні бути близькими до середнього, тоді як велике стандартне відхилення вказує на те, що точки даних розподілені по ширшому діапазону.
У нашому випадку середнє значення, близьке до 0, є бажаним, оскільки це свідчить про те, що надані ціни не переоцінюють або недооцінюють референтні ціни. Однак середнє значення, близьке до або рівне 0, з відносно високим стандартним відхиленням, вказує на значні коливання, які є небажаними, оскільки вони відповідають серйозному неправильному ціноутворенню. Джерело оракула з середнім значенням нуль та мінімальним стандартним відхиленням - це ідеальний результат, що свідчить про те, що джерело точно відстежує ринкові ціни.
Для моніторингу та оцінки точності активності цін на ланцюгу оракулів, котирування, отримані з найбільш рідкісних торгових напрямків (за винятком Curve), служать основою для аналізу залишкових значень. Конкретно, котирування з валютної пари LSD/ETH на Uniswap є основними точками посилання в цьому сценарії.
Наш аналіз включає дві стратегії для отримання цін на stETH Chainlink. Це робиться через те, що було виявлено, що відхилення оригінального Chainlink стETH/USD feed вище, ніж відхилення при використанні stETH/ETH + ETH/USD. Оракули були оновлені відповідно до пропозицій управління. Подальший аналіз, що включає покращену ціну stETH/ETH Chainlink в ETH, називається stETHv1, тоді як комбінований feed stETH/USD + ETH/USD (реплікування оригінального виконання стETH оракула, стандартизованого до ETH) називається stETHv2.
Для аналітичних цілей дані за останній квартал 2023 року були отримані з усіх відповідних активів (від блоку 18331000 до блоку 18931000, з роздільною здатністю 250 блоків для набору даних). Це створює набір даних, що містить 2401 точку даних для всіх активів.
Основним активом, що розглядається, є stETH, оскільки це тип застави, який наразі приймається Prisma, з доступними як посиланнями на Chainlink feed, так і на пул Curve StableSwap-ng (див. додаток B для аналізу rETH та cbETH, які використовують стару реалізацію пулу CryptoSwap). Усі дані було отримано шляхом запиту цін для вказаного діапазону блоків.
Ціни Oracle аналізуються з наступних джерел:
Пул ліквідності кривої
Chainlink Ціновий відгук
Адреса пулу видобутку Uniswap як агент посилання на ринкову ціну наступна:
Цінова пропозиція Uniswap
Для стандартизації LSD до його базового ETH ми використовуємо внутрішній обмінний курс LSD/ETH:
Внутрішній курс обміну LSD/ETH
У цьому розділі ми порівняємо точність поточного цінового каналу Chainlink stETH з Curve.
Chainlink stETHv1 Feed vs. Curve
Chainlink: stETH/ETH feed
Крива: басейн stETH/ETH
Нижче наведено безпосереднє порівняння цін на stETH від Chainlink та Curve. У зв'язку з циклом 24-годинного пульсу Chainlink stETH/ETH, ціна коливається кожні кілька блоків. Порівняно, коливання більш помітні в подачі Chainlink (краще візуалізовані в подачі Chainlink stETH/USD) порівняно з Curve, оскільки Curve використовує час 10-хвилинного EMA (ma_exp_time) для похідної ціни.
Якщо ми віднімемо ціну від Curve від ціни від Chainlink, ми отримаємо залишки, як показано нижче:
Середнє значення відхилення становить ~-0.000305.
Важливим спостереженням, яке можна зробити тут, є те, що Curve Oracle трохи завищує свої цінові дані порівняно з Chainlink.
Chainlink stETHv2 та Curve
Chainlink: stETH/USD feed / ETH/USD feed
Крива: стETH/ETH пул
Нижче наведено порівняння цін від альтернативних потоків Chainlink, віднормованих до ETH (stETH/USD та ETH/USD) порівняно з кривою stETH. Оскільки у Chainlink stETH/USD є поріг відхилення 1% (порівняно з 0.5% у потоці stETH/ETH), ціна виявляє більше відхилення навколо якорної ціни.
Як вже спостерігалося, коливання ціни stETH/USD Chainlink виражені в більш виразний спосіб порівняно з Curve.
Середнє значення відхилення становить ~-0.000171.
Залежно від масштабу, ця стрічка має більші залишкові значення, тобто більшу волатильність, ніж stETH/ETH.
У цьому розділі ми порівняємо історичну точність цінового каналу Chainlink stETH з референсною ринковою ціною з Uniswap.
Припускаючи, що дані цінових пулів UniswapV3 служать надійним проксі для ринкових цін, ми можемо порівняти раніше отримані базові дані, щоб перевірити близькість подачі Chainlink Oracle до референтних значень.
Uniswap Spot vs. Chainlink stETHv1
Chainlink: стETH/ETH feed
Uniswap: внутрішній курс обміну wstETH/ETH пулу / wstETH/stETH
Ось фактичне відхилення між ціною на місці Uniswap та Chainlink stETH/ETH:
Середнє залишкове значення = 0,000415
Стандартне відхилення цінових різниць = 0,000601
Uniswap Spot vs. Chainlink stETHv2
Chainlink: stETH/USD feed / ETH/USD feed
Uniswap: wstETH/ETH pool / wstETH/stETH internal exchange rate
Тут фактичне відхилення між Uniswap stETH та Chainlink stETH (stETH/USD):
Різниця в ціні означає = 0.000281
Стандартне відхилення різниці ціни = 0.002747
Тут ми порівнюємо Chainlink stETHv1 (тобто stETH/ETH) та stETHv2 (тобто stETH/USD) з даними Uniswap, і результати показують, що відхилення stETHv2 значно більше, ніж у stETHv1.
Та ж сама спостереження було зроблено також у пропозиції з управління Prisma (PIP-004), коли оракул перейшов з stETH/USD на stETH/ETH + ETH/USD для зменшення відхилень вартості корму.
У цьому розділі ми порівняємо історичну точність оракула stETH Curve з посиланням на ціну від Uniswap.
Припускаючи, що дані цінових басейнів UniswapV3 служать надійним проксі для ринкових цін, ми можемо порівняти раніше отримані контрольні дані, щоб перевірити близькість поточних значень Curve Oracle до посилання.
Uniswap Spot проти Curve
Крива: стETH/ETH пул
Uniswap: wstETH/ETH pool / wstETH/stETH internal exchange rate
На основі подібного аналізу залишкових величин, як у вище, ми отримуємо наступні метрики для порівняння з раніше встановленим показником:
Середня різниця в ціні = 0.000110.
Стандартне відхилення різниці цін = 0,000141.
Як було помічено, середня ціна, яку повідомляє Curve, трохи нижча, ніж на Uniswap spot, з помітно нижчим стандартним відхиленням порівняно з будь-яким джерелом від Chainlink.
Порівнюючи ці показники, ми виявляємо, що відхилення даних Chainlink значно більше, ніж Curve, коли посилання на дані Uniswap використовується як проксі для ринкових цін.
Оскільки вищевказані спостереження базуються на відхиленнях від кожного джерела цін, є можливість того, що в подачі Curve Oracle можуть бути позитивні відхилення, тоді як подача Chainlink показує негативні відхилення, і навпаки. Цей сценарій повністю негується, оскільки діапазони відхилень подач Chainlink та Curve Oracle є меншими порівняно з діапазонами відхилень Uniswap & Chainlink та Uniswap & Curve.
Таблиця нижче відображає аналіз залишкових значень, проведений на зібраних даних. Середнє значення залишку, помножене на 100, дає середній відсоток відхилення цільового активу від посилання (в доларах США, порівняно з цінами на ETH, вираженими в доларах США).
Таблиця безпосередньо порівнює відносну продуктивність Chainlink та Curve з посиланням на Uniswap у термінах середнього та стандартного відхилення для кожного активу. У всіх випадках Curve демонструє нижчі значення середнього та стандартного відхилення. Множник точності показує відносну точність кожного спостережуваного значення.
Основні пункти тут наступні:
Аналіз спрямований на порівняння цін на втілення подій викупу в WstETH TroveManager з гіпотетичними цінами, що були наведені за допомогою історичних даних альтернативними on-chain оракулами. Результати дослідження нададуть початкові уявлення про поведінку off-chain та on-chain оракулів, що дозволить більш детально оцінити в наступних дослідженнях.
Метою цього аналізу є визначення того, чи надає поточний оракул найкраще рішення щодо продуктивності в конкретних сценаріях викупу, чи можна зробити покращення за допомогою впровадження рішень на ланцюжку або гібридних рішень, використовуючи оракули басейну Curve EMA.
Даний аналіз спеціально зосередиться на stETH, оскільки він є найбільш поширеним LSD та має витримані цінові стрічки Chainlink та глибоку ліквідність у пулі Curve. У роботі будуть агреговані всі події з викупом, порівнюючи реалізовані ціни оракулів stETH з декількома альтернативними цінами оракулів, вираженими в USD, та використовуючи ціну оракула stETH/ETH від Curve.
Для цього аналізу реалізована ціна stETH обчислюється, поділивши суму, погашену в mkUSD, на кількість stETH, втрачених Менеджером Скарбу у формі wstETH. Щоб визначити кількість stETH, нам потрібно врахувати отримані wstETH від погашення плюс витрачені wstETH як комісійні та перевести їх у stETH. Якщо будь-який альтернативний джерело постійно пропонує нижчі прибутки для осіб, що викупають, ми можемо сказати, що їхній роботи MEV краще, ніж реальна ціна.
Менеджер TroveManager wstETH використовується для отримання всіх хешів транзакцій при отриманні mkUSD у обмін на mkUSD. Транзакції, де адреса, що викуповує mkUSD, отримує й знищує mkUSD, вважаються транзакціями BOT. Детальні запити для подій викупу можна знайти тут: Dune query_3352919. Цей запит є важливим для отримання всіх даних з транзакцій BOT.
Запит Dune використовується для ідентифікації транзакцій BOT, які отримують всі значення хешів транзакцій, реалізовану обмінну ставку wstETH для викупу mkUSD та номер блоку подій викупу. Номери блоків, отримані з запиту, використовуються як вхідні дані до запиту наступних даних, які використовуються для порівняння поточної реалізації зі змінами ціни живлення Curve stETH:
На основі вищезазначених даних ми можемо побудувати три цінових стрічки, використовуючи ціновий індикатор Curve Oracle stETH/ETH, і об'єднати їх з ETH/USD для отримання stETH/USD. Після цієї операції ми отримуємо наступні дані для візуалізації:
Вищезазначені дані надають ціну stETH в USD, яку можна проаналізувати на основі реалізованих цін stETH з усіх операцій BOT. Реалізований stETH (в USD) просто використовується для розрахунку ціни stETH за кожен наданий mkUSD під час викупу.
Нижче наведено 4 джерела цін на stETH для блоку торгівлі BOT (1 посилання та 3 альтернативи, про які говорилося вище). Реалізовані ціни - це ціни з реалізованих цінових оракулів (тобто Chainlink). Це порівнюється з 3 потоками, використовуючи Curve stETH/ETH як основу. Тут більш висока цитата призведе до зменшення вартості stETH, обмінюваної на mkUSD, і навпаки.
На основі вищезазначеної інформації ми можемо моделювати відносну кількість stETH, отриману в результаті погашення mkUSD, та нормалізувати її в залежності від фактичної отриманої суми від існуючого оракула. Наступний графік відображає stETH, отриманий від mkUSD до того, як будуть взяті комісії, та обробляє дані для видалення викидів з метою поліпшення візуалізації:
Аналіз показує чіткий тренд: коли поєднується Curve stETH/ETH з Uniswap ETH/USDC та Chainlink ETH/USD, кількість stETH, доступних для викупу mkUSD, зменшується. Відповідно, зменшення кількості одиниць stETH на одиницю mkUSD призводить до зменшення прибутків від BOT. Надана візуалізація ілюструє порівняння прибутків від BOT за різних припущених цін на корм та фактичну ціну на корм, за винятком комісій.
Очевидно, що поєднання Curve stETH/ETH, Uniswap ETH/USDC та Chainlink ETH/USD зменшує прибутковість викупів у порівнянні з реалізованою ціною живого корму.
Визнавши вбудовані ризики, пов'язані з виключним спиранням на оракул Curve, особливо під час періодів низької ліквідності або коливань ліквідності, запропоноване рішення стратегічно інтегрує оракул Chainlink як заходи безпеки (тобто резервний план) у випадку відхилень. Беручи до уваги незначну ймовірність надання невірних даних Chainlink, він може слугувати надійною резервною опцією.
Це рішення діє як фільтр, враховуючи як ціни Curve, так і Chainlink. Умови встановлюються в межах функції, яка служить вимикачем. Для створення цієї умови вводиться концепція прийнятного діапазону. Цей діапазон представляє собою прийнятну різницю між цінами оракулів Chainlink та Curve. Коли спостережена різниця перевищує цей діапазон, це вказує на потенційну упередженість або маніпуляцію даними оракула Curve. У таких випадках функція зменшує потенційні ризики, підтримуючи більш безпечні ціни Chainlink. Навпаки, коли різниця попадає в прийнятний діапазон, функція покладається на точність та узгодженість оракула Curve.
Варто зазначити, що прийнятний діапазон може бути налаштований як статичний або динамічний, в залежності від волатильності базових активів (наприклад, ETH та пов'язаного LSD). Динамічний характер дозволяє адаптуватися до змінливих ринкових умов, забезпечуючи еластичність та механізми реагування в процесі визначення ціни. Ця подвійна стратегія мінімізує залежність від одного джерела даних, тим самим підвищуючи загальну стійкість та надійність механізму ціноутворення.
Рішення вводить статичний метод, acceptable_range, для вирішення потенційних вразливостей при використанні виключно оракула Curve. Хоча ціни, що генеруються оракулом Curve, можуть бути точнішими, ніж у Chainlink, вони можуть бути вразливими до маніпулювання. Зі свого боку, Chainlink є надійним і перевіреним, вважається безпечнішим вибором в індустрії. Коли різниця між оракулом Curve і Chainlink перевищує фіксоване значення, acceptable_range служить порогом для переходу до поточного Chainlink.
Стратегічно, acceptable_range приймає котирування, які знаходяться в межах ±1% від котирувань Chainlink. Це майже три стандартних відхилення від середньої різниці між Curve та Chainlink, враховуючи покращені котирування stETH/ETH та ETH/USD порівняно з попереднім котируванням stETH/USD.
Цінова похідна - це функція або механізм, спрямований на визначення кінцевої цитати для заданого активу, особливо в сценаріях з використанням Curve Oracle та Chainlink Oracle.
У викладеному рішенні ця функція оцінює котирування як від Curve Oracle, так і від Chainlink Oracle. На основі спостереженої різниці між цими двома цінами та тим, чи вона вписується у заданий діапазон accepted_range, функція виводить різні похідні ціни.
Тут порівняння derived_price з іншими джерелами цін, що вже відображалися раніше:
Прибуток від BOT може бути візуалізований за допомогою ціни похідного (оскільки немає відхилення, ця ціна буде точно дорівнювати Curve stETH/ETH та CL stETH/ETH), як показано нижче:
Аналіз загального прибутку може розкрити загальну картину. Було ідентифіковано шість викидів, і загальний прибуток для кожного випадку було розраховано до та після фільтрації викидів.
Крива stETH/ETH та Uniswap ETH/USDC найкраще зменшують доступний прибуток для БОТів. Отримана ними ціна має такий же потенціал прибутку, як і поточна реалізація оракулу stETH, але обмежує прибуток, припускаючи, що вона заощаджує користувачам приблизно 35,4 ETH на аналізованих 189 транзакціях.
Через велику залежність від котирувань найбільш рідкісних децентралізованих бірж для операцій on-chain та того факту, що боти MEV також слідкують за тими ж котируваннями при обміні mkUSD на LSD, точність котирувань (використовуваних для цінування викупувань Оракулом) є надзвичайно важливою.
Історичні дані свідчать, що ціни оракулів пулу Curve ближчі до посилання (дані цін UniswapV3) порівняно з цінами Chainlink. Дані свідчать про те, що впровадження оракула Curve зменшило б MEV для ботів та забезпечило б кращі обмінні курси для користувачів, які викупають свої скарби.
Хоча використання Curve Oracle як самостійного Oracle може бути спокусливим, ефективність зворотного зв'язку з ціною Curve залежить від глибини ліквідності конкретних активів та взаємодії з пулом. Гібридне рішення Oracle з використанням Curve Oracle та Chainlink Oracle може бути використане для відповідності цін на ланцюгу, зберігаючи надійність та широке охоплення ринку, успадковані від Chainlink Oracle.
Запропоноване гібридне рішення Oracle оцінює стандартне відхилення (SD), щоб згенерувати похідну_ціну. Якщо SD наближається до 0, це свідчить про відповідність до посилань на похідну_ціну, що робить його варто розглянути. Це забезпечує, що коли Oracle Curve відхиляється від попередньо визначених порогових значень, рішення динамічно переключається на безпечніший джерело Chainlink. Оскільки це рішення майже завжди виводить цитату Curve стETH, припускається, що діяльність MEV така сама, як при використанні Curve стETH/ETH, без резервного варіанту.
Додаток A: Сценарії обробки даних
Скрипти, використані для генерації аналізу в цьому звіті, наведено нижче:
Додаток B: аналіз залишкового рETH/cbETH
Інші графіки rETH
Chainlink та Curve
Uniswap та Curve
Uniswap та Chainlink
Перевірте пік rETH
Під час спостереження ціни оракула rETH кілька разів досягали піку. Це спричинило різке збільшення відхилення ціни оракула від ціни на місцях. Нижче наведено докладну діаграму, яка показує поведінку резерву/ліквідності токенів під час кількох періодів підйому цін та ціну оракула.
start_block = 18824000
end_block = 18827000
interval_blocks = 100
Відсоток пулу видобутку:
Ціна Oracle:
start_block = 18850000
end_block = 18858000
interval_blocks = 100
Відношення майнінг-пулу:
Ціна Oracle:
start_block = 18880000
end_block = 18885000
interval_blocks = 100
Співвідношення пулу майнінгу:
Ціна Oracle:
Інші графіки cbETH
Chainlink та Curve
Uniswap та Curve
Uniswap та Chainlink
Перевірте Peak cbETH
Протягом періоду спостереження ціни оракула cbETH Curve декілька разів досягали піку. На кількох випадках це призвело до значних стрибків у відхиленні ціни між ціною оракула та референтною ціною на місці. Нижче наведено більш детальну діаграму, що показує поведінку відношень ліквідності пулів / ліквідності токенів під час цих періодів стрибків цін та поведінку цін оракула.
start_block = 18693500
end_block = 18696000
interval_blocks = 10
Співвідношення майнінг-пулу:
Ціна Oracle:
start_block = 18814000
end_block = 18816500
interval_blocks = 10
Співвідношення майнінг-пулу:
Ціна Oracle:
start_block = 18800000
end_block = 18805000
interval_blocks = 10
Співвідношення майнинг-пулу:
Ціна Oracle:
Ця стаття взята з [Gatemarsbit], оригінальна назва «Компаративний аналіз Prisma optional oracles», авторське право належить оригінальному автору [PrismaRisk], якщо у вас є які-небудь зауваження до репринту, будь ласка, зв'яжітьсяGate Learn Команда, команда обробить це якнайшвидше згідно з відповідними процедурами.
Disclaimer: Погляди та думки, висловлені в цій статті, представляють лише особисті погляди автора та не становлять жодної інвестиційної поради.
Інші мовні версії статті перекладені командою Gate Learn, не згадано у Gate.io, перекладена стаття не може бути відтворена, поширена або узята з плагіату.
Це дослідження виникло з виклику отримання надійної інформації про ціни on-chain, яка максимізує безпеку, відображаючи при цьому поточні ціни активів, що є метою. Ми спеціально зосереджуємося на забезпечувальних активах Prisma Finance (wstETH, rETH, cbETH та sfrxETH), а також деривативах з ліквідним стейкінгом на базі Ethereum (LSD). Деякі з цих активів не мають джерел даних Chainlink (часто вважається золотим стандартом для надійних даних про ціни), що впливає на їх інтеграцію з платформою Prisma.
Остання реалізація стабільного пулу фінансів Curve включає внутрішній пул Oracle, який обчислює експоненційний ковзний середній (EMA) для отримання даних про ціни, які не піддаються втручанню. Хоча інтегратори вже почали вивчати використання Oracle в інших додатках DeFi, Oracle використовується в основному для забезпечення безпеки забезпечення власного ринку crvUSD Curve.
Основною метою цього звіту є визначення того, чи може оракул Curve Finance служити надійною альтернативою Chainlink для токенів ETH LSD. Це дослідження включає статистичний аналіз ефективності оракула ціни Curve, порівняння його волатильності, точності та загальної продуктивності з референтними цінами на Uniswap (припускається, що це точні ціни на ланцюжку).
Аналіз поділений на два пов'язаних дослідження:
Аналіз залишкових оракулів stETH: порівняльне дослідження між Chainlink та Curve, використовуючи історичні дані для визначення відхилення оракула від відносно середнього значення та стандартного відхилення посилання на ціну.
Аналіз викупу stETH MEV: порівняльне дослідження між Chainlink та онлайн-оракулом, використовуючи історичні дані для вивчення подій викупу на Prisma та оцінки прибутковості роботів та очікуваної поведінки з використанням альтернативних Оракулів.
Після аналізу ми надаємо попередні технічні характеристики для Оракула, очікуючи покращення відхилення ціни Оракула, забезпечуючи надійність Оракула. Запропоноване рішення може слугувати початковим планом для інших досліджень, спрямованих на оптимізацію Оракула.
Ефективність оракулів оцінюється в конкретному середовищі використання Prisma: ліквідація та викуп. (Додатково зазначимо, що ті самі оракули також використовуються для видачі токенів та продажу набутих токенів в «токенізований стабільний пул», важливість якого зросте після запуску.)
Виступ Оракула має вирішальне значення для користувачів Prisma, оскільки арбітражники можуть мати можливість отримати прибуток від розбіжностей між цінами Оракула та ринковими цінами. Забезпечення використання найточнішого зворотнього зв'язку щодо цін під час ліквідації та викупу, не жертвуючи безпекою джерел ціноутворення, відповідає найкращим інтересам протоколу Prisma та його депозитарів скарбниці.
Дві функції Oracle в межах Prisma описані наступним чином:
Щоб захистити Prisma від банкрутства, де позиції з боргами перевищують вартість їх застави, контракт LiquidationManager виконує логіку ліквідації на всіх активних TroveManagers (казначействах Prisma). Ліквідацію можна спровокувати одним із трьох способів, в залежності від відношення застави цільового рахунку та загального відношення застави в системі.
Індивідуальний коефіцієнт застави (ICR) <= 100%: У рахунку (скарбниці) недостатньо застави. Усі борги та застава розподіляються серед залишених активних скарбниць, ефективно соціалізуючи збиток.
100% < ICR < Мінімальний коефіцієнт застави (MCR): Скарбниця опускається нижче порогу ліквідації, але може бути безпечно ліквідована. Стабільний пул використовується як резерв для обробки ліквідацій (стимулювання ліквідаційного пулу). Застава розподіляється між депозитарями стабільного пулу. Якщо баланс стабільного пулу недостатній для повного погашення скарбниці, залишковий борг і застава розподіляються серед залишкових активних скарбниць.
MCR ≤ ICR ≤ Глобальний Загальний Коефіцієнт Забезпечення (ГЗКЗ) && ГЗКЗ < 150%: Система перебуває в режимі відновлення, що означає, що скарбниці можуть бути ліквідовані, коли КЗ перебуває нижче ГЗКЗ, а не MCR. Вклади в стабільний пул використовуються спочатку для ліквідації скарбниці. Забезпечення, еквівалентне значенню заборгованості при MCR, розподіляється серед вкладників стабільного пулу. Залишкове забезпечення може бути вимагане власником скарбниці.
Можливість ліквідації Prisma збільшується, коли ETH або ETH LSD відчувають значні коливання цін, особливо зниження, в умовах високої волатильності ринку. Хоча відмови або маніпуляції Oracle можуть впливати на протокол у будь-який момент, ризик відмови Oracle може збільшитися в найбільш критичні моменти. Заставні активи можуть не оновлювати ціни вчасно через стрибки в оплаті газу, або методологія ціноутворення Oracle може недостатньо відслідковувати зростаючу волатильність, що призводить до неправильної ціноутворення. Банкрутства можуть збільшуватися, що потребує перерозподілу серед активних скарбниць, або позичальників можуть недобросовісно ліквідувати (у випадках, коли Oracle помилково повідомляє про ціни нижче ринкових цін).
Арбітражники завжди можуть ініціювати викуп, вибравши викуп 1 mkUSD вартості забезпечення за 1 долар (+ динамічні викупні комісії), починаючи з скарбниці з найнижчим відношенням забезпечення в системі. Це допомагає посилити його пег, коли ціна mkUSD падає нижче 1 долара. Процес викупу зменшує забезпечення ризику цільової скарбниці та збільшує її відношення забезпечення. Сторона, що виконує викуп, платить комісію, яку називають комісією викупу. Діапазон комісій за викуп встановлюється для TroveManager і представляє суму мінімальної комісії за викуп + базова ставка. Змінні, збережені в TroveManager, збільшуються пропорційно з викупеною загальною кількістю мкUSD та лінійно зменшуються з плином часу. Ця динамічна комісія, базова ставка, налаштовує прибутковий рівень викупу.
Хоча ліквідації на Prisma історично були рідкісними, викупи є поширеними і потребують особливої уваги для Оракулів. Боти MEV активно шукають такі можливості для швидкого заробітку через флеш-кредити.
Крім незручностей, пов'язаних з примусовим викупом їх скарбниць, користувачі можуть відчути деяке видобуток вартості через відхилення між Оракулом та ринковими цінами. Неправильне ціноутворення може призвести до втрат користувачів більше активів, ніж необхідно, особливо коли Оракул повідомляє ціни нижче справедливої ринкової вартості. З іншого боку, ціни, повідомлені Оракулом, вище, ніж справедливі ринкові ціни, можуть унеможливити погашення, знімаючи зміцнення механізму погашення мкUSD за підлогою.
Ось короткий огляд провідних кандидатів на оракульні котировки Oracle на Prisma.
Chainlink - це децентралізована мережа оракулів, яка агрегує дані з широкого спектру ринкових джерел і підключає ці дані до смарт-контрактів. Її архітектура ґрунтується на незалежних операторах вузлів, які отримують та передають дані з різних бірж та API агрегаторів ринкових даних, мінімізуючи одиничні точки відмов та підвищуючи безпеку. Цілісність даних забезпечується за допомогою криптографічних методів та механізмів консенсусу, які перевіряють точність даних перед передачею. Їхній підхід передбачає обсягово-зважене ціноутворення активів (VWAP) для агрегування справедливих ринкових значень, які найкраще відображають цінові позиції активів.
Мережі вузлів регулярно (пульсують) або на основі порогів відхилення цін відправляють ціни на ланцюжок. Це обмеження, пов'язане з високими витратами на газ на головній мережі, може зробити оновлення цін дорогими та призвести до збільшення затримки, що зменшить продуктивність Oracle. Витрати на підтримку таких Oracle можуть бути високими, особливо під час періодів високої волатильності, що робить своєчасні оновлення Oracle критичними.
Останні реалізації пулів Curve (пули StableSwap та CryptoSwap) включають обчислення ціни EMA, які відкрито за допомогою функцій-гетерів, таких як price_oracle()
. Ці пули не покладаються на зовнішніх оракулів, а замість цього розраховують ціни активів відносно токена у пулі на основі їх власних внутрішніх торговельних операцій. EMA збільшує витрати на маніпулювання за допомогою згладжених коригувань цін, знаходячи баланс між маніпулюванням та відхиленням ціни від ринкової. Кожен пул має ma_exp_time
які можна налаштувати шляхом голосування в Curve DAO.
Як було розкрито в документації Curve Oracle, EMA Oracle активно розробляється:
“Якщо ви хочете використовувати функціональність «оракула ціни» Curve або будь-якого іншого оракула цін для надання даних про ціни на ланцюжку в вашому децентралізованому додатку, який ви будуєте, ми радимо вам проявляти особливу обережність.”
Різні реалізації пулу модифікують версії коду EMA Oracle, тому інтеграторам необхідно розуміти реалізацію Oracle цільового пулу.
У листопаді 2023 року під час впровадження стабільного обміну-pool було виявлено помилку, яка вплинула на басейн Oracle. Цю помилку виявлено незабаром після впровадження використання пулу під час другорядного аудиту yAudit. Це спричинило пропозицію щодо оновлення впровадження та відміни деяких постраждалих пулів. Кошти не були під загрозою, проте ця подія підкреслила активний розвиток оракулів Curve pool та потенціал невідповідностей між пулами, незважаючи на обширні аудити, та можливість продовження існування помилок, які можуть зробити оракули вразливими до маніпуляцій або неточностей.
Третя частина цього звіту - це аналіз викупу wstETH TroveManager. З урахуванням значного впливу викупу на користувачів Prisma, у цьому розділі подано спостереження щодо історичних викупів, які будуть оцінені порівняно з альтернативним Curve EMA Oracle в порівняльному аналізі.
Під час запитування подій викупу на TroveManager wstETH виявлено понад 200 викупних транзакцій загалом, з яких 190 транзакцій визначено як транзакції BOT (метод визначення транзакцій, виконаних BOTs, буде пояснено пізніше в цьому ж розділі). Нижче наведено візуалізацію, яка показує частоту цих транзакцій з плином часу.
Джерело: Dune query_3402461
Тільки 3 боти часто обмінюють mkUSD:
Джерело: Запит Dune_3402461
Кожен БОТ слідує схожому загальному процесу набуття mkUSD та викупу. Нижче подано одну з операцій БОТ, яка розкриває деякі корисні відомості:
Джерело: Дослідник Phalcon Tx
Шаблон транзакції BOT можна поділити на наступні підкатегорії:
Отримуйте швидкі кредити від Uniswap V3: USDC.
Переведіть USDC на mkUSD за допомогою Curve.fi Factory USD Metapool: Prisma mkUSD.
Обмінюйте mkUSD на wstETH на wstETH TroveManager.
Розгорніть wstETH на stETH на wstETH.
Обмінюйте stETH на ETH на кривій стETH/ETH пулі.
Обгорнути ETH, погасити кредит та розподілити прибуток та комісії.
Прибутковість MEV залежить від різниці в цінах на кроках 2, 3 та 5:
2: При зниженні ціни mkUSD збільшується вигідність викупу.
3: Посібники динамічної викуповувальної комісії зменшуються як функція останніх кількостей викупу та часу з моменту викупу, тому прибутковість викупу зростає.
-5: При зростанні просідання на активних біржах (наприклад, stETH) збільшується виправданість викупу. LSD, такі як stETH, можуть бути безпосередньо обмінені на базовий ETH, але цей процес потребує період очікування, що робить ліквідність на вторинному ринку вирішальною.
Prisma використовує механізм для обмеження можливостей заробітку від обміну mkUSD на wstETH через динамічні комісії. Крок 3 передбачає динамічні комісії для запобігання частим та надмірним обміном. Незважаючи на цей механізм, обміни все одно можуть відбуватися через неправильне ціноутворення оракулів для видобутку MEV. Оракульні котирування для обміну mkUSD можуть пропонувати власникам скарбниці неоптимальні курси застави, що призводить до негативного досвіду користувача.
Пропозиція щодо зміни ціноутворення Oracle Prisma для stETH була схвалена. Спочатку Prisma використовувала оракул Chainlink stETH/USD з порогом допустимого відхилення 1% для TroveManager wstETH. Було виявлено, що використання комбінації оракулів Chainlink stETH/ETH та ETH/USD може призвести до покращення, з порогом допустимого відхилення 0.5% для кожного оракула.
Будь ласка, звертайте увагу на відхилення між новим Оракулом та старим Оракулом з роздільною здатністю 15 блоків:
Джерело: Графік від @wavey
Було відзначено, що коли торговельна ціна mkUSD падає нижче закріпленої ставки, відбуваються надмірні викупи через відхилення Oracle, яке перевищує 1%. У цих випадках ми виявили, що динамічні комісії були недостатніми для запобігання надмірним викупам, спричиненим відхиленнями в цінах. Будь ласка, зверніться до налаштування комісій за викупні події нижче.
Джерело: Графік від @wavey
Ці викупи можуть призвести до непрямих витрат для користувачів Prisma, оскільки вони можуть отримувати невигідні ставки при викупі своїх скарбниць. Аналіз Wavey показує, що оракул stETH/USD більш схильний до відхилення порівняно з комбінаціями оракулів, підтвердженими вищезазначеними даними. Тимчасові відхилення, що перевищують 1,2%, створили можливості для MEV-ботів для експлуатації.
Пропозиція змінити Оракула (PIP-004) була виконана 17 листопада 2023 року о 735 вечора +UTC, разом з цією транзакцією. На підставі наведеної нижче діаграми цін mkUSD та дати виконання пропозиції можна помітити, що після виконання пропозиції реалізована ціна mkUSD в USDC знизилася. Зменшення прибутковості викупів через покращення оракулів може призвести до зниження стабільності пегінгу.
Джерело: Dune query_5685458
Інші впливові фактори також повинні бути враховані, включаючи обмеження моделі процентної ставки протоколу, сценарії використання mkUSD та невідповідні заохочувальні заходи. Ще одна значуща пропозиція, яка обмежує викуп, - PIP-019, яка була виконана 31 січня. Ця пропозиція збільшила базову комісію за викуп для всіх TroveManagers на 1%-1,5%, знижуючи анкерну еластичність mkUSD за рахунок зменшення ризику викупу для власників Prisma trove.
Аналіз спрямований на оцінку продуктивності реалізованих оракулів Prisma та оцінку гіпотетичної продуктивності альтернативних on-chain оракулів Curve EMA з використанням історичних даних. Висновки дослідження нададуть початкові уявлення про поведінку off-chain та on-chain оракулів, дозволяючи більш детальну оцінку у наступних дослідженнях.
Метою цього аналізу є визначення того, чи надає поточний оракул найбільш оптимальне рішення щодо продуктивності, чи можна зробити поліпшення, реалізуючи рішення на ланцюжку або гібридні рішення з використанням оракула пулу EMA кривої.
Аналіз буде спрямований на stETH, оскільки це найбільш поширений LSD з взрослим ціновим потоком Chainlink та глибокою ліквідністю в пулі Curve. Був проведений аналіз інших заставних засобів, перелічених на Prisma, і результати наведені в Додатку B звіту для посилання.
Порівняльний аналіз передбачає оцінку ступеня відповідності між даними випробувань та посиланнями набору даних. У цьому випадку розглядаються два набори даних: дані випробувань, що цікавлять, та посилання на набір даних. Хоча очікується, що дані випробувань мають тісно відслідковувати посилання на дані, можуть виникнути відхилення.
Для кількісної оцінки вирівнювання ми досліджуємо залишки, які суттєво представляють собою різницю між даними випробування та довідковими даними. Аналіз залишків спрямований на виявлення патернів або тенденцій у цих різницях.
Під час аналізу залишків (відхилень від посилань), спостерігаються на основі стандартного відхилення залишків. Стандартне відхилення (SD) - це статистична міра, що використовується для кількісної характеристики варіабельності чи дисперсії набору значень. Воно надає показник розподілу значень навколо середнього (середнього). Низьке стандартне відхилення вказує на те, що точки даних схильні бути близькими до середнього, тоді як велике стандартне відхилення вказує на те, що точки даних розподілені по ширшому діапазону.
У нашому випадку середнє значення, близьке до 0, є бажаним, оскільки це свідчить про те, що надані ціни не переоцінюють або недооцінюють референтні ціни. Однак середнє значення, близьке до або рівне 0, з відносно високим стандартним відхиленням, вказує на значні коливання, які є небажаними, оскільки вони відповідають серйозному неправильному ціноутворенню. Джерело оракула з середнім значенням нуль та мінімальним стандартним відхиленням - це ідеальний результат, що свідчить про те, що джерело точно відстежує ринкові ціни.
Для моніторингу та оцінки точності активності цін на ланцюгу оракулів, котирування, отримані з найбільш рідкісних торгових напрямків (за винятком Curve), служать основою для аналізу залишкових значень. Конкретно, котирування з валютної пари LSD/ETH на Uniswap є основними точками посилання в цьому сценарії.
Наш аналіз включає дві стратегії для отримання цін на stETH Chainlink. Це робиться через те, що було виявлено, що відхилення оригінального Chainlink стETH/USD feed вище, ніж відхилення при використанні stETH/ETH + ETH/USD. Оракули були оновлені відповідно до пропозицій управління. Подальший аналіз, що включає покращену ціну stETH/ETH Chainlink в ETH, називається stETHv1, тоді як комбінований feed stETH/USD + ETH/USD (реплікування оригінального виконання стETH оракула, стандартизованого до ETH) називається stETHv2.
Для аналітичних цілей дані за останній квартал 2023 року були отримані з усіх відповідних активів (від блоку 18331000 до блоку 18931000, з роздільною здатністю 250 блоків для набору даних). Це створює набір даних, що містить 2401 точку даних для всіх активів.
Основним активом, що розглядається, є stETH, оскільки це тип застави, який наразі приймається Prisma, з доступними як посиланнями на Chainlink feed, так і на пул Curve StableSwap-ng (див. додаток B для аналізу rETH та cbETH, які використовують стару реалізацію пулу CryptoSwap). Усі дані було отримано шляхом запиту цін для вказаного діапазону блоків.
Ціни Oracle аналізуються з наступних джерел:
Пул ліквідності кривої
Chainlink Ціновий відгук
Адреса пулу видобутку Uniswap як агент посилання на ринкову ціну наступна:
Цінова пропозиція Uniswap
Для стандартизації LSD до його базового ETH ми використовуємо внутрішній обмінний курс LSD/ETH:
Внутрішній курс обміну LSD/ETH
У цьому розділі ми порівняємо точність поточного цінового каналу Chainlink stETH з Curve.
Chainlink stETHv1 Feed vs. Curve
Chainlink: stETH/ETH feed
Крива: басейн stETH/ETH
Нижче наведено безпосереднє порівняння цін на stETH від Chainlink та Curve. У зв'язку з циклом 24-годинного пульсу Chainlink stETH/ETH, ціна коливається кожні кілька блоків. Порівняно, коливання більш помітні в подачі Chainlink (краще візуалізовані в подачі Chainlink stETH/USD) порівняно з Curve, оскільки Curve використовує час 10-хвилинного EMA (ma_exp_time) для похідної ціни.
Якщо ми віднімемо ціну від Curve від ціни від Chainlink, ми отримаємо залишки, як показано нижче:
Середнє значення відхилення становить ~-0.000305.
Важливим спостереженням, яке можна зробити тут, є те, що Curve Oracle трохи завищує свої цінові дані порівняно з Chainlink.
Chainlink stETHv2 та Curve
Chainlink: stETH/USD feed / ETH/USD feed
Крива: стETH/ETH пул
Нижче наведено порівняння цін від альтернативних потоків Chainlink, віднормованих до ETH (stETH/USD та ETH/USD) порівняно з кривою stETH. Оскільки у Chainlink stETH/USD є поріг відхилення 1% (порівняно з 0.5% у потоці stETH/ETH), ціна виявляє більше відхилення навколо якорної ціни.
Як вже спостерігалося, коливання ціни stETH/USD Chainlink виражені в більш виразний спосіб порівняно з Curve.
Середнє значення відхилення становить ~-0.000171.
Залежно від масштабу, ця стрічка має більші залишкові значення, тобто більшу волатильність, ніж stETH/ETH.
У цьому розділі ми порівняємо історичну точність цінового каналу Chainlink stETH з референсною ринковою ціною з Uniswap.
Припускаючи, що дані цінових пулів UniswapV3 служать надійним проксі для ринкових цін, ми можемо порівняти раніше отримані базові дані, щоб перевірити близькість подачі Chainlink Oracle до референтних значень.
Uniswap Spot vs. Chainlink stETHv1
Chainlink: стETH/ETH feed
Uniswap: внутрішній курс обміну wstETH/ETH пулу / wstETH/stETH
Ось фактичне відхилення між ціною на місці Uniswap та Chainlink stETH/ETH:
Середнє залишкове значення = 0,000415
Стандартне відхилення цінових різниць = 0,000601
Uniswap Spot vs. Chainlink stETHv2
Chainlink: stETH/USD feed / ETH/USD feed
Uniswap: wstETH/ETH pool / wstETH/stETH internal exchange rate
Тут фактичне відхилення між Uniswap stETH та Chainlink stETH (stETH/USD):
Різниця в ціні означає = 0.000281
Стандартне відхилення різниці ціни = 0.002747
Тут ми порівнюємо Chainlink stETHv1 (тобто stETH/ETH) та stETHv2 (тобто stETH/USD) з даними Uniswap, і результати показують, що відхилення stETHv2 значно більше, ніж у stETHv1.
Та ж сама спостереження було зроблено також у пропозиції з управління Prisma (PIP-004), коли оракул перейшов з stETH/USD на stETH/ETH + ETH/USD для зменшення відхилень вартості корму.
У цьому розділі ми порівняємо історичну точність оракула stETH Curve з посиланням на ціну від Uniswap.
Припускаючи, що дані цінових басейнів UniswapV3 служать надійним проксі для ринкових цін, ми можемо порівняти раніше отримані контрольні дані, щоб перевірити близькість поточних значень Curve Oracle до посилання.
Uniswap Spot проти Curve
Крива: стETH/ETH пул
Uniswap: wstETH/ETH pool / wstETH/stETH internal exchange rate
На основі подібного аналізу залишкових величин, як у вище, ми отримуємо наступні метрики для порівняння з раніше встановленим показником:
Середня різниця в ціні = 0.000110.
Стандартне відхилення різниці цін = 0,000141.
Як було помічено, середня ціна, яку повідомляє Curve, трохи нижча, ніж на Uniswap spot, з помітно нижчим стандартним відхиленням порівняно з будь-яким джерелом від Chainlink.
Порівнюючи ці показники, ми виявляємо, що відхилення даних Chainlink значно більше, ніж Curve, коли посилання на дані Uniswap використовується як проксі для ринкових цін.
Оскільки вищевказані спостереження базуються на відхиленнях від кожного джерела цін, є можливість того, що в подачі Curve Oracle можуть бути позитивні відхилення, тоді як подача Chainlink показує негативні відхилення, і навпаки. Цей сценарій повністю негується, оскільки діапазони відхилень подач Chainlink та Curve Oracle є меншими порівняно з діапазонами відхилень Uniswap & Chainlink та Uniswap & Curve.
Таблиця нижче відображає аналіз залишкових значень, проведений на зібраних даних. Середнє значення залишку, помножене на 100, дає середній відсоток відхилення цільового активу від посилання (в доларах США, порівняно з цінами на ETH, вираженими в доларах США).
Таблиця безпосередньо порівнює відносну продуктивність Chainlink та Curve з посиланням на Uniswap у термінах середнього та стандартного відхилення для кожного активу. У всіх випадках Curve демонструє нижчі значення середнього та стандартного відхилення. Множник точності показує відносну точність кожного спостережуваного значення.
Основні пункти тут наступні:
Аналіз спрямований на порівняння цін на втілення подій викупу в WstETH TroveManager з гіпотетичними цінами, що були наведені за допомогою історичних даних альтернативними on-chain оракулами. Результати дослідження нададуть початкові уявлення про поведінку off-chain та on-chain оракулів, що дозволить більш детально оцінити в наступних дослідженнях.
Метою цього аналізу є визначення того, чи надає поточний оракул найкраще рішення щодо продуктивності в конкретних сценаріях викупу, чи можна зробити покращення за допомогою впровадження рішень на ланцюжку або гібридних рішень, використовуючи оракули басейну Curve EMA.
Даний аналіз спеціально зосередиться на stETH, оскільки він є найбільш поширеним LSD та має витримані цінові стрічки Chainlink та глибоку ліквідність у пулі Curve. У роботі будуть агреговані всі події з викупом, порівнюючи реалізовані ціни оракулів stETH з декількома альтернативними цінами оракулів, вираженими в USD, та використовуючи ціну оракула stETH/ETH від Curve.
Для цього аналізу реалізована ціна stETH обчислюється, поділивши суму, погашену в mkUSD, на кількість stETH, втрачених Менеджером Скарбу у формі wstETH. Щоб визначити кількість stETH, нам потрібно врахувати отримані wstETH від погашення плюс витрачені wstETH як комісійні та перевести їх у stETH. Якщо будь-який альтернативний джерело постійно пропонує нижчі прибутки для осіб, що викупають, ми можемо сказати, що їхній роботи MEV краще, ніж реальна ціна.
Менеджер TroveManager wstETH використовується для отримання всіх хешів транзакцій при отриманні mkUSD у обмін на mkUSD. Транзакції, де адреса, що викуповує mkUSD, отримує й знищує mkUSD, вважаються транзакціями BOT. Детальні запити для подій викупу можна знайти тут: Dune query_3352919. Цей запит є важливим для отримання всіх даних з транзакцій BOT.
Запит Dune використовується для ідентифікації транзакцій BOT, які отримують всі значення хешів транзакцій, реалізовану обмінну ставку wstETH для викупу mkUSD та номер блоку подій викупу. Номери блоків, отримані з запиту, використовуються як вхідні дані до запиту наступних даних, які використовуються для порівняння поточної реалізації зі змінами ціни живлення Curve stETH:
На основі вищезазначених даних ми можемо побудувати три цінових стрічки, використовуючи ціновий індикатор Curve Oracle stETH/ETH, і об'єднати їх з ETH/USD для отримання stETH/USD. Після цієї операції ми отримуємо наступні дані для візуалізації:
Вищезазначені дані надають ціну stETH в USD, яку можна проаналізувати на основі реалізованих цін stETH з усіх операцій BOT. Реалізований stETH (в USD) просто використовується для розрахунку ціни stETH за кожен наданий mkUSD під час викупу.
Нижче наведено 4 джерела цін на stETH для блоку торгівлі BOT (1 посилання та 3 альтернативи, про які говорилося вище). Реалізовані ціни - це ціни з реалізованих цінових оракулів (тобто Chainlink). Це порівнюється з 3 потоками, використовуючи Curve stETH/ETH як основу. Тут більш висока цитата призведе до зменшення вартості stETH, обмінюваної на mkUSD, і навпаки.
На основі вищезазначеної інформації ми можемо моделювати відносну кількість stETH, отриману в результаті погашення mkUSD, та нормалізувати її в залежності від фактичної отриманої суми від існуючого оракула. Наступний графік відображає stETH, отриманий від mkUSD до того, як будуть взяті комісії, та обробляє дані для видалення викидів з метою поліпшення візуалізації:
Аналіз показує чіткий тренд: коли поєднується Curve stETH/ETH з Uniswap ETH/USDC та Chainlink ETH/USD, кількість stETH, доступних для викупу mkUSD, зменшується. Відповідно, зменшення кількості одиниць stETH на одиницю mkUSD призводить до зменшення прибутків від BOT. Надана візуалізація ілюструє порівняння прибутків від BOT за різних припущених цін на корм та фактичну ціну на корм, за винятком комісій.
Очевидно, що поєднання Curve stETH/ETH, Uniswap ETH/USDC та Chainlink ETH/USD зменшує прибутковість викупів у порівнянні з реалізованою ціною живого корму.
Визнавши вбудовані ризики, пов'язані з виключним спиранням на оракул Curve, особливо під час періодів низької ліквідності або коливань ліквідності, запропоноване рішення стратегічно інтегрує оракул Chainlink як заходи безпеки (тобто резервний план) у випадку відхилень. Беручи до уваги незначну ймовірність надання невірних даних Chainlink, він може слугувати надійною резервною опцією.
Це рішення діє як фільтр, враховуючи як ціни Curve, так і Chainlink. Умови встановлюються в межах функції, яка служить вимикачем. Для створення цієї умови вводиться концепція прийнятного діапазону. Цей діапазон представляє собою прийнятну різницю між цінами оракулів Chainlink та Curve. Коли спостережена різниця перевищує цей діапазон, це вказує на потенційну упередженість або маніпуляцію даними оракула Curve. У таких випадках функція зменшує потенційні ризики, підтримуючи більш безпечні ціни Chainlink. Навпаки, коли різниця попадає в прийнятний діапазон, функція покладається на точність та узгодженість оракула Curve.
Варто зазначити, що прийнятний діапазон може бути налаштований як статичний або динамічний, в залежності від волатильності базових активів (наприклад, ETH та пов'язаного LSD). Динамічний характер дозволяє адаптуватися до змінливих ринкових умов, забезпечуючи еластичність та механізми реагування в процесі визначення ціни. Ця подвійна стратегія мінімізує залежність від одного джерела даних, тим самим підвищуючи загальну стійкість та надійність механізму ціноутворення.
Рішення вводить статичний метод, acceptable_range, для вирішення потенційних вразливостей при використанні виключно оракула Curve. Хоча ціни, що генеруються оракулом Curve, можуть бути точнішими, ніж у Chainlink, вони можуть бути вразливими до маніпулювання. Зі свого боку, Chainlink є надійним і перевіреним, вважається безпечнішим вибором в індустрії. Коли різниця між оракулом Curve і Chainlink перевищує фіксоване значення, acceptable_range служить порогом для переходу до поточного Chainlink.
Стратегічно, acceptable_range приймає котирування, які знаходяться в межах ±1% від котирувань Chainlink. Це майже три стандартних відхилення від середньої різниці між Curve та Chainlink, враховуючи покращені котирування stETH/ETH та ETH/USD порівняно з попереднім котируванням stETH/USD.
Цінова похідна - це функція або механізм, спрямований на визначення кінцевої цитати для заданого активу, особливо в сценаріях з використанням Curve Oracle та Chainlink Oracle.
У викладеному рішенні ця функція оцінює котирування як від Curve Oracle, так і від Chainlink Oracle. На основі спостереженої різниці між цими двома цінами та тим, чи вона вписується у заданий діапазон accepted_range, функція виводить різні похідні ціни.
Тут порівняння derived_price з іншими джерелами цін, що вже відображалися раніше:
Прибуток від BOT може бути візуалізований за допомогою ціни похідного (оскільки немає відхилення, ця ціна буде точно дорівнювати Curve stETH/ETH та CL stETH/ETH), як показано нижче:
Аналіз загального прибутку може розкрити загальну картину. Було ідентифіковано шість викидів, і загальний прибуток для кожного випадку було розраховано до та після фільтрації викидів.
Крива stETH/ETH та Uniswap ETH/USDC найкраще зменшують доступний прибуток для БОТів. Отримана ними ціна має такий же потенціал прибутку, як і поточна реалізація оракулу stETH, але обмежує прибуток, припускаючи, що вона заощаджує користувачам приблизно 35,4 ETH на аналізованих 189 транзакціях.
Через велику залежність від котирувань найбільш рідкісних децентралізованих бірж для операцій on-chain та того факту, що боти MEV також слідкують за тими ж котируваннями при обміні mkUSD на LSD, точність котирувань (використовуваних для цінування викупувань Оракулом) є надзвичайно важливою.
Історичні дані свідчать, що ціни оракулів пулу Curve ближчі до посилання (дані цін UniswapV3) порівняно з цінами Chainlink. Дані свідчать про те, що впровадження оракула Curve зменшило б MEV для ботів та забезпечило б кращі обмінні курси для користувачів, які викупають свої скарби.
Хоча використання Curve Oracle як самостійного Oracle може бути спокусливим, ефективність зворотного зв'язку з ціною Curve залежить від глибини ліквідності конкретних активів та взаємодії з пулом. Гібридне рішення Oracle з використанням Curve Oracle та Chainlink Oracle може бути використане для відповідності цін на ланцюгу, зберігаючи надійність та широке охоплення ринку, успадковані від Chainlink Oracle.
Запропоноване гібридне рішення Oracle оцінює стандартне відхилення (SD), щоб згенерувати похідну_ціну. Якщо SD наближається до 0, це свідчить про відповідність до посилань на похідну_ціну, що робить його варто розглянути. Це забезпечує, що коли Oracle Curve відхиляється від попередньо визначених порогових значень, рішення динамічно переключається на безпечніший джерело Chainlink. Оскільки це рішення майже завжди виводить цитату Curve стETH, припускається, що діяльність MEV така сама, як при використанні Curve стETH/ETH, без резервного варіанту.
Додаток A: Сценарії обробки даних
Скрипти, використані для генерації аналізу в цьому звіті, наведено нижче:
Додаток B: аналіз залишкового рETH/cbETH
Інші графіки rETH
Chainlink та Curve
Uniswap та Curve
Uniswap та Chainlink
Перевірте пік rETH
Під час спостереження ціни оракула rETH кілька разів досягали піку. Це спричинило різке збільшення відхилення ціни оракула від ціни на місцях. Нижче наведено докладну діаграму, яка показує поведінку резерву/ліквідності токенів під час кількох періодів підйому цін та ціну оракула.
start_block = 18824000
end_block = 18827000
interval_blocks = 100
Відсоток пулу видобутку:
Ціна Oracle:
start_block = 18850000
end_block = 18858000
interval_blocks = 100
Відношення майнінг-пулу:
Ціна Oracle:
start_block = 18880000
end_block = 18885000
interval_blocks = 100
Співвідношення пулу майнінгу:
Ціна Oracle:
Інші графіки cbETH
Chainlink та Curve
Uniswap та Curve
Uniswap та Chainlink
Перевірте Peak cbETH
Протягом періоду спостереження ціни оракула cbETH Curve декілька разів досягали піку. На кількох випадках це призвело до значних стрибків у відхиленні ціни між ціною оракула та референтною ціною на місці. Нижче наведено більш детальну діаграму, що показує поведінку відношень ліквідності пулів / ліквідності токенів під час цих періодів стрибків цін та поведінку цін оракула.
start_block = 18693500
end_block = 18696000
interval_blocks = 10
Співвідношення майнінг-пулу:
Ціна Oracle:
start_block = 18814000
end_block = 18816500
interval_blocks = 10
Співвідношення майнінг-пулу:
Ціна Oracle:
start_block = 18800000
end_block = 18805000
interval_blocks = 10
Співвідношення майнинг-пулу:
Ціна Oracle:
Ця стаття взята з [Gatemarsbit], оригінальна назва «Компаративний аналіз Prisma optional oracles», авторське право належить оригінальному автору [PrismaRisk], якщо у вас є які-небудь зауваження до репринту, будь ласка, зв'яжітьсяGate Learn Команда, команда обробить це якнайшвидше згідно з відповідними процедурами.
Disclaimer: Погляди та думки, висловлені в цій статті, представляють лише особисті погляди автора та не становлять жодної інвестиційної поради.
Інші мовні версії статті перекладені командою Gate Learn, не згадано у Gate.io, перекладена стаття не може бути відтворена, поширена або узята з плагіату.