Хуки або програмування на крючках - це модель програмування, яка дозволяє розробникам вставляти власний код у шлях виконання системи, додатку або бібліотеки за допомогою хуків, які є заздалегідь визначеними функціями або блоками коду. Немає потреби змінювати початковий код. Хуки часто використовуються в багатьох середовищах програмування та фреймворках, таких як операційні системи, фреймворки та бібліотеки, веб-розробка та системи плагінів.
За допомогою хуків розробники можуть збільшити масштабованість та можливість налаштування програми без необхідності модифікувати початковий код під кожну зміну чи розширення вимог, що допомагає підтримувати код чистим та стабільним. Хуки надають елегантний метод реалізації розширення програмного забезпечення та є дуже корисною моделлю програмування в дизайні програмного забезпечення.
Зокрема, AOP (програмування, орієнтоване на аспекти) часто порівнюють з програмуванням на HooK. AOP - це модульна парадигма програмування, яка реалізує перерізні питання і має на меті не змінювати основну бізнес-логіку. Вона поліпшує або модифікує функціональність за необхідності. Я не буду докладно розглядати AOP тут. Ви можете просто уявити AOP як вищий рівень абстракції програмування на HooK.
У червні 2023 року Uniswap оголосив і оприлюднив чернетку білого паперу Uniswap V4. Важливою особливістю Uniswap V4 є введення крюків.
Гачки широко використовуються в фінансових системах Web2, оскільки в таких системах зазвичай потрібен високий рівень настроюваності та масштабованості. Призначені сценарії, такі як обробка транзакцій, використовують Гачки для вставки додаткової логіки перевірки перед та після виконання транзакції, такої як вторинна перевірка, виявлення контролю ризику та антибіл laundering (AML) стратегій. Сценарії масштабованості включають інтеграцію зовнішніми API або мікросервісами через Гачки для розширення нових функцій у фінансовій системі, таких як послуги автентифікації особи, конвертація валют, платіжні шлюзи, тощо. Але введенням Гачків у DeFi Uniswap створив прецедент.
Uniswap V4 Hooks - це, в основному, зовнішній контракт, створений та визначений розробниками. Коли створюється ліквідність, ви можете вибрати прив’язати контракт Hook. Після цього ліквідність буде викликати раніше зв'язаний контракт Hook, щоб виконати визначені операції на різних етапах життєвого циклу, забезпечуючи високий рівень налаштувань. Розробники можуть використовувати Hooks Uniswap для зустрічі з більш персоналізованими торговими сценаріями та створення DApps з більш багатофункціональними функціями, такими як:
На даний момент Uniswap V4 підтримує чотири групи зворотніх викликів Hook, кожна група містить пару зворотніх викликів:
Наведена діаграма ілюструє процес обробки beforeSwap/afterSwap Hook, як це представлено в біліотеці. Можна помітити, що перед та після виконання свопу спочатку перевіряється, чи увімкнений відповідний прапорець Hook ліквідності пулу. Якщо він увімкнений, то він викличе відповідні функції контракту Hook.
Ці гачки можуть бути виконані перед початком угоди та після завершення угоди, що дозволяє функціональність, схожу на угоди з лімітними ордерами на ланцюжку. Користувач розміщує лімітний ордер на контракт Гачка, а потім використовує власний або керований оракул в зворотньому виклику afterSwap, щоб визначити, чи ціна відповідає ліміту. Якщо вона відповідає, угода буде виконана. Якщо ні, угода буде скасована.
Uniswap V4 глибоко пов'язує ліквідність з розвитком самої DApp через Hooks. Він підвищує функціональність DApp, а також підвищує мережевий ефект Uniswap, роблячи його базовою інфраструктурою всього екосистеми DeFi.
Команда BlockSec дослідила ризики безпеки механізму Hooks в Uniswap V4. Окрім того, відомо, що сам контракт Hook є зловмисним, доброзичливі контракти Hook також дуже схильні до вразливостей. Команда BlockSec проаналізувала репозиторій Awesome Uniswap v4 Hooks (хеш коміту 3a0a444922f26605ec27a41929f3ced924af6075) та виявила, що понад 30% проектів у репозиторію були вразливі. Ці вразливості в основному виникають внаслідок ризикових взаємодій між Hook, PoolManager та зовнішніми третіми сторонами, і можуть бути головним чином розділені на дві категорії:
Навіть якщо необхідний контроль доступу до чутливих зовнішніх / публічних функцій правильно реалізований, а вхідні параметри перевірені для зменшення ризиків безпеки, пов'язаних з вищезазначеними двома типами гачків, уразливість контракту самого по собі не може бути повністю уникнена, особливо якщо гачок є модифікованим. Якщо контракт реалізований, ви також можете зіткнутися з проблемами, схожими на вразливість UUPSUpgradeable OpenZeppelin.
Причина полягає в тому, що програмування на гачках збільшує складність смарт-контрактів, тим самим збільшуючи площу атаки. Для звичайних смарт-контрактів OpenZeppelin надає серію бібліотек найкращих практик, щоб забезпечити безпеку розроблених на їх основі контрактів. Однак, фундаментально, це додає "обмеження використання безпеки" для розробників. У порівнянні контракти на гачках потребують ще строжших "обмежень використання безпеки" ніж звичайні контракти. Тому, щоб програмування на гачках було широко застосоване, потрібна комплексна структура: це вимагає безпечного середовища виконання, придатних програмних парадигм для гачків і строжких обмежень використання.
Крюки Uniswap V4 реалізовані через смарт-контракти, а їх проблеми з безпекою також виникають через обмеження смарт-контрактів. Чи існує рішення, яке підтримує програмування крюків на рівні протоколу? Artela Aspect дає нам відповідь!
Artela - це високомасштабна та високопродуктивна мережа блокчейну Layer 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 Aspects обмежує взаємні виклики між контрактом Hook як звичайним контрактом та іншими зовнішніми контрактами, вирішуючи непокірну проблему управління доступом та перевірки введення гачків Uniswap V4. Для DeFi контрактів, таких як Uniswap, ви можете насолоджуватися швидшим, потужнішим та безпечнішим досвідом гачків, розгортаючи його на Artela.
Як значущий учасник та лідер у галузі DeFi, Uniswap відіграв важливу роль у просуванні прогресу галузі та покращенні функціональності. Введення Hooks у Uniswap V4 безперечно встановлює напрямок розвитку DEX та з нетерпінням копіюється наступниками.
Однак хуки Uniswap V4 обмежені вродженими обмеженнями смарт-контрактів. Незалежно від того, наскільки міцною є конструкція протоколу та наскільки комплексні набори інструментів, вона не може фундаментально запобігти взаємному виклику між контрактами хуків та зовнішніми контрактами, що створює потенційні вразливості безпеки.
Artela, як високопродуктивна мережа блокчейну 1-го рівня, сумісна з EVM, спеціально розробила Aspect для незалежного запуску в WASM з моменту запуску протоколу, що нативно підтримує програмування Hook. Це значно підвищує безпеку, надаючи передове рішення для DeFi протоколів, які вважають безпеку найважливішою.
Ця стаття спочатку мала назву «Еволюція гачків DeFi: від безпеки контракту Uniswap V4 до власного протоколу Artela» та розміщується з [ Маленька Свиня Web3]. Усі авторські права належать оригінальному автору [web3 Zhu Bold]. Якщо у вас є які-небудь заперечення стосовно репринту, будь ласка, зв'яжіться з Gate Learnкоманда, команда якнайшвидше впорається з цим.
Disclaimer: Погляди та думки, висловлені в цій статті, відображають лише особисті погляди автора і не становлять жодних інвестиційних порад.
Переклади статей на інші мови виконуються командою Gate Learn. Якщо не зазначено інше, копіювання, поширення або плагіатування перекладених статей заборонене.
Хуки або програмування на крючках - це модель програмування, яка дозволяє розробникам вставляти власний код у шлях виконання системи, додатку або бібліотеки за допомогою хуків, які є заздалегідь визначеними функціями або блоками коду. Немає потреби змінювати початковий код. Хуки часто використовуються в багатьох середовищах програмування та фреймворках, таких як операційні системи, фреймворки та бібліотеки, веб-розробка та системи плагінів.
За допомогою хуків розробники можуть збільшити масштабованість та можливість налаштування програми без необхідності модифікувати початковий код під кожну зміну чи розширення вимог, що допомагає підтримувати код чистим та стабільним. Хуки надають елегантний метод реалізації розширення програмного забезпечення та є дуже корисною моделлю програмування в дизайні програмного забезпечення.
Зокрема, AOP (програмування, орієнтоване на аспекти) часто порівнюють з програмуванням на HooK. AOP - це модульна парадигма програмування, яка реалізує перерізні питання і має на меті не змінювати основну бізнес-логіку. Вона поліпшує або модифікує функціональність за необхідності. Я не буду докладно розглядати AOP тут. Ви можете просто уявити AOP як вищий рівень абстракції програмування на HooK.
У червні 2023 року Uniswap оголосив і оприлюднив чернетку білого паперу Uniswap V4. Важливою особливістю Uniswap V4 є введення крюків.
Гачки широко використовуються в фінансових системах Web2, оскільки в таких системах зазвичай потрібен високий рівень настроюваності та масштабованості. Призначені сценарії, такі як обробка транзакцій, використовують Гачки для вставки додаткової логіки перевірки перед та після виконання транзакції, такої як вторинна перевірка, виявлення контролю ризику та антибіл laundering (AML) стратегій. Сценарії масштабованості включають інтеграцію зовнішніми API або мікросервісами через Гачки для розширення нових функцій у фінансовій системі, таких як послуги автентифікації особи, конвертація валют, платіжні шлюзи, тощо. Але введенням Гачків у DeFi Uniswap створив прецедент.
Uniswap V4 Hooks - це, в основному, зовнішній контракт, створений та визначений розробниками. Коли створюється ліквідність, ви можете вибрати прив’язати контракт Hook. Після цього ліквідність буде викликати раніше зв'язаний контракт Hook, щоб виконати визначені операції на різних етапах життєвого циклу, забезпечуючи високий рівень налаштувань. Розробники можуть використовувати Hooks Uniswap для зустрічі з більш персоналізованими торговими сценаріями та створення DApps з більш багатофункціональними функціями, такими як:
На даний момент Uniswap V4 підтримує чотири групи зворотніх викликів Hook, кожна група містить пару зворотніх викликів:
Наведена діаграма ілюструє процес обробки beforeSwap/afterSwap Hook, як це представлено в біліотеці. Можна помітити, що перед та після виконання свопу спочатку перевіряється, чи увімкнений відповідний прапорець Hook ліквідності пулу. Якщо він увімкнений, то він викличе відповідні функції контракту Hook.
Ці гачки можуть бути виконані перед початком угоди та після завершення угоди, що дозволяє функціональність, схожу на угоди з лімітними ордерами на ланцюжку. Користувач розміщує лімітний ордер на контракт Гачка, а потім використовує власний або керований оракул в зворотньому виклику afterSwap, щоб визначити, чи ціна відповідає ліміту. Якщо вона відповідає, угода буде виконана. Якщо ні, угода буде скасована.
Uniswap V4 глибоко пов'язує ліквідність з розвитком самої DApp через Hooks. Він підвищує функціональність DApp, а також підвищує мережевий ефект Uniswap, роблячи його базовою інфраструктурою всього екосистеми DeFi.
Команда BlockSec дослідила ризики безпеки механізму Hooks в Uniswap V4. Окрім того, відомо, що сам контракт Hook є зловмисним, доброзичливі контракти Hook також дуже схильні до вразливостей. Команда BlockSec проаналізувала репозиторій Awesome Uniswap v4 Hooks (хеш коміту 3a0a444922f26605ec27a41929f3ced924af6075) та виявила, що понад 30% проектів у репозиторію були вразливі. Ці вразливості в основному виникають внаслідок ризикових взаємодій між Hook, PoolManager та зовнішніми третіми сторонами, і можуть бути головним чином розділені на дві категорії:
Навіть якщо необхідний контроль доступу до чутливих зовнішніх / публічних функцій правильно реалізований, а вхідні параметри перевірені для зменшення ризиків безпеки, пов'язаних з вищезазначеними двома типами гачків, уразливість контракту самого по собі не може бути повністю уникнена, особливо якщо гачок є модифікованим. Якщо контракт реалізований, ви також можете зіткнутися з проблемами, схожими на вразливість UUPSUpgradeable OpenZeppelin.
Причина полягає в тому, що програмування на гачках збільшує складність смарт-контрактів, тим самим збільшуючи площу атаки. Для звичайних смарт-контрактів OpenZeppelin надає серію бібліотек найкращих практик, щоб забезпечити безпеку розроблених на їх основі контрактів. Однак, фундаментально, це додає "обмеження використання безпеки" для розробників. У порівнянні контракти на гачках потребують ще строжших "обмежень використання безпеки" ніж звичайні контракти. Тому, щоб програмування на гачках було широко застосоване, потрібна комплексна структура: це вимагає безпечного середовища виконання, придатних програмних парадигм для гачків і строжких обмежень використання.
Крюки Uniswap V4 реалізовані через смарт-контракти, а їх проблеми з безпекою також виникають через обмеження смарт-контрактів. Чи існує рішення, яке підтримує програмування крюків на рівні протоколу? Artela Aspect дає нам відповідь!
Artela - це високомасштабна та високопродуктивна мережа блокчейну Layer 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 Aspects обмежує взаємні виклики між контрактом Hook як звичайним контрактом та іншими зовнішніми контрактами, вирішуючи непокірну проблему управління доступом та перевірки введення гачків Uniswap V4. Для DeFi контрактів, таких як Uniswap, ви можете насолоджуватися швидшим, потужнішим та безпечнішим досвідом гачків, розгортаючи його на Artela.
Як значущий учасник та лідер у галузі DeFi, Uniswap відіграв важливу роль у просуванні прогресу галузі та покращенні функціональності. Введення Hooks у Uniswap V4 безперечно встановлює напрямок розвитку DEX та з нетерпінням копіюється наступниками.
Однак хуки Uniswap V4 обмежені вродженими обмеженнями смарт-контрактів. Незалежно від того, наскільки міцною є конструкція протоколу та наскільки комплексні набори інструментів, вона не може фундаментально запобігти взаємному виклику між контрактами хуків та зовнішніми контрактами, що створює потенційні вразливості безпеки.
Artela, як високопродуктивна мережа блокчейну 1-го рівня, сумісна з EVM, спеціально розробила Aspect для незалежного запуску в WASM з моменту запуску протоколу, що нативно підтримує програмування Hook. Це значно підвищує безпеку, надаючи передове рішення для DeFi протоколів, які вважають безпеку найважливішою.
Ця стаття спочатку мала назву «Еволюція гачків DeFi: від безпеки контракту Uniswap V4 до власного протоколу Artela» та розміщується з [ Маленька Свиня Web3]. Усі авторські права належать оригінальному автору [web3 Zhu Bold]. Якщо у вас є які-небудь заперечення стосовно репринту, будь ласка, зв'яжіться з Gate Learnкоманда, команда якнайшвидше впорається з цим.
Disclaimer: Погляди та думки, висловлені в цій статті, відображають лише особисті погляди автора і не становлять жодних інвестиційних порад.
Переклади статей на інші мови виконуються командою Gate Learn. Якщо не зазначено інше, копіювання, поширення або плагіатування перекладених статей заборонене.