Эволюция DeFi Hooks: от безопасности контракта Uniswap V4 до Artela Native Protocol

Средний5/21/2024, 3:41:36 PM
Эта статья объясняет концепцию модели программирования Hooks, которая позволяет разработчикам вставлять пользовательский код в путь выполнения системы, приложения или библиотеки с помощью предопределенных функций или блоков кода, улучшая масштабируемость и настраиваемость программы. Uniswap V4 представляет Hooks, через которые могут быть реализованы функции, такие как динамические комиссии, ордера с лимитом цены на цепочке и рыночные мейкеры с взвешенным по времени средним, улучшая функции DApp и сетевой эффект Uniswap.

Что такое Хуки

Hooks, или программирование с помощью хуков, представляет собой модель программирования, которая позволяет разработчикам вставлять пользовательский код в путь выполнения системы, приложения или библиотеки с помощью хуков, которые представляют собой заранее определенные функции или блоки кода. Нет необходимости изменять исходный код. Хуки часто используются во многих средах программирования и фреймворках, таких как операционные системы, фреймворки и библиотеки, веб-разработка и системы плагинов.

Используя хуки, разработчики могут повысить масштабируемость и настраиваемость программы, не изменяя исходный код для каждого изменения или расширения требований, что помогает сохранить код чистым и стабильным. Хуки обеспечивают элегантный метод реализации расширения программного обеспечения и являются очень полезной моделью программирования в дизайне программного обеспечения.

В частности, AOP (Aspect-oriented Programming) часто сравнивают с программированием на Hook. AOP - это модульная парадигма программирования, которая реализует поперечные заботы, и целью не является изменение основной бизнес-логики. Он улучшает или модифицирует функциональность при необходимости. Здесь я не буду подробно раскрывать AOP. Вы можете просто думать о AOP как о более высокоуровневой абстракции программирования на HooK.

Uniswap V4: Hooks Revolution

В июне 2023 года Uniswap объявил и опубликовал черновую версию белой книги Uniswap V4. Важной особенностью Uniswap V4 является введение Hooks.

Хуки широко используются в финансовых системах Web2, поскольку эти системы обычно требуют высокой степени настраиваемости и масштабируемости. В пользовательских сценариях, например, при обработке транзакций, используйте Хуки для вставки дополнительной логики проверки до и после выполнения транзакции, такой как вторичная проверка, обнаружение контроля рисков и стратегии противодействия отмыванию денег (AML). Сценарии масштабируемости включают интеграцию с внешними API или микросервисами через Хуки для расширения новых функций в финансовой системе, таких как службы аутентификации личности, конвертация валютного курса, платежные шлюзы и т. д. Но, внедрив Хуки в DeFi, Uniswap установил прецедент.

Uniswap V4 Hooks - это в основном внешний контракт, созданный и определенный разработчиками. Когда создается пул ликвидности, вы можете выбрать привязку контракта Hook. После этого пул ликвидности будет вызывать ранее привязанный контракт Hook для выполнения определенных операций на различных этапах жизненного цикла, обеспечивая высокую степень настраиваемости. Разработчики могут использовать Hook Uniswap для более персонализированных торговых сценариев и создания DApps с более богатыми функциями, такими как:

  • Динамические сборы: Через Хуки ликвидные пулы могут динамически корректировать сборы в зависимости от волатильности рынка или других входных параметров, чтобы лучше адаптироваться к рыночным условиям;
  • On-chain Limit Orders: Хуки могут создавать и выполнять лимитные ордера на цепи, позволяя пользователям торговать по указанным ценам;
  • Time Weighted Average Market Maker (TWAMM): Использует механизм Hooks для создания пула ликвидности, который поддерживает стратегию TWAMM для равномерного распределения транзакций больших ордеров на протяжении некоторого времени. \

В настоящее время Uniswap V4 поддерживает четыре группы обратных вызовов Hook, каждая группа содержит пару обратных вызовов:

  • beforeInitialize/afterInitialize: Инициализировать пул ликвидности;
  • beforeModifyPosition/afterModifyPosition: добавить/уменьшить/удалить ликвидность;
  • beforeSwap/afterSwap: обмен;
  • beforeDonate/afterDonate: Пожертвование (новая функция, представленная Uniswap V4, совет поставщикам ликвидности в пределах торгового объема).

