Hooks, или программирование с помощью хуков, представляет собой модель программирования, которая позволяет разработчикам вставлять пользовательский код в путь выполнения системы, приложения или библиотеки с помощью хуков, которые представляют собой заранее определенные функции или блоки кода. Нет необходимости изменять исходный код. Хуки часто используются во многих средах программирования и фреймворках, таких как операционные системы, фреймворки и библиотеки, веб-разработка и системы плагинов.
Используя хуки, разработчики могут повысить масштабируемость и настраиваемость программы, не изменяя исходный код для каждого изменения или расширения требований, что помогает сохранить код чистым и стабильным. Хуки обеспечивают элегантный метод реализации расширения программного обеспечения и являются очень полезной моделью программирования в дизайне программного обеспечения.
В частности, AOP (Aspect-oriented Programming) часто сравнивают с программированием на Hook. AOP - это модульная парадигма программирования, которая реализует поперечные заботы, и целью не является изменение основной бизнес-логики. Он улучшает или модифицирует функциональность при необходимости. Здесь я не буду подробно раскрывать AOP. Вы можете просто думать о AOP как о более высокоуровневой абстракции программирования на HooK.
В июне 2023 года Uniswap объявил и опубликовал черновую версию белой книги Uniswap V4. Важной особенностью Uniswap V4 является введение Hooks.
Хуки широко используются в финансовых системах Web2, поскольку эти системы обычно требуют высокой степени настраиваемости и масштабируемости. В пользовательских сценариях, например, при обработке транзакций, используйте Хуки для вставки дополнительной логики проверки до и после выполнения транзакции, такой как вторичная проверка, обнаружение контроля рисков и стратегии противодействия отмыванию денег (AML). Сценарии масштабируемости включают интеграцию с внешними API или микросервисами через Хуки для расширения новых функций в финансовой системе, таких как службы аутентификации личности, конвертация валютного курса, платежные шлюзы и т. д. Но, внедрив Хуки в DeFi, Uniswap установил прецедент.
Uniswap V4 Hooks - это в основном внешний контракт, созданный и определенный разработчиками. Когда создается пул ликвидности, вы можете выбрать привязку контракта Hook. После этого пул ликвидности будет вызывать ранее привязанный контракт Hook для выполнения определенных операций на различных этапах жизненного цикла, обеспечивая высокую степень настраиваемости. Разработчики могут использовать Hook Uniswap для более персонализированных торговых сценариев и создания DApps с более богатыми функциями, такими как:
В настоящее время Uniswap V4 поддерживает четыре группы обратных вызовов Hook, каждая группа содержит пару обратных вызовов:
Следующая диаграмма иллюстрирует процесс beforeSwap/afterSwap Hook, описанный в белой книге. Можно заметить, что перед и после выполнения свопа, сначала проверяется, включен ли соответствующий флаг Hook пула ликвидности. Если он включен, то затем вызываются соответствующие функции договора Hook.
Эти Hooks могут быть выполнены до начала сделки и после завершения сделки, обеспечивая функциональность, аналогичную on-chain лимитным ордерам. Пользователь размещает лимитный ордер на контракте Hook, а затем использует пользовательский или управляемый оракул в обратном вызове afterSwap, чтобы определить, соответствует ли цена лимиту. Если да, транзакция будет выполнена. Если нет, транзакция будет отменена.
Uniswap V4 глубоко привязывает ликвидность к развитию самого DApp через Хуки. Он улучшает функции DApp и также усиливает сетевой эффект Uniswap, делая его базовой инфраструктурой всей экосистемы DeFi.
Команда BlockSec исследовала риски безопасности механизма Hooks в Uniswap V4. Помимо того, что сам контракт Hook является вредоносным, доброжелательные контракты Hook также чрезвычайно подвержены уязвимостям. Команда BlockSec проанализировала репозиторий Awesome Uniswap v4 Hooks (хэш коммита 3a0a444922f26605ec27a41929f3ced924af6075) и обнаружила, что более 30% проектов в репозитории были уязвимы. Эти уязвимости главным образом происходят из рисков взаимодействия между Hook, PoolManager и внешними сторонами и могут быть в основном разделены на две категории:
Даже если необходимый контроль доступа к чувствительным внешним/общедоступным функциям правильно реализован, и входные параметры проверены для уменьшения рисков безопасности, связанных с вышеперечисленными двумя типами 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 протоколов, которые считают безопасность приоритетной.
Эта статья, изначально названная "Эволюция DeFi Hooks: от безопасности контракта Uniswap V4 до Artela Native Protocol", воспроизводится из [ Маленькая свинка Web3]. Все авторские права принадлежат оригинальному автору [web3 Чжу Дадан]. Если у вас есть возражения против перепечатки, пожалуйста, свяжитесь с Gate Учитькоманда, команда обработает это как можно скорее.
Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, представляют только личные взгляды автора и не являются инвестиционными советами.
Переводы статьи на другие языки выполняются командой Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.
Hooks, или программирование с помощью хуков, представляет собой модель программирования, которая позволяет разработчикам вставлять пользовательский код в путь выполнения системы, приложения или библиотеки с помощью хуков, которые представляют собой заранее определенные функции или блоки кода. Нет необходимости изменять исходный код. Хуки часто используются во многих средах программирования и фреймворках, таких как операционные системы, фреймворки и библиотеки, веб-разработка и системы плагинов.
Используя хуки, разработчики могут повысить масштабируемость и настраиваемость программы, не изменяя исходный код для каждого изменения или расширения требований, что помогает сохранить код чистым и стабильным. Хуки обеспечивают элегантный метод реализации расширения программного обеспечения и являются очень полезной моделью программирования в дизайне программного обеспечения.
В частности, AOP (Aspect-oriented Programming) часто сравнивают с программированием на Hook. AOP - это модульная парадигма программирования, которая реализует поперечные заботы, и целью не является изменение основной бизнес-логики. Он улучшает или модифицирует функциональность при необходимости. Здесь я не буду подробно раскрывать AOP. Вы можете просто думать о AOP как о более высокоуровневой абстракции программирования на HooK.
В июне 2023 года Uniswap объявил и опубликовал черновую версию белой книги Uniswap V4. Важной особенностью Uniswap V4 является введение Hooks.
Хуки широко используются в финансовых системах Web2, поскольку эти системы обычно требуют высокой степени настраиваемости и масштабируемости. В пользовательских сценариях, например, при обработке транзакций, используйте Хуки для вставки дополнительной логики проверки до и после выполнения транзакции, такой как вторичная проверка, обнаружение контроля рисков и стратегии противодействия отмыванию денег (AML). Сценарии масштабируемости включают интеграцию с внешними API или микросервисами через Хуки для расширения новых функций в финансовой системе, таких как службы аутентификации личности, конвертация валютного курса, платежные шлюзы и т. д. Но, внедрив Хуки в DeFi, Uniswap установил прецедент.
Uniswap V4 Hooks - это в основном внешний контракт, созданный и определенный разработчиками. Когда создается пул ликвидности, вы можете выбрать привязку контракта Hook. После этого пул ликвидности будет вызывать ранее привязанный контракт Hook для выполнения определенных операций на различных этапах жизненного цикла, обеспечивая высокую степень настраиваемости. Разработчики могут использовать Hook Uniswap для более персонализированных торговых сценариев и создания DApps с более богатыми функциями, такими как:
В настоящее время Uniswap V4 поддерживает четыре группы обратных вызовов Hook, каждая группа содержит пару обратных вызовов:
Следующая диаграмма иллюстрирует процесс beforeSwap/afterSwap Hook, описанный в белой книге. Можно заметить, что перед и после выполнения свопа, сначала проверяется, включен ли соответствующий флаг Hook пула ликвидности. Если он включен, то затем вызываются соответствующие функции договора Hook.
Эти Hooks могут быть выполнены до начала сделки и после завершения сделки, обеспечивая функциональность, аналогичную on-chain лимитным ордерам. Пользователь размещает лимитный ордер на контракте Hook, а затем использует пользовательский или управляемый оракул в обратном вызове afterSwap, чтобы определить, соответствует ли цена лимиту. Если да, транзакция будет выполнена. Если нет, транзакция будет отменена.
Uniswap V4 глубоко привязывает ликвидность к развитию самого DApp через Хуки. Он улучшает функции DApp и также усиливает сетевой эффект Uniswap, делая его базовой инфраструктурой всей экосистемы DeFi.
Команда BlockSec исследовала риски безопасности механизма Hooks в Uniswap V4. Помимо того, что сам контракт Hook является вредоносным, доброжелательные контракты Hook также чрезвычайно подвержены уязвимостям. Команда BlockSec проанализировала репозиторий Awesome Uniswap v4 Hooks (хэш коммита 3a0a444922f26605ec27a41929f3ced924af6075) и обнаружила, что более 30% проектов в репозитории были уязвимы. Эти уязвимости главным образом происходят из рисков взаимодействия между Hook, PoolManager и внешними сторонами и могут быть в основном разделены на две категории:
Даже если необходимый контроль доступа к чувствительным внешним/общедоступным функциям правильно реализован, и входные параметры проверены для уменьшения рисков безопасности, связанных с вышеперечисленными двумя типами 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 протоколов, которые считают безопасность приоритетной.
Эта статья, изначально названная "Эволюция DeFi Hooks: от безопасности контракта Uniswap V4 до Artela Native Protocol", воспроизводится из [ Маленькая свинка Web3]. Все авторские права принадлежат оригинальному автору [web3 Чжу Дадан]. Если у вас есть возражения против перепечатки, пожалуйста, свяжитесь с Gate Учитькоманда, команда обработает это как можно скорее.
Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, представляют только личные взгляды автора и не являются инвестиционными советами.
Переводы статьи на другие языки выполняются командой Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.