Angle дозволяє користувачам мінтити та спалахувати agTokens (стабільні монети) на обмін іншими токенами. Торгівці також можуть відкривати довгі позиції на доступні пари забезпечення / стейблкоїнов. Це не традиційні безстрокові контракти, оскільки еквілібр не ґрунтується на ставках фінансування, а ціни виконання надходять безпосередньо від оракула. З урахуванням цих випадків використання протокол потребує надійного методу оцінки доступних активів для надання користувачам справедливих пропозицій, одночасно захищаючись від сделок фронтраннінгу. У ЧаПі цієї статті Samcszun пояснює, чому це не так просто, як використання ринкових цін.
Фронтраннинг - це давнє питання на ринку. Суть полягає в тому, що певні учасники мають доступ до інформації раніше, ніж інші, що дозволяє їм використовувати цю перевагу для видобутку безрискових прибутків за рахунок контрагента. Історично уникнути цього явища на ланцюжку було надзвичайно складно. Великі витрати та низька швидкість транзакцій Ethereum ускладнюють оракулам швидко та часто оновлювати ціни. Це призводить до затримок між цінами поза ланцюжком та на ланцюжку, створюючи можливості для фронтранерів експлуатувати.
Не всі протоколи стейблкоїна турбуються про ризики фронтранінгу, що виникають через затримку оракулів. У випадку DAI від Maker, затримки оракулів часто корисні для протоколу. Наприклад, якщо користувачка бачить, що її позицію ліквідують у наступному оновленні оракула через падіння ціни, її стимулюють внести більше коштів до сховища, покращуючи здоров'я протоколу та коефіцієнт забезпеченості.
Synthetix, який дозволяє обмін значенням на основі оракулів між синтетичними активами та заставою, є чудовим прикладом протоколу стейблкоїна, який стикається з викликами фронтраннінгу. У їхньому блозі описано довгу історію протоколу з фронтраннінгом, включаючи деякі минулі атаки, які вони зазнали.
Подібно до Synthetix, Angle дозволяє обмін активами за вартістю оракула з нульовим ковзанням ціни. У зв'язку з цим Angle стикається з тією ж проблемою фронтраннінгу. Команда ядра Angle вжила значних зусиль для пом'якшення фронтраннінгу. Було реалізовано два ключові покращення: конкретний дизайн оракула та динамічна структура комісій. У цій статті ми пояснимо дизайн оракула Angle та розуміння його сутності.
Перед тим як зануритися в рішення Angle, спробуємо спочатку зрозуміти, як front-running може завдати шкоди протоколу. Ми розглянемо приклад, де ETH приймається як застава для підтримки стейблкоїна Angle.
Припустимо, що зловмисник відстежує ціну ETH поза ланцюжком та бачить, що оракул Chainlink збирається оновити дані на ланцюжку до вищої ціни (з p0 до p1, де p0 < p1). Цей зловмисник може відправити транзакцію на знищення x стабільних монет за ціною p0 на обмін x/p0 на суму ETH. Потім, після оновлення ціни до p1, зловмисник може повернути його назад у протокол, заробивши при цьому прибуток:
Через цю трансакцію фронтраннінгу під час оновлення оракула ця частина прибутку береться з резервів протоколу. Якщо ми встановимо x = 100 ETH та p1 = 1.01 * p0 (зростання ціни на 1%), це означає, що атакувальник взяв 1 ETH з резервів протоколу.
На щастя, збільшення комісій за транзакції може пом'якшити цю проблему, оскільки вони підривають прибуток підбігачів і зменшують можливості.
Наприклад, якщо комісія за чекання та спалювання є постійною і дорівнює f, нападник, який спалює x стабільних монет при p0, а потім перепродує їх протоколу за ETH за p1, матиме наступний кінцевий прибуток:
Порівняно з попереднім сценарієм, комісії зменшують прибуток:
Коли комісія за транзакцію становить f = 0,3% і йдучи за прикладом вище, прибуток атакуючого зараз становить лише 0,39 ETH.
Для подальшого зменшення цієї можливості ми можемо покластися на вторинний оракул, щоб надати два потенційні джерела цін: pC (ціна Chainlink) та pU (ціна Uniswap). Протокол може використовувати найбільш вигідну ціну (меншу ціну при видаванні, при покупці токенів користувача, та вищу ціну при знищенні, при продажу ETH користувачеві), роблячи можливість фронтраннінгу менш привабливою.
Уявіть собі трейдера, який намагається здобути прибуток з тієї ж можливості, що й вище, припускаючи, що pC0 < pC1.
З іншого боку, ми можемо вважати, що pU постійний і наближений до pC0. Тому, як ми побачимо пізніше, через конструкцію середньозваженої ціни за часом (TWAP) Uniswap, pU схильний відстати від pC.
У цьому випадку нападник, який намагається скористатися потенційною можливістю, купував би токени від протоколу за pC0 (знищуючи стейблкоїни) та отримував x(1-f)/pC0 вартістю ETH. Потім він знову їх продавав за pU1 за вищу ціну. Це призвело б до збитку для нападника:
Якщо ми залишимо числа з прикладу, нападник втратить 0,6 ETH у цій транзакції.
Дизайн Angle спрямований на усунення ризику фронтраннингових транзакцій. Тому протокол реалізує механізм, дуже схожий на обговорений вище приклад. У цьому розділі ми розглянемо потенційні наявні варіанти більш детально, зосереджуючись на конкретиках дизайну, який ми плануємо реалізувати, та проаналізуємо наш вибір часового вікна TWAP.
Основні рішення оракулів, які можуть підійти для використання Angle, є:
Chainlink - очевидний перший вибір: це широко використовуване децентралізоване рішення оракула, яке надає кілька джерел даних, що охоплюють різні активи. Ціни надходять з кількох джерел і передаються через децентралізовану мережу, забезпечуючи надійність, доступність та складність маніпулювання даними. Однак деякі джерела даних зазвичай оновлюються лише після «значних» змін цін (наприклад, зміна на 0,5% в ETH/USD) або після певного періоду часу, що означає, що ціни Chainlink завжди відстають в порівнянні з фактичною ринковою ціною. Таким чином, оновлення цін Chainlink можуть бути фронтраном, перевіряючи ціни поза ланцюжком або мемпулом.
Часово зважена середня ціна (TWAP) Uniswap V3 - це ще одне очевидне та широко використовуване рішення оракулів. TWAP може бути запитаний з контракту Uniswap, щоб отримати часово зважену середню ціну токенів у пулі протягом певного періоду часу, який може коливатися від кількох секунд до 9 днів. Ціна обчислюється на основі середньої ціни двох токенів у пулі протягом вказаного періоду. Це робить маніпулювання TWAP вимагає великої кількості капіталу та тривалого періоду часу, що є неефективним у більшості випадків.
Однак, оскільки TWAP є середньою ціною за минулі блоки, вони, як правило, затримуються порівняно з реальними цінами поза ланцюгом часу або навіть джерелами цін Chainlink. Якщо використовувати їх самостійно, цього буде недостатньо для захисту протоколу від фронтранінгових транзакцій.
Крім того, оскільки TWAP відображає лише ціну токенів, що знаходяться на ланцюжку, вони не можуть відповісти цілі протоколу, яка полягає в наданні доступу до активів, які не представлені на ланцюжку (тому не в Uniswap-пулах), таких як форекс-підтримані стейблкоїни.
Використання Мейкер Оракулів могло б бути ще одним варіантом для Angle, але це означало б довіру до MakerDAO та проходження процесу управління для отримання доступу до цінових даних. Джерела цін також були б обмежені тими, що використовуються Maker, що недостатньо для нас, оскільки ми маємо доступ до обмінних курсів форекс.
З цим на увазі було вирішено поєднати оракула Chainlink Протоколу Кута з 10-хвилинним Uni V3 TWAP. Це дозволяє отримати найсправедливішу ціну в будь-який момент часу, захищаючи протокол від атак фронтранінгу.
Загалом, контракти Angle порівнюватимуть ціни з обох каналів і використовуватимуть ціну, яка є найбільш вигідною для протоколу. З цим дизайном фронтранінг протоколу стає складнішим, оскільки для експлуатації обмінного курсу протоколу атакувальник повинен маніпулювати або фронтранить обидва оракули.
Зокрема, наш контракт буде отримувати найкращу ціну для всіх волатильних пар актив/стейблкоїнів між Chainlink та Uniswap та використовувати форекс-оракул Chainlink для конвертації ціни в потрібну фіатну валюту. Кожна пара застави/стейблкоїн матиме власний контракт оракулу з власним незалежним джерелом цін.
Як це працює?
Наприклад, припустимо, що користувач хоче торгувати парою ETH/agEUR. Наш контракт повинен отримати ціни на ETH/USD та USD/EUR. Він збереже найкращу ціну за ETH/USD від Chainlink і 10-хвилинний TWAP від пулу ETH/USDC UniV3. Потім він отримає валютну ціну USD/EUR від Chainlink.
Приклад: Uniswap ETH/USDC TWAP: 1900 USD (протокол передбачає, що загалом USDC зберігає свій підкріплений курс, тобто 1 USDC дорівнює 1 USD) Ціна Chainlink ETH: 1850 USD Ціна Chainlink USD: 1.16 EUR
Якщо користувач хоче надрукувати agEUR у цьому випадку, протокол використовуватиме нижчу ціну ETH/USD, тобто ціну Chainlink на рівні 1850 доларів за ETH. Навпаки, якщо користувач хоче спалити agEUR на wETH в тій же ситуації, протокол використовуватиме вищу ціну, тобто Uni ETH/USDC TWAP на рівні 1900. В обох випадках протокол буде використовувати курс USD/EUR Chainlink на рівні 1,16 для конвертації ETH/USD в ETH/EUR.
Аналогічно, протокол буде використовувати найвищу ціну для користувачів, які бажають відкрити постійний контракт, і найнижчу ціну для тих, хто бажає його закрити.
Більш загально:
Контракт Angle використовуватиме 10-хвилинне вікно часу для TWAP. Цей вибір був зроблений після ретельного обговорення, оскільки різні вікна часу можуть призвести до значно різних цінових структур.
У випадку кута, з одного боку, вікно часу повинне бути достатньо довгим, щоб забезпечити достатній затримку між ціною протоколу та ринковою ціною. Це дійсно дозволяє більший розподіл між цінами на виготовлення та знищення під час коливань цін, особливо коли ризик фронтранінгу на Chainlink подвоюється. Крім того, чим довше вікно часу, тим важче маніпулювати ціною TWAP, оскільки останні спостереження мають менший вплив на ціну.
З іншого боку, протокол все ще повинен пропонувати користувачам справедливі та актуальні котирування: використання занадто широкого вікна часу призведе до занадто великої цінової різниці між протоколом та поточною ринковою ціною, тоді як використання занадто вузького вікна часу не забезпечить бажаної цінової різниці.
Порівняйте 10-хвилинний та 60-хвилинний TWAP з ціновими потоками Chainlink
Щоб ви зрозуміли, чому ми врешті-решт обрали вікно в 10 хвилин, ось порівняння між 10-хвилинними та 60-хвилинними TWAP ETH/USDC та ціною ETH/USD від Chainlink та ціною закриття від Coinbase.
Ви можете побачити, як верхні та нижні ставки, які використовує протокол під час мінтінгу/закриття та випалювання/відкриття користувачами, переміщуються між найбільш вигідними цінами від Chainlink та TWAP Uniswap під час переходів цін.
Незважаючи на те, що 60-хвилинний блок TWAP часто надає ціни, які віддалені від ринку, 10-хвилинний TWAP забезпечує корисний буфер для джерела цін Chainlink, тримаючи ціну достатньо близькою до ринку.
Варто зазначити, що, як видно на першому графіку, чим більша волатильність, тим більша різниця в ціні між цінами Chainlink та Uniswap. І навпаки, коли ціни залишаються відносно стабільними з часом, джерела цін від Uniswap і Chainlink ближчі один до одного. Використання TWAP як додаткового захисту від фронт-ранінгу – це, по суті, спосіб динамічно стягувати більше комісій у періоди високої волатильності, оскільки ризик фронт-рану більший через затримки в ончейн-оракулах. Вартість цих вищих ефективних комісій полягає в тому, що вони зменшують здатність арбітражних трейдерів безпосередньо переоцінювати стейблкоїни з протоколу. У більшості випадків ціни на Uniswap і Chainlink будуть дуже схожі, і користувачі навряд чи помітять використання двох рішень оракула. Однак у періоди високої волатильності, коли протокол піддається ризику випередження через значну різницю в ціні між поточними та майбутніми цінами Chainlink, ціни протоколу відрізнятимуться, захищаючи його від випередження.
Дослідження оракула Angle сильно інспірується дискусіями з управління Synthetix та відповідними блог-пости про фронтраннінг. У наших дослідженнях ми також стикалися з іншою опцією, яку вони реалізували в лютому 2020 року, відновлення / повернення комісії, яке в кінцевому підсумку стало тимчасовим рішенням.
Те, що вони зробили, полягало в додаванні періоду очікування до транзакцій, під час якого користувачі не могли маніпулювати Синтетикою, яку вони хотіли використовувати. Протягом цього періоду оракули могли перевірити, чи транзакція була під впливом неузгодженостей, зокрема, чи була різниця в ціні між моментом виконання та кінцем періоду очікування. Якщо існувала різниця в ціні, її повинен був оплатити користувач або протокол іншій стороні (протоколу або користувачеві), або вона могла б бути врегульована у наступній транзакції з Synthetix.
Це рішення виявилося дуже ефективним у зменшенні фронтранінгу, але їм довелося продовжити період очікування та збільшити комісії, що призвело до дуже поганого досвіду користувачів для всіх трейдерів. Це також запобігло Synth інтеграції з іншими протоколами в багатьох випадках використання. У SIP-120 вони замінили це рішення планом, який додає використання TWAP-оракулів для великих транзакцій.
Специфічний дизайн оракула Angle має два основних впливи на протокол:
Атакувальникам потрібно маніпулювати двома ринками, щоб обманути протокол, значно знижуючи ризик успішних операцій з фронтраннінгу.
Під час стресових періодів на ринку протокол ймовірно не зможе запропонувати користувачам найкращу можливу ціну.
Останній вплив обговорювався на форумі управління FEI. Оскільки забезпечення найкращого виконання угод не є основною метою протоколу, ми вважаємо, що опір випередження є більш важливим для забезпечення безпеки протоколу. На вторинних ринках у періоди високої волатильності буде запропоновано краще виконання угод.
Наша мета в проєкті Angle — розробити повністю підтримуваний, ефективний протокол стейблкоїнів. Досягнення цієї мети вимагає розгляду багатьох аспектів протоколу, щоб гарантувати, що його не можна обдурити в несприятливу позицію, одним з яких є опір на передньому краї. Це особливо важливо, оскільки стабільність ончейн децентралізованих стейблкоїнів, які покладаються на оракули, залежить від якості їхніх оракулів.
Додавання додаткових цінових каналів у формі TWAP може допомогти протоколу пом'якшити можливі негативні впливи високої ринкової волатильності та можливості фронтраннінгу, що виникають у цей час.
Нарешті, важливо відзначити, що це рішення оракула зберігає гнучкість і масштабованість. З одного боку, керівництво Angle може голосувати та оновлювати свої контракти оракулів у будь-який час. З іншого боку, оракули можуть бути створені для будь-якої цінової стрічки, що підтримується Chainlink. Це мінімальний рівень підтримки, необхідний для досягнення бачення Angle щодо виведення фінансових активів у мережу з ефективним капіталом способом!
Compartilhar
Angle дозволяє користувачам мінтити та спалахувати agTokens (стабільні монети) на обмін іншими токенами. Торгівці також можуть відкривати довгі позиції на доступні пари забезпечення / стейблкоїнов. Це не традиційні безстрокові контракти, оскільки еквілібр не ґрунтується на ставках фінансування, а ціни виконання надходять безпосередньо від оракула. З урахуванням цих випадків використання протокол потребує надійного методу оцінки доступних активів для надання користувачам справедливих пропозицій, одночасно захищаючись від сделок фронтраннінгу. У ЧаПі цієї статті Samcszun пояснює, чому це не так просто, як використання ринкових цін.
Фронтраннинг - це давнє питання на ринку. Суть полягає в тому, що певні учасники мають доступ до інформації раніше, ніж інші, що дозволяє їм використовувати цю перевагу для видобутку безрискових прибутків за рахунок контрагента. Історично уникнути цього явища на ланцюжку було надзвичайно складно. Великі витрати та низька швидкість транзакцій Ethereum ускладнюють оракулам швидко та часто оновлювати ціни. Це призводить до затримок між цінами поза ланцюжком та на ланцюжку, створюючи можливості для фронтранерів експлуатувати.
Не всі протоколи стейблкоїна турбуються про ризики фронтранінгу, що виникають через затримку оракулів. У випадку DAI від Maker, затримки оракулів часто корисні для протоколу. Наприклад, якщо користувачка бачить, що її позицію ліквідують у наступному оновленні оракула через падіння ціни, її стимулюють внести більше коштів до сховища, покращуючи здоров'я протоколу та коефіцієнт забезпеченості.
Synthetix, який дозволяє обмін значенням на основі оракулів між синтетичними активами та заставою, є чудовим прикладом протоколу стейблкоїна, який стикається з викликами фронтраннінгу. У їхньому блозі описано довгу історію протоколу з фронтраннінгом, включаючи деякі минулі атаки, які вони зазнали.
Подібно до Synthetix, Angle дозволяє обмін активами за вартістю оракула з нульовим ковзанням ціни. У зв'язку з цим Angle стикається з тією ж проблемою фронтраннінгу. Команда ядра Angle вжила значних зусиль для пом'якшення фронтраннінгу. Було реалізовано два ключові покращення: конкретний дизайн оракула та динамічна структура комісій. У цій статті ми пояснимо дизайн оракула Angle та розуміння його сутності.
Перед тим як зануритися в рішення Angle, спробуємо спочатку зрозуміти, як front-running може завдати шкоди протоколу. Ми розглянемо приклад, де ETH приймається як застава для підтримки стейблкоїна Angle.
Припустимо, що зловмисник відстежує ціну ETH поза ланцюжком та бачить, що оракул Chainlink збирається оновити дані на ланцюжку до вищої ціни (з p0 до p1, де p0 < p1). Цей зловмисник може відправити транзакцію на знищення x стабільних монет за ціною p0 на обмін x/p0 на суму ETH. Потім, після оновлення ціни до p1, зловмисник може повернути його назад у протокол, заробивши при цьому прибуток:
Через цю трансакцію фронтраннінгу під час оновлення оракула ця частина прибутку береться з резервів протоколу. Якщо ми встановимо x = 100 ETH та p1 = 1.01 * p0 (зростання ціни на 1%), це означає, що атакувальник взяв 1 ETH з резервів протоколу.
На щастя, збільшення комісій за транзакції може пом'якшити цю проблему, оскільки вони підривають прибуток підбігачів і зменшують можливості.
Наприклад, якщо комісія за чекання та спалювання є постійною і дорівнює f, нападник, який спалює x стабільних монет при p0, а потім перепродує їх протоколу за ETH за p1, матиме наступний кінцевий прибуток:
Порівняно з попереднім сценарієм, комісії зменшують прибуток:
Коли комісія за транзакцію становить f = 0,3% і йдучи за прикладом вище, прибуток атакуючого зараз становить лише 0,39 ETH.
Для подальшого зменшення цієї можливості ми можемо покластися на вторинний оракул, щоб надати два потенційні джерела цін: pC (ціна Chainlink) та pU (ціна Uniswap). Протокол може використовувати найбільш вигідну ціну (меншу ціну при видаванні, при покупці токенів користувача, та вищу ціну при знищенні, при продажу ETH користувачеві), роблячи можливість фронтраннінгу менш привабливою.
Уявіть собі трейдера, який намагається здобути прибуток з тієї ж можливості, що й вище, припускаючи, що pC0 < pC1.
З іншого боку, ми можемо вважати, що pU постійний і наближений до pC0. Тому, як ми побачимо пізніше, через конструкцію середньозваженої ціни за часом (TWAP) Uniswap, pU схильний відстати від pC.
У цьому випадку нападник, який намагається скористатися потенційною можливістю, купував би токени від протоколу за pC0 (знищуючи стейблкоїни) та отримував x(1-f)/pC0 вартістю ETH. Потім він знову їх продавав за pU1 за вищу ціну. Це призвело б до збитку для нападника:
Якщо ми залишимо числа з прикладу, нападник втратить 0,6 ETH у цій транзакції.
Дизайн Angle спрямований на усунення ризику фронтраннингових транзакцій. Тому протокол реалізує механізм, дуже схожий на обговорений вище приклад. У цьому розділі ми розглянемо потенційні наявні варіанти більш детально, зосереджуючись на конкретиках дизайну, який ми плануємо реалізувати, та проаналізуємо наш вибір часового вікна TWAP.
Основні рішення оракулів, які можуть підійти для використання Angle, є:
Chainlink - очевидний перший вибір: це широко використовуване децентралізоване рішення оракула, яке надає кілька джерел даних, що охоплюють різні активи. Ціни надходять з кількох джерел і передаються через децентралізовану мережу, забезпечуючи надійність, доступність та складність маніпулювання даними. Однак деякі джерела даних зазвичай оновлюються лише після «значних» змін цін (наприклад, зміна на 0,5% в ETH/USD) або після певного періоду часу, що означає, що ціни Chainlink завжди відстають в порівнянні з фактичною ринковою ціною. Таким чином, оновлення цін Chainlink можуть бути фронтраном, перевіряючи ціни поза ланцюжком або мемпулом.
Часово зважена середня ціна (TWAP) Uniswap V3 - це ще одне очевидне та широко використовуване рішення оракулів. TWAP може бути запитаний з контракту Uniswap, щоб отримати часово зважену середню ціну токенів у пулі протягом певного періоду часу, який може коливатися від кількох секунд до 9 днів. Ціна обчислюється на основі середньої ціни двох токенів у пулі протягом вказаного періоду. Це робить маніпулювання TWAP вимагає великої кількості капіталу та тривалого періоду часу, що є неефективним у більшості випадків.
Однак, оскільки TWAP є середньою ціною за минулі блоки, вони, як правило, затримуються порівняно з реальними цінами поза ланцюгом часу або навіть джерелами цін Chainlink. Якщо використовувати їх самостійно, цього буде недостатньо для захисту протоколу від фронтранінгових транзакцій.
Крім того, оскільки TWAP відображає лише ціну токенів, що знаходяться на ланцюжку, вони не можуть відповісти цілі протоколу, яка полягає в наданні доступу до активів, які не представлені на ланцюжку (тому не в Uniswap-пулах), таких як форекс-підтримані стейблкоїни.
Використання Мейкер Оракулів могло б бути ще одним варіантом для Angle, але це означало б довіру до MakerDAO та проходження процесу управління для отримання доступу до цінових даних. Джерела цін також були б обмежені тими, що використовуються Maker, що недостатньо для нас, оскільки ми маємо доступ до обмінних курсів форекс.
З цим на увазі було вирішено поєднати оракула Chainlink Протоколу Кута з 10-хвилинним Uni V3 TWAP. Це дозволяє отримати найсправедливішу ціну в будь-який момент часу, захищаючи протокол від атак фронтранінгу.
Загалом, контракти Angle порівнюватимуть ціни з обох каналів і використовуватимуть ціну, яка є найбільш вигідною для протоколу. З цим дизайном фронтранінг протоколу стає складнішим, оскільки для експлуатації обмінного курсу протоколу атакувальник повинен маніпулювати або фронтранить обидва оракули.
Зокрема, наш контракт буде отримувати найкращу ціну для всіх волатильних пар актив/стейблкоїнів між Chainlink та Uniswap та використовувати форекс-оракул Chainlink для конвертації ціни в потрібну фіатну валюту. Кожна пара застави/стейблкоїн матиме власний контракт оракулу з власним незалежним джерелом цін.
Як це працює?
Наприклад, припустимо, що користувач хоче торгувати парою ETH/agEUR. Наш контракт повинен отримати ціни на ETH/USD та USD/EUR. Він збереже найкращу ціну за ETH/USD від Chainlink і 10-хвилинний TWAP від пулу ETH/USDC UniV3. Потім він отримає валютну ціну USD/EUR від Chainlink.
Приклад: Uniswap ETH/USDC TWAP: 1900 USD (протокол передбачає, що загалом USDC зберігає свій підкріплений курс, тобто 1 USDC дорівнює 1 USD) Ціна Chainlink ETH: 1850 USD Ціна Chainlink USD: 1.16 EUR
Якщо користувач хоче надрукувати agEUR у цьому випадку, протокол використовуватиме нижчу ціну ETH/USD, тобто ціну Chainlink на рівні 1850 доларів за ETH. Навпаки, якщо користувач хоче спалити agEUR на wETH в тій же ситуації, протокол використовуватиме вищу ціну, тобто Uni ETH/USDC TWAP на рівні 1900. В обох випадках протокол буде використовувати курс USD/EUR Chainlink на рівні 1,16 для конвертації ETH/USD в ETH/EUR.
Аналогічно, протокол буде використовувати найвищу ціну для користувачів, які бажають відкрити постійний контракт, і найнижчу ціну для тих, хто бажає його закрити.
Більш загально:
Контракт Angle використовуватиме 10-хвилинне вікно часу для TWAP. Цей вибір був зроблений після ретельного обговорення, оскільки різні вікна часу можуть призвести до значно різних цінових структур.
У випадку кута, з одного боку, вікно часу повинне бути достатньо довгим, щоб забезпечити достатній затримку між ціною протоколу та ринковою ціною. Це дійсно дозволяє більший розподіл між цінами на виготовлення та знищення під час коливань цін, особливо коли ризик фронтранінгу на Chainlink подвоюється. Крім того, чим довше вікно часу, тим важче маніпулювати ціною TWAP, оскільки останні спостереження мають менший вплив на ціну.
З іншого боку, протокол все ще повинен пропонувати користувачам справедливі та актуальні котирування: використання занадто широкого вікна часу призведе до занадто великої цінової різниці між протоколом та поточною ринковою ціною, тоді як використання занадто вузького вікна часу не забезпечить бажаної цінової різниці.
Порівняйте 10-хвилинний та 60-хвилинний TWAP з ціновими потоками Chainlink
Щоб ви зрозуміли, чому ми врешті-решт обрали вікно в 10 хвилин, ось порівняння між 10-хвилинними та 60-хвилинними TWAP ETH/USDC та ціною ETH/USD від Chainlink та ціною закриття від Coinbase.
Ви можете побачити, як верхні та нижні ставки, які використовує протокол під час мінтінгу/закриття та випалювання/відкриття користувачами, переміщуються між найбільш вигідними цінами від Chainlink та TWAP Uniswap під час переходів цін.
Незважаючи на те, що 60-хвилинний блок TWAP часто надає ціни, які віддалені від ринку, 10-хвилинний TWAP забезпечує корисний буфер для джерела цін Chainlink, тримаючи ціну достатньо близькою до ринку.
Варто зазначити, що, як видно на першому графіку, чим більша волатильність, тим більша різниця в ціні між цінами Chainlink та Uniswap. І навпаки, коли ціни залишаються відносно стабільними з часом, джерела цін від Uniswap і Chainlink ближчі один до одного. Використання TWAP як додаткового захисту від фронт-ранінгу – це, по суті, спосіб динамічно стягувати більше комісій у періоди високої волатильності, оскільки ризик фронт-рану більший через затримки в ончейн-оракулах. Вартість цих вищих ефективних комісій полягає в тому, що вони зменшують здатність арбітражних трейдерів безпосередньо переоцінювати стейблкоїни з протоколу. У більшості випадків ціни на Uniswap і Chainlink будуть дуже схожі, і користувачі навряд чи помітять використання двох рішень оракула. Однак у періоди високої волатильності, коли протокол піддається ризику випередження через значну різницю в ціні між поточними та майбутніми цінами Chainlink, ціни протоколу відрізнятимуться, захищаючи його від випередження.
Дослідження оракула Angle сильно інспірується дискусіями з управління Synthetix та відповідними блог-пости про фронтраннінг. У наших дослідженнях ми також стикалися з іншою опцією, яку вони реалізували в лютому 2020 року, відновлення / повернення комісії, яке в кінцевому підсумку стало тимчасовим рішенням.
Те, що вони зробили, полягало в додаванні періоду очікування до транзакцій, під час якого користувачі не могли маніпулювати Синтетикою, яку вони хотіли використовувати. Протягом цього періоду оракули могли перевірити, чи транзакція була під впливом неузгодженостей, зокрема, чи була різниця в ціні між моментом виконання та кінцем періоду очікування. Якщо існувала різниця в ціні, її повинен був оплатити користувач або протокол іншій стороні (протоколу або користувачеві), або вона могла б бути врегульована у наступній транзакції з Synthetix.
Це рішення виявилося дуже ефективним у зменшенні фронтранінгу, але їм довелося продовжити період очікування та збільшити комісії, що призвело до дуже поганого досвіду користувачів для всіх трейдерів. Це також запобігло Synth інтеграції з іншими протоколами в багатьох випадках використання. У SIP-120 вони замінили це рішення планом, який додає використання TWAP-оракулів для великих транзакцій.
Специфічний дизайн оракула Angle має два основних впливи на протокол:
Атакувальникам потрібно маніпулювати двома ринками, щоб обманути протокол, значно знижуючи ризик успішних операцій з фронтраннінгу.
Під час стресових періодів на ринку протокол ймовірно не зможе запропонувати користувачам найкращу можливу ціну.
Останній вплив обговорювався на форумі управління FEI. Оскільки забезпечення найкращого виконання угод не є основною метою протоколу, ми вважаємо, що опір випередження є більш важливим для забезпечення безпеки протоколу. На вторинних ринках у періоди високої волатильності буде запропоновано краще виконання угод.
Наша мета в проєкті Angle — розробити повністю підтримуваний, ефективний протокол стейблкоїнів. Досягнення цієї мети вимагає розгляду багатьох аспектів протоколу, щоб гарантувати, що його не можна обдурити в несприятливу позицію, одним з яких є опір на передньому краї. Це особливо важливо, оскільки стабільність ончейн децентралізованих стейблкоїнів, які покладаються на оракули, залежить від якості їхніх оракулів.
Додавання додаткових цінових каналів у формі TWAP може допомогти протоколу пом'якшити можливі негативні впливи високої ринкової волатильності та можливості фронтраннінгу, що виникають у цей час.
Нарешті, важливо відзначити, що це рішення оракула зберігає гнучкість і масштабованість. З одного боку, керівництво Angle може голосувати та оновлювати свої контракти оракулів у будь-який час. З іншого боку, оракули можуть бути створені для будь-якої цінової стрічки, що підтримується Chainlink. Це мінімальний рівень підтримки, необхідний для досягнення бачення Angle щодо виведення фінансових активів у мережу з ефективним капіталом способом!