
Оракул и фронтраннинг
Перевод: Сообщество Denglian
В дизайн Angle Protocol было вложено много исследований. Хотя на первый взгляд его структура может показаться простой, за ней стоит множество сложных концепций, которые необходимо понять. В этой серии статей мы подробно рассмотрим некоторые элементы протокола и объясним, почему они были разработаны именно так.
Первая статья посвящена решению Angle для оракулов и тому, как оно построено для смягчения риска фронтраннинга.

Введение
Angle позволяет пользователям минтить и сжигать agTokens (стейблкоины) в обмен на другие токены. Трейдеры также могут открывать длинные позиции по доступным парам залог/стейблкоин. Это не традиционные бессрочные контракты, поскольку баланс не зависит от ставок финансирования, а цена исполнения поступает напрямую от оракула.
Учитывая эти варианты использования, протоколу нужен надежный способ оценки доступных активов, чтобы предлагать пользователям справедливые цены и защищать себя от фронтраннинга. В разделе FAQ этой статьи Samcszun объясняет, почему это не просто использование спотовой цены.
Фронтраннинг — это давняя проблема на рынке. Это сводится к тому, что некоторые участники могут получать информацию раньше других и использовать ее для получения безрисковой прибыли за счет другой стороны сделки. Исторически предотвращение этого явления в цепочке было очень сложным. Высокая стоимость и низкая скорость транзакций Ethereum затрудняют быстрое и частое обновление цен оракулами. Это вносит задержку между ценами вне цепочки и в цепочке, что позволяет фронтраннерам использовать это для получения прибыли.
Не все протоколы стейблкоинов обеспокоены риском фронтраннинга, вызванным задержкой оракулов. В случае с DAI от Maker задержка оракулов обычно выгодна протоколу. Если кто-то видит, что его позиция будет ликвидирована при следующем обновлении оракула из-за падения цены, у него есть стимул вернуть средства в хранилище, тем самым улучшая здоровье протокола и коэффициент залога.
Синтетические активы (Synthetix) позволяют обменивать ценность оракула между синтетическими активами и залогом, что является идеальным примером проблем, с которыми сталкиваются протоколы стейблкоинов из-за фронтраннинга. Их сообщения в блоге подытоживают долгую историю протокола с фронтраннингом, включая некоторые атаки, которым они подвергались в прошлом.
Подобно Synthetix, Angle позволяет обменивать активы по ценности оракула без проскальзывания цены. Следовательно, Angle также сталкивается с той же проблемой фронтраннинга. Основная команда Angle приложила много усилий для предотвращения фронтраннинга. В этом отношении были внедрены два основных улучшения: специфический дизайн оракула и динамическая структура комиссий. В этой статье мы объясним дизайн оракула Angle и причины, стоящие за ним.
Фронтраннинг обновления оракула: пример
Прежде чем углубляться в решение Angle, давайте попробуем понять, как фронтраннинг может нанести ущерб протоколу. Мы рассмотрим пример, где 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
Дизайн Angle специально создан для устранения этого риска фронтраннинга. Следовательно, протокол внедрит механизм, очень похожий на приведенный выше пример. В этом разделе мы более подробно рассмотрим потенциальные существующие варианты, сосредоточимся на специфике дизайна, который мы собираемся внедрить, и проведем анализ нашего выбора временного окна TWAP.
Варианты
Основные решения для оракулов, которые могут подойти для случаев использования Angle:
-
Chainlink
-
Uniswap V3 TWAP
-
Maker Feeds
Chainlink — это очевидный первый выбор: это широко используемое децентрализованное решение для оракулов, предоставляющее несколько источников данных для различных активов. Их цены поступают из нескольких источников данных и проходят через децентрализованную сеть ретрансляции, гарантируя, что эти данные надежны, доступны и трудны для манипуляции. Однако некоторые источники данных обычно обновляются только после «значительных» изменений цены (например, 0.5% для ETH/USD) или через определенный период времени, что означает, что цены Chainlink всегда отстают от фактических рыночных цен. Следовательно, обновления цен Chainlink могут быть подвержены фронтраннингу из-за просмотра цен вне цепочки или мемпула.
Взвешенная по времени средняя цена (TWAP) Uniswap V3 — это еще одно очевидное и широко используемое решение для оракулов. TWAP можно запросить из контрактов Uniswap, чтобы получить взвешенную по времени среднюю цену токенов в пуле за определенный период времени, диапазон от нескольких секунд до 9 дней. Цена рассчитывается как средняя цена между этими двумя токенами за указанное время. Благодаря этому манипулирование TWAP требует значительных средств и занимает много времени, что в большинстве случаев неэффективно.
Тем не менее, поскольку TWAP представляет собой среднюю цену наблюдений прошлых блоков, они также часто отстают от цен в реальном времени вне цепочки и даже от источников цен Chainlink. Если использовать их по отдельности, их недостаточно для защиты протокола от фронтраннинга.
Кроме того, поскольку TWAP сообщает только цены пар токенов в цепочке, они не могут удовлетворить цель протокола по предоставлению доступа к активам, не представленным в цепочке (и, следовательно, не в пулах Uniswap), таким как стейблкоины Forex.
Использование Maker Oracles могло бы быть еще одним выбором для Angle. Но это означало бы доверие MakerDAO и прохождение процесса управления для запроса доступа к данным о ценах. Источники цен также ограничены теми, которые использует Maker, чего для нас недостаточно, поскольку мы хотим иметь доступ к валютным курсам.
Дизайн Angle: Chainlink + UniV3 TWAP
Учитывая это, было решено объединить оракул Chainlink протокола Angle с 10-минутным Uni V3 TWAP. Это позволяет получать максимально справедливую цену в любое время, одновременно защищая протокол от атак фронтраннинга.
В общем, контракты Angle будут сравнивать цены двух каналов и использовать цену, наиболее выгодную для протокола. Благодаря такому дизайну фронтраннинг протокола становится более сложным, поскольку для использования обменного курса протокола необходимо манипулировать или фронтраннить два оракула.
В частности, наши контракты будут получать лучшую цену между Chainlink и Uniswap для всех пар волатильный актив/стейблкоин и использовать оракул Forex от Chainlink для конвертации цены в требуемую фиатную валюту. Для каждой пары залог/стейблкоин будет выделен специальный контракт оракула и его независимый источник цены.
Как это работает?
Например, предположим, что пользователь хочет торговать по паре ETH/agEUR. Нашему контракту нужно получить цены ETH/USD и USD/EUR. Он сохранит лучшую цену ETH/USD от Chainlink и 10-минутный TWAP пула ETH/USDC UniV3. Затем он получит цену Forex 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, которую он может найти, то есть 1850 USD за ETH от Chainlink. И наоборот, если в той же ситуации пользователь хочетсжечьagEUR на wETH, протокол будет использовать более высокую цену, то есть Uni ETH/USDC TWAP равную 1900. В обоих случаях протокол будет использовать курс Chainlink USD/EUR 1.16 для конвертации ETH/USD в ETH/EUR.Аналогично, протокол будет использовать самую высокую цену для пользователей, желающих открыть бессрочный контракт, и самую низкую цену для тех, кто хочет закрыть контракт.
В более общем смысле:
-
Контракт пользователя, которому нужна цена, вызовет соответствующий контракт оракула.
-
В зависимости от типа пары, контракт оракула может считывать котировки из UniV3 TWAP и Chainlink или только из Chainlink (например, для обмена стейблкоин на стейблкоин) и возвращать их главному контракту.
-
В зависимости от выполняемой операции (минт, сжигание, открытие или закрытие), соответствующий контракт сохраняет лучшую котировку протокола и исполняет транзакцию.
Выбор временного окна Uni V3 TWAP
Контракты Angle будут использовать 10-минутное временное окно для TWAP. Этот выбор был тщательно обдуман, поскольку разные временные окна могут привести к совершенно разным ценовым структурам.
Различия между разными временными окнами
В случае Angle, с одной стороны, временное окно должно быть достаточно долгим, чтобы обеспечить достаточную задержку между протоколом и спотовой ценой. Это действительно позволяет получить более высокий спред между ценами минта и сжигания в случае волатильности цен, когда риск фронтраннинга Chainlink удваивается. Кроме того, чем дольше временное окно, тем сложнее манипулировать ценой TWAP, поскольку недавние наблюдения оказывают меньшее влияние на цену.
С другой стороны, протокол все еще должен предоставлять пользователям справедливые и актуальные котировки: использование слишком широкого временного окна создаст слишком большой разрыв между нами и текущей рыночной ценой, а использование слишком узкого временного окна не даст нам желаемой разницы в ценах.
Сравнение 10-минутного и 60-минутного TWAP с источниками цен Chainlink
Чтобы показать вам, почему мы в итоге выбрали 10-минутное временное окно, ниже показано сравнение 10-минутного и 60-минутного ETH/USDC TWAP с ценой Chainlink ETH/USD и ценой закрытия Coinbase.
Вы можете видеть, как при переходе между ценами верхние и нижние ставки, используемые протоколом при минте/закрытии и сжигании/открытии пользователем, перемещаются между наиболее выгодными ценами между TWAP Chainlink и Uniswap.