Следующая диаграмма иллюстрирует процесс beforeSwap/afterSwap Hook, описанный в белой книге. Можно заметить, что перед и после выполнения свопа, сначала проверяется, включен ли соответствующий флаг Hook пула ликвидности. Если он включен, то затем вызываются соответствующие функции договора Hook.

Эти Hooks могут быть выполнены до начала сделки и после завершения сделки, обеспечивая функциональность, аналогичную on-chain лимитным ордерам. Пользователь размещает лимитный ордер на контракте Hook, а затем использует пользовательский или управляемый оракул в обратном вызове afterSwap, чтобы определить, соответствует ли цена лимиту. Если да, транзакция будет выполнена. Если нет, транзакция будет отменена.

Uniswap V4 глубоко привязывает ликвидность к развитию самого DApp через Хуки. Он улучшает функции DApp и также усиливает сетевой эффект Uniswap, делая его базовой инфраструктурой всей экосистемы DeFi.

Проблемы безопасности крючков Uniswap V4

Команда BlockSec исследовала риски безопасности механизма Hooks в Uniswap V4. Помимо того, что сам контракт Hook является вредоносным, доброжелательные контракты Hook также чрезвычайно подвержены уязвимостям. Команда BlockSec проанализировала репозиторий Awesome Uniswap v4 Hooks (хэш коммита 3a0a444922f26605ec27a41929f3ced924af6075) и обнаружила, что более 30% проектов в репозитории были уязвимы. Эти уязвимости главным образом происходят из рисков взаимодействия между Hook, PoolManager и внешними сторонами и могут быть в основном разделены на две категории:

  • Проблемы контроля доступа: Основной заботой являются функции обратного вызова в Uniswap V4. Эти функции должны вызываться только PoolManager и не могут быть вызваны другими адресами (включая EOA и контракты). Например, в случае, когда вознаграждения распределяются ключами пула, вознаграждения могут быть запрослены неправильно, если соответствующая функция может быть вызвана любым аккаунтом. Поэтому необходимо, чтобы Hooks устанавливали строгие механизмы контроля доступа, особенно учитывая, что они могут вызываться другими сторонами помимо самого пула;
  • Введите контрольный вопрос: Различные типы атак, включая хорошо известные атаки повторного входа, происходят из-за неправильной валидации ввода в некоторых уязвимых реализациях Hook. Самая распространенная ситуация заключается в том, что ненадежные внешние контракты вызываются в некоторых ключевых функциях Hook. Для атаки на эти уязвимые Hook злоумышленник может зарегистрировать злонамеренный фондовый пул для своих фальшивых токенов, а затем вызвать Hook для использования средств. Пул выполняет операции. При взаимодействии с пулом злонамеренная токен-логика захватывает поток управления, чтобы заниматься нежелательным поведением.

Даже если необходимый контроль доступа к чувствительным внешним/общедоступным функциям правильно реализован, и входные параметры проверены для уменьшения рисков безопасности, связанных с вышеперечисленными двумя типами Hooks, уязвимость контракта сама по себе не может быть полностью избежана, особенно если Hook обновляемый. Если контракт реализован, вы также можете столкнуться с аналогичными проблемами, подобными уязвимости UUPSUpgradeable от OpenZeppelin.

Причина заключается в том, что программирование Hook увеличивает сложность смарт-контрактов, тем самым увеличивая поверхность атаки. Для обычных смарт-контрактов OpenZeppelin предоставляет серию библиотек лучших практик для обеспечения безопасности разработанных на их основе контрактов. Однако в фундаментальном смысле это добавляет "ограничения использования безопасности" для разработчиков. В сравнении, контракты Hook требуют еще более строгих "ограничений использования безопасности" по сравнению с обычными контрактами. Поэтому для широкого применения программирования Hook требуется комплексная структура: это требует безопасной среды выполнения, применимых программных парадигм для Hooks и более строгих ограничений использования.

Артела Аспект: Протокольная поддержка программирования на уровне хука

Крюки Uniswap V4 реализованы через смарт-контракты, и его проблемы безопасности также вызваны ограничениями смарт-контрактов. Существует ли решение, которое поддерживает программирование крюков на уровне протокола? Artela Aspect дает нам ответ!

Artela - это высокомасштабируемая и высокопроизводительная сеть блокчейна уровня 1, совместимая с EVM, разработанная для того, чтобы разработчики могли создавать модульные, функционально насыщенные, масштабируемые и настраиваемые приложения. Artela определяет новый программируемый модуль в качестве собственного расширения, называемого Aspect, который инновационно вводит AOP в сеть блокчейна. Для Aspect необходимо указать точку подключения, то есть место, где Aspect выполняется во всем жизненном цикле обработки транзакции. Аналогично обратному вызову Hook, точки подключения включают:

  • Инициализация блока
  • Проверка транзакции
  • Предварительное выполнение
  • После выполнения
  • Финализировать блок

Aspect в настоящее время поддерживает только TypeScript, и его код компилируется в байт-код WebAssembly (WASM) и развертывается в сети Artela. После развертывания Aspect владельцы смарт-контрактов могут привязать свои контракты к Aspect. Владелец смарт-контракта определяется как внешний аккаунт (EOA) с адресом, который может пройти проверку isOwner(address) и вернуть (bool) в смарт-контракте.

Далее, последующие транзакции, вызывающие смарт-контракт, будут обработаны Aspect, как показано на диаграмме ниже:

В качестве реализации Hooks на уровне протокола Artela Aspects имеет большие преимущества по сравнению с Uniswap V4 Hooks:

Сначала Artela Aspects использует WASM для выполнения своего кода, и эффективность выполнения на несколько порядков выше, чем у EVM;

Во-вторых, Artela Aspects могут подключить весь жизненный цикл транзакции, а не только основную логику DeFi, и могут создавать DApps с более богатыми функциями;

Наконец, и, что самое важное, Artela Aspects работает независимо в безопасной песочнице. Эта изоляция гарантирует, что выполнение Aspects не повлияет на безопасность выполнения контракта.

Изоляция аспектов Artela ограничивает взаимные вызовы между контрактом Hook как обычным контрактом и другими внешними контрактами, решая упрямую проблему контроля доступа и проверки ввода Uniswap V4 Hooks. Для DeFi-контрактов, таких как Uniswap, вы можете насладиться более быстрым, надежным и безопасным опытом Hook, развернув его на Artela.

Краткое изложение

Как значительный участник и лидер индустрии DeFi, Uniswap сыграл решающую роль в содействии прогрессу индустрии и улучшении функциональности. Введение Hooks в Uniswap V4 несомненно устанавливает направление развития DEX и с нетерпением эмулируется преемниками.

Однако Uniswap V4 Hooks ограничены встроенными ограничениями смарт-контрактов. Независимо от того, насколько надежно спроектирован протокол и насколько полны инструменты, он не может фундаментально предотвратить взаимные вызовы между контрактами Hook и внешними контрактами, создавая потенциальные уязвимости безопасности.

Artela, как высокопроизводительная совместимая с EVM сеть блокчейна уровня 1, разработала Aspect для независимого выполнения в WASM с момента создания протокола, оригинально поддерживая программирование Hook. Это значительно улучшает безопасность, предоставляя передовое решение для DeFi протоколов, которые считают безопасность приоритетной.

Утверждение:

  1. Эта статья, изначально названная "Эволюция DeFi Hooks: от безопасности контракта Uniswap V4 до Artela Native Protocol", воспроизводится из [ Маленькая свинка Web3]. Все авторские права принадлежат оригинальному автору [web3 Чжу Дадан]. Если у вас есть возражения против перепечатки, пожалуйста, свяжитесь с Gate Учитькоманда, команда обработает это как можно скорее.

  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, представляют только личные взгляды автора и не являются инвестиционными советами.

  3. Переводы статьи на другие языки выполняются командой Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.