Хотя 60-минутный сегмент TWAP часто дает цены, далекие от рынка, 10-минутный TWAP обеспечивает полезный буфер для источника цен Chainlink, сохраняя цены достаточно близкими к рынку.

Стоит отметить, что из первого графика видно, что чем выше волатильность, тем больше спред между ценами Chainlink и Uniswap. И наоборот, когда цены остаются относительно стабильными в течение периода времени, источники цен Uniswap и Chainlink приближаются друг к другу.
Использование TWAP в качестве дополнительной защиты от фронтраннинга фактически равносильно динамическому взиманию более высоких существенных комиссий в периоды высокой волатильности цен, поскольку в этом случае риск фронтраннинга выше из-за задержки оракула в цепочке. Ценой этих более высоких эффективных комиссий является снижение способности арбитражных трейдеров напрямую переоценивать стейблкоины через протокол.
В большинстве случаев цены Uniswap и Chainlink будут очень похожи, так что пользователи почти не заметят использования двух решений для оракулов. В периоды высокой волатильности, когда протокол может быть подвержен фронтраннингу из-за значительной разницы в ценах между текущей и будущей ценами Chainlink в цепочке, цены протокола будут отличаться, и протокол будет защищен от фронтраннинга.
Внимание на возврат/возмещение комиссий Synthetix
Исследование оракулов Angle было сильно вдохновлено обсуждениями управления Synthetix относительно фронтраннинга и их соответствующими сообщениями в блоге. Другим вариантом, с которым мы также столкнулись в нашем исследовании, было внедрение ими возврата/возмещения комиссий в феврале 2020 года, что в итоге было временной мерой.
Что они сделали, так это добавили период ожидания для транзакций, в течение которого пользователи не могли манипулировать Synth, который они хотели использовать. В течение этого периода оракул мог проверить, подверглась ли транзакция несоответствию, то есть是否存在 ли разница в ценах между моментом исполнения и окончанием периода ожидания. Если да, то разница в ценах должна быть выплачена пользователем или протоколом другой стороне (протоколу или пользователю), или оплачена при следующей транзакции с Synthetix.
Это решение было очень эффективным в уменьшении фронтраннинга, но им пришлось увеличить время ожидания и комиссии, что привело к очень плохому пользовательскому опыту для всех трейдеров. Это также предотвратило комбинацию Synth с другими протоколами во многих случаях использования. В SIP-120 они заменили это решение вариантом использования оракула TWAP для крупных транзакций.
Заключение
Специфический дизайн оракула Angle имеет два основных последствия для протокола:
-
Злоумышленнику нужно манипулировать двумя рынками, чтобы обмануть протокол, что значительно снижает риск успешного фронтраннинга.
-
В периоды рыночного стресса протокол, вероятно, не будет предлагать пользователям лучшую цену.
Последнее влияние — это тема, обсуждавшаяся на форуме управления Fei. Поскольку предоставление наилучшего исполнения сделки не является основной целью протокола, мы считаем, что устойчивость к фронтраннингу более важна для обеспечения безопасности протокола. Вторичные рынки обеспечат лучшее исполнение сделок в периоды высокой волатильности.
Наша цель в проекте Angle — разработать полностью обеспеченный эффективный протокол стейблкоинов. Для этого необходимо учитывать многие аспекты протокола, чтобы убедиться, что его нельзя обмануть в невыгодном положении, и одним из них является устойчивость к фронтраннингу. Это особенно важно, поскольку стабильность децентрализованного стейблкоина в цепочке, зависящего от оракулов, зависит от его оракула.
Добавление вторичной подачи цен в виде TWAP может помочь протоколу смягчить потенциальные негативные последствия высокой рыночной волатильности, а также возможности для фронтраннинга, возникающие в эти моменты.
Наконец, следует отметить, что это решение для оракула сохраняет гибкость и масштабируемость. С одной стороны, управление Angle может в любое время проголосовать и обновить свои контракты оракула. С другой стороны, оракул может быть создан для любой подачи цен, поддерживаемой Chainlink. Это минимальная поддержка для реализации видения Angle — привлечения финансовых активов в цепочку капиталоеффективным способом.
Присоединяйтесь к официальному сообществу TechFlow
Telegram:https://t.me/TechFlowDaily
X (Twitter):https://x.com/TechFlowPost
X (Twitter) EN:https://x.com/BlockFlow_News