Эволюция DeFi Hooks: от безопасности контракта Uniswap V4 до Artela Native Protocol

Средний5/21/2024, 3:41:36 PM
Эта статья объясняет концепцию модели программирования Hooks, которая позволяет разработчикам вставлять пользовательский код в путь выполнения системы, приложения или библиотеки с помощью предопределенных функций или блоков кода, улучшая масштабируемость и настраиваемость программы. Uniswap V4 представляет Hooks, через которые могут быть реализованы функции, такие как динамические комиссии, ордера с лимитом цены на цепочке и рыночные мейкеры с взвешенным по времени средним, улучшая функции DApp и сетевой эффект Uniswap.

Что такое Хуки

Hooks, или программирование с помощью хуков, представляет собой модель программирования, которая позволяет разработчикам вставлять пользовательский код в путь выполнения системы, приложения или библиотеки с помощью хуков, которые представляют собой заранее определенные функции или блоки кода. Нет необходимости изменять исходный код. Хуки часто используются во многих средах программирования и фреймворках, таких как операционные системы, фреймворки и библиотеки, веб-разработка и системы плагинов.

Используя хуки, разработчики могут повысить масштабируемость и настраиваемость программы, не изменяя исходный код для каждого изменения или расширения требований, что помогает сохранить код чистым и стабильным. Хуки обеспечивают элегантный метод реализации расширения программного обеспечения и являются очень полезной моделью программирования в дизайне программного обеспечения.

В частности, AOP (Aspect-oriented Programming) часто сравнивают с программированием на Hook. AOP - это модульная парадигма программирования, которая реализует поперечные заботы, и целью не является изменение основной бизнес-логики. Он улучшает или модифицирует функциональность при необходимости. Здесь я не буду подробно раскрывать AOP. Вы можете просто думать о AOP как о более высокоуровневой абстракции программирования на HooK.

Uniswap V4: Hooks Revolution

В июне 2023 года Uniswap объявил и опубликовал черновую версию белой книги Uniswap V4. Важной особенностью Uniswap V4 является введение Hooks.

Хуки широко используются в финансовых системах Web2, поскольку эти системы обычно требуют высокой степени настраиваемости и масштабируемости. В пользовательских сценариях, например, при обработке транзакций, используйте Хуки для вставки дополнительной логики проверки до и после выполнения транзакции, такой как вторичная проверка, обнаружение контроля рисков и стратегии противодействия отмыванию денег (AML). Сценарии масштабируемости включают интеграцию с внешними API или микросервисами через Хуки для расширения новых функций в финансовой системе, таких как службы аутентификации личности, конвертация валютного курса, платежные шлюзы и т. д. Но, внедрив Хуки в DeFi, Uniswap установил прецедент.

Uniswap V4 Hooks - это в основном внешний контракт, созданный и определенный разработчиками. Когда создается пул ликвидности, вы можете выбрать привязку контракта Hook. После этого пул ликвидности будет вызывать ранее привязанный контракт Hook для выполнения определенных операций на различных этапах жизненного цикла, обеспечивая высокую степень настраиваемости. Разработчики могут использовать Hook Uniswap для более персонализированных торговых сценариев и создания DApps с более богатыми функциями, такими как:

  • Динамические сборы: Через Хуки ликвидные пулы могут динамически корректировать сборы в зависимости от волатильности рынка или других входных параметров, чтобы лучше адаптироваться к рыночным условиям;
  • On-chain Limit Orders: Хуки могут создавать и выполнять лимитные ордера на цепи, позволяя пользователям торговать по указанным ценам;
  • Time Weighted Average Market Maker (TWAMM): Использует механизм Hooks для создания пула ликвидности, который поддерживает стратегию TWAMM для равномерного распределения транзакций больших ордеров на протяжении некоторого времени. \

В настоящее время Uniswap V4 поддерживает четыре группы обратных вызовов Hook, каждая группа содержит пару обратных вызовов:

  • beforeInitialize/afterInitialize: Инициализировать пул ликвидности;
  • beforeModifyPosition/afterModifyPosition: добавить/уменьшить/удалить ликвидность;
  • beforeSwap/afterSwap: обмен;
  • beforeDonate/afterDonate: Пожертвование (новая функция, представленная Uniswap V4, совет поставщикам ликвидности в пределах торгового объема).

Следующая диаграмма иллюстрирует процесс beforeSwap/afterSwap Hook, описанный в белой книге. Можно заметить, что перед и после выполнения свопа, сначала проверяется, включен ли соответствующий флаг Hook пула ликвидности. Если он включен, то затем вызываются соответствующие функции договора Hook.

Эти Hooks могут быть выполнены до начала сделки и после завершения сделки, обеспечивая функциональность, аналогичную on-chain лимитным ордерам. Пользователь размещает лимитный ордер на контракте Hook, а затем использует пользовательский или управляемый оракул в обратном вызове afterSwap, чтобы определить, соответствует ли цена лимиту. Если да, транзакция будет выполнена. Если нет, транзакция будет отменена.

Uniswap V4 глубоко привязывает ликвидность к развитию самого DApp через Хуки. Он улучшает функции DApp и также усиливает сетевой эффект Uniswap, делая его базовой инфраструктурой всей экосистемы DeFi.

Проблемы безопасности крючков Uniswap V4

Команда BlockSec исследовала риски безопасности механизма Hooks в Uniswap V4. Помимо того, что сам контракт Hook является вредоносным, доброжелательные контракты Hook также чрезвычайно подвержены уязвимостям. Команда BlockSec проанализировала репозиторий Awesome Uniswap v4 Hooks (хэш коммита 3a0a444922f26605ec27a41929f3ced924af6075) и обнаружила, что более 30% проектов в репозитории были уязвимы. Эти уязвимости главным образом происходят из рисков взаимодействия между Hook, PoolManager и внешними сторонами и могут быть в основном разделены на две категории:

  • Проблемы контроля доступа: Основной заботой являются функции обратного вызова в Uniswap V4. Эти функции должны вызываться только PoolManager и не могут быть вызваны другими адресами (включая EOA и контракты). Например, в случае, когда вознаграждения распределяются ключами пула, вознаграждения могут быть запрослены неправильно, если соответствующая функция может быть вызвана любым аккаунтом. Поэтому необходимо, чтобы Hooks устанавливали строгие механизмы контроля доступа, особенно учитывая, что они могут вызываться другими сторонами помимо самого пула;
  • Введите контрольный вопрос: Различные типы атак, включая хорошо известные атаки повторного входа, происходят из-за неправильной валидации ввода в некоторых уязвимых реализациях Hook. Самая распространенная ситуация заключается в том, что ненадежные внешние контракты вызываются в некоторых ключевых функциях Hook. Для атаки на эти уязвимые Hook злоумышленник может зарегистрировать злонамеренный фондовый пул для своих фальшивых токенов, а затем вызвать Hook для использования средств. Пул выполняет операции. При взаимодействии с пулом злонамеренная токен-логика захватывает поток управления, чтобы заниматься нежелательным поведением.

Даже если необходимый контроль доступа к чувствительным внешним/общедоступным функциям правильно реализован, и входные параметры проверены для уменьшения рисков безопасности, связанных с вышеперечисленными двумя типами Hooks, уязвимость контракта сама по себе не может быть полностью избежана, особенно если Hook обновляемый. Если контракт реализован, вы также можете столкнуться с аналогичными проблемами, подобными уязвимости UUPSUpgradeable от OpenZeppelin.

Причина заключается в том, что программирование Hook увеличивает сложность смарт-контрактов, тем самым увеличивая поверхность атаки. Для обычных смарт-контрактов OpenZeppelin предоставляет серию библиотек лучших практик для обеспечения безопасности разработанных на их основе контрактов. Однако в фундаментальном смысле это добавляет "ограничения использования безопасности" для разработчиков. В сравнении, контракты Hook требуют еще более строгих "ограничений использования безопасности" по сравнению с обычными контрактами. Поэтому для широкого применения программирования Hook требуется комплексная структура: это требует безопасной среды выполнения, применимых программных парадигм для Hooks и более строгих ограничений использования.

Артела Аспект: Протокольная поддержка программирования на уровне хука

Крюки Uniswap V4 реализованы через смарт-контракты, и его проблемы безопасности также вызваны ограничениями смарт-контрактов. Существует ли решение, которое поддерживает программирование крюков на уровне протокола? Artela Aspect дает нам ответ!

Artela - это высокомасштабируемая и высокопроизводительная сеть блокчейна уровня 1, совместимая с EVM, разработанная для того, чтобы разработчики могли создавать модульные, функционально насыщенные, масштабируемые и настраиваемые приложения. Artela определяет новый программируемый модуль в качестве собственного расширения, называемого Aspect, который инновационно вводит AOP в сеть блокчейна. Для Aspect необходимо указать точку подключения, то есть место, где Aspect выполняется во всем жизненном цикле обработки транзакции. Аналогично обратному вызову Hook, точки подключения включают:

  • Инициализация блока
  • Проверка транзакции
  • Предварительное выполнение
  • После выполнения
  • Финализировать блок

Aspect в настоящее время поддерживает только TypeScript, и его код компилируется в байт-код WebAssembly (WASM) и развертывается в сети Artela. После развертывания Aspect владельцы смарт-контрактов могут привязать свои контракты к Aspect. Владелец смарт-контракта определяется как внешний аккаунт (EOA) с адресом, который может пройти проверку isOwner(address) и вернуть (bool) в смарт-контракте.

Далее, последующие транзакции, вызывающие смарт-контракт, будут обработаны Aspect, как показано на диаграмме ниже:

В качестве реализации Hooks на уровне протокола Artela Aspects имеет большие преимущества по сравнению с Uniswap V4 Hooks:

Сначала Artela Aspects использует WASM для выполнения своего кода, и эффективность выполнения на несколько порядков выше, чем у EVM;

Во-вторых, Artela Aspects могут подключить весь жизненный цикл транзакции, а не только основную логику DeFi, и могут создавать DApps с более богатыми функциями;

Наконец, и, что самое важное, Artela Aspects работает независимо в безопасной песочнице. Эта изоляция гарантирует, что выполнение Aspects не повлияет на безопасность выполнения контракта.

Изоляция аспектов Artela ограничивает взаимные вызовы между контрактом Hook как обычным контрактом и другими внешними контрактами, решая упрямую проблему контроля доступа и проверки ввода Uniswap V4 Hooks. Для DeFi-контрактов, таких как Uniswap, вы можете насладиться более быстрым, надежным и безопасным опытом Hook, развернув его на Artela.

Краткое изложение

Как значительный участник и лидер индустрии DeFi, Uniswap сыграл решающую роль в содействии прогрессу индустрии и улучшении функциональности. Введение Hooks в Uniswap V4 несомненно устанавливает направление развития DEX и с нетерпением эмулируется преемниками.

Однако Uniswap V4 Hooks ограничены встроенными ограничениями смарт-контрактов. Независимо от того, насколько надежно спроектирован протокол и насколько полны инструменты, он не может фундаментально предотвратить взаимные вызовы между контрактами Hook и внешними контрактами, создавая потенциальные уязвимости безопасности.

Artela, как высокопроизводительная совместимая с EVM сеть блокчейна уровня 1, разработала Aspect для независимого выполнения в WASM с момента создания протокола, оригинально поддерживая программирование Hook. Это значительно улучшает безопасность, предоставляя передовое решение для DeFi протоколов, которые считают безопасность приоритетной.

Утверждение:

  1. Эта статья, изначально названная "Эволюция DeFi Hooks: от безопасности контракта Uniswap V4 до Artela Native Protocol", воспроизводится из [ Маленькая свинка Web3]. Все авторские права принадлежат оригинальному автору [web3 Чжу Дадан]. Если у вас есть возражения против перепечатки, пожалуйста, свяжитесь с Gate Учитькоманда, команда обработает это как можно скорее.

  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, представляют только личные взгляды автора и не являются инвестиционными советами.

  3. Переводы статьи на другие языки выполняются командой Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.

Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!