Еволюція DeFi Hooks: від безпеки контракту Uniswap V4 до власного протоколу Artela

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

Що таке Гачки

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

За допомогою хуків розробники можуть збільшити масштабованість та можливість налаштування програми без необхідності модифікувати початковий код під кожну зміну чи розширення вимог, що допомагає підтримувати код чистим та стабільним. Хуки надають елегантний метод реалізації розширення програмного забезпечення та є дуже корисною моделлю програмування в дизайні програмного забезпечення.

Зокрема, AOP (програмування, орієнтоване на аспекти) часто порівнюють з програмуванням на HooK. AOP - це модульна парадигма програмування, яка реалізує перерізні питання і має на меті не змінювати основну бізнес-логіку. Вона поліпшує або модифікує функціональність за необхідності. Я не буду докладно розглядати AOP тут. Ви можете просто уявити AOP як вищий рівень абстракції програмування на HooK.

Uniswap V4: Хуки Революція

У червні 2023 року Uniswap оголосив і оприлюднив чернетку білого паперу Uniswap V4. Важливою особливістю Uniswap V4 є введення крюків.

Гачки широко використовуються в фінансових системах Web2, оскільки в таких системах зазвичай потрібен високий рівень настроюваності та масштабованості. Призначені сценарії, такі як обробка транзакцій, використовують Гачки для вставки додаткової логіки перевірки перед та після виконання транзакції, такої як вторинна перевірка, виявлення контролю ризику та антибіл laundering (AML) стратегій. Сценарії масштабованості включають інтеграцію зовнішніми API або мікросервісами через Гачки для розширення нових функцій у фінансовій системі, таких як послуги автентифікації особи, конвертація валют, платіжні шлюзи, тощо. Але введенням Гачків у DeFi Uniswap створив прецедент.

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

  • Динамічні комісії: За допомогою Hooks, ліквідні пули можуть динамічно налаштовувати комісії в залежності від волатильності ринку або інших вхідних параметрів, щоб краще адаптуватися до ринкових умов;
  • Лімітні замовлення на ланцюгу: Хуки можуть створювати та виконувати лімітні замовлення на ланцюгу, дозволяючи користувачам торгувати за вказаними цінами;
  • Часово-зважений середній ринковий мейкер (TWAMM): Використовує механізм Hooks для створення ліквідності, що підтримує стратегію TWAMM для рівномірного розподілу транзакцій великих замовлень протягом певного часу.

На даний момент Uniswap V4 підтримує чотири групи зворотніх викликів Hook, кожна група містить пару зворотніх викликів:

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

Наведена діаграма ілюструє процес обробки beforeSwap/afterSwap Hook, як це представлено в біліотеці. Можна помітити, що перед та після виконання свопу спочатку перевіряється, чи увімкнений відповідний прапорець Hook ліквідності пулу. Якщо він увімкнений, то він викличе відповідні функції контракту Hook.

Ці гачки можуть бути виконані перед початком угоди та після завершення угоди, що дозволяє функціональність, схожу на угоди з лімітними ордерами на ланцюжку. Користувач розміщує лімітний ордер на контракт Гачка, а потім використовує власний або керований оракул в зворотньому виклику afterSwap, щоб визначити, чи ціна відповідає ліміту. Якщо вона відповідає, угода буде виконана. Якщо ні, угода буде скасована.

Uniswap V4 глибоко пов'язує ліквідність з розвитком самої DApp через Hooks. Він підвищує функціональність DApp, а також підвищує мережевий ефект Uniswap, роблячи його базовою інфраструктурою всього екосистеми DeFi.

Проблеми безпеки гачків Uniswap V4

Команда BlockSec дослідила ризики безпеки механізму Hooks в Uniswap V4. Окрім того, відомо, що сам контракт Hook є зловмисним, доброзичливі контракти Hook також дуже схильні до вразливостей. Команда BlockSec проаналізувала репозиторій Awesome Uniswap v4 Hooks (хеш коміту 3a0a444922f26605ec27a41929f3ced924af6075) та виявила, що понад 30% проектів у репозиторію були вразливі. Ці вразливості в основному виникають внаслідок ризикових взаємодій між Hook, PoolManager та зовнішніми третіми сторонами, і можуть бути головним чином розділені на дві категорії:

  • Проблеми контролю доступу: Основна проблема - це функції зворотного виклику в Uniswap V4. Ці функції повинні бути викликані лише PoolManager та не можуть бути викликані іншими адресами (включаючи EOA та контракти). Наприклад, у випадку, коли винагороди розподіляються за допомогою ключів пулу, винагороди можуть бути вимагані неправильно, якщо відповідну функцію може викликати будь-який обліковий запис. Тому, хуки повинні встановлювати надійні механізми контролю доступу, особливо оскільки їх можуть викликати інші сторони, крім самого пулу;
  • Введіть контрольне питання: Різні типи атак, включаючи відомі атаки повторного входження, виникають через неправильну перевірку введення в деяких вразливих реалізаціях гачків. Найбільш поширеною ситуацією є те, що ненадійні зовнішні контракти викликаються в деяких ключових функціях гачків. Для того, щоб атакувати ці вразливі гачки, атакувальник може зареєструвати зловмисний фонд для своїх власних фальшивих токенів, а потім викликати гачк для використання коштів. Фонд виконує операції. При взаємодії з фондом зловмисна токен логіка захоплює потік керування для здійснення небажаної поведінки.

Навіть якщо необхідний контроль доступу до чутливих зовнішніх / публічних функцій правильно реалізований, а вхідні параметри перевірені для зменшення ризиків безпеки, пов'язаних з вищезазначеними двома типами гачків, уразливість контракту самого по собі не може бути повністю уникнена, особливо якщо гачок є модифікованим. Якщо контракт реалізований, ви також можете зіткнутися з проблемами, схожими на вразливість UUPSUpgradeable OpenZeppelin.

Причина полягає в тому, що програмування на гачках збільшує складність смарт-контрактів, тим самим збільшуючи площу атаки. Для звичайних смарт-контрактів OpenZeppelin надає серію бібліотек найкращих практик, щоб забезпечити безпеку розроблених на їх основі контрактів. Однак, фундаментально, це додає "обмеження використання безпеки" для розробників. У порівнянні контракти на гачках потребують ще строжших "обмежень використання безпеки" ніж звичайні контракти. Тому, щоб програмування на гачках було широко застосоване, потрібна комплексна структура: це вимагає безпечного середовища виконання, придатних програмних парадигм для гачків і строжких обмежень використання.

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

Крюки 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 протоколів, які вважають безпеку найважливішою.

Заява:

  1. Ця стаття спочатку мала назву «Еволюція гачків DeFi: від безпеки контракту Uniswap V4 до власного протоколу Artela» та розміщується з [ Маленька Свиня Web3]. Усі авторські права належать оригінальному автору [web3 Zhu Bold]. Якщо у вас є які-небудь заперечення стосовно репринту, будь ласка, зв'яжіться з Gate Learnкоманда, команда якнайшвидше впорається з цим.

  2. Disclaimer: Погляди та думки, висловлені в цій статті, відображають лише особисті погляди автора і не становлять жодних інвестиційних порад.

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

Еволюція DeFi Hooks: від безпеки контракту Uniswap V4 до власного протоколу Artela

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

Що таке Гачки

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

За допомогою хуків розробники можуть збільшити масштабованість та можливість налаштування програми без необхідності модифікувати початковий код під кожну зміну чи розширення вимог, що допомагає підтримувати код чистим та стабільним. Хуки надають елегантний метод реалізації розширення програмного забезпечення та є дуже корисною моделлю програмування в дизайні програмного забезпечення.

Зокрема, AOP (програмування, орієнтоване на аспекти) часто порівнюють з програмуванням на HooK. AOP - це модульна парадигма програмування, яка реалізує перерізні питання і має на меті не змінювати основну бізнес-логіку. Вона поліпшує або модифікує функціональність за необхідності. Я не буду докладно розглядати AOP тут. Ви можете просто уявити AOP як вищий рівень абстракції програмування на HooK.

Uniswap V4: Хуки Революція

У червні 2023 року Uniswap оголосив і оприлюднив чернетку білого паперу Uniswap V4. Важливою особливістю Uniswap V4 є введення крюків.

Гачки широко використовуються в фінансових системах Web2, оскільки в таких системах зазвичай потрібен високий рівень настроюваності та масштабованості. Призначені сценарії, такі як обробка транзакцій, використовують Гачки для вставки додаткової логіки перевірки перед та після виконання транзакції, такої як вторинна перевірка, виявлення контролю ризику та антибіл laundering (AML) стратегій. Сценарії масштабованості включають інтеграцію зовнішніми API або мікросервісами через Гачки для розширення нових функцій у фінансовій системі, таких як послуги автентифікації особи, конвертація валют, платіжні шлюзи, тощо. Але введенням Гачків у DeFi Uniswap створив прецедент.

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

  • Динамічні комісії: За допомогою Hooks, ліквідні пули можуть динамічно налаштовувати комісії в залежності від волатильності ринку або інших вхідних параметрів, щоб краще адаптуватися до ринкових умов;
  • Лімітні замовлення на ланцюгу: Хуки можуть створювати та виконувати лімітні замовлення на ланцюгу, дозволяючи користувачам торгувати за вказаними цінами;
  • Часово-зважений середній ринковий мейкер (TWAMM): Використовує механізм Hooks для створення ліквідності, що підтримує стратегію TWAMM для рівномірного розподілу транзакцій великих замовлень протягом певного часу.

На даний момент Uniswap V4 підтримує чотири групи зворотніх викликів Hook, кожна група містить пару зворотніх викликів:

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

Наведена діаграма ілюструє процес обробки beforeSwap/afterSwap Hook, як це представлено в біліотеці. Можна помітити, що перед та після виконання свопу спочатку перевіряється, чи увімкнений відповідний прапорець Hook ліквідності пулу. Якщо він увімкнений, то він викличе відповідні функції контракту Hook.

Ці гачки можуть бути виконані перед початком угоди та після завершення угоди, що дозволяє функціональність, схожу на угоди з лімітними ордерами на ланцюжку. Користувач розміщує лімітний ордер на контракт Гачка, а потім використовує власний або керований оракул в зворотньому виклику afterSwap, щоб визначити, чи ціна відповідає ліміту. Якщо вона відповідає, угода буде виконана. Якщо ні, угода буде скасована.

Uniswap V4 глибоко пов'язує ліквідність з розвитком самої DApp через Hooks. Він підвищує функціональність DApp, а також підвищує мережевий ефект Uniswap, роблячи його базовою інфраструктурою всього екосистеми DeFi.

Проблеми безпеки гачків Uniswap V4

Команда BlockSec дослідила ризики безпеки механізму Hooks в Uniswap V4. Окрім того, відомо, що сам контракт Hook є зловмисним, доброзичливі контракти Hook також дуже схильні до вразливостей. Команда BlockSec проаналізувала репозиторій Awesome Uniswap v4 Hooks (хеш коміту 3a0a444922f26605ec27a41929f3ced924af6075) та виявила, що понад 30% проектів у репозиторію були вразливі. Ці вразливості в основному виникають внаслідок ризикових взаємодій між Hook, PoolManager та зовнішніми третіми сторонами, і можуть бути головним чином розділені на дві категорії:

  • Проблеми контролю доступу: Основна проблема - це функції зворотного виклику в Uniswap V4. Ці функції повинні бути викликані лише PoolManager та не можуть бути викликані іншими адресами (включаючи EOA та контракти). Наприклад, у випадку, коли винагороди розподіляються за допомогою ключів пулу, винагороди можуть бути вимагані неправильно, якщо відповідну функцію може викликати будь-який обліковий запис. Тому, хуки повинні встановлювати надійні механізми контролю доступу, особливо оскільки їх можуть викликати інші сторони, крім самого пулу;
  • Введіть контрольне питання: Різні типи атак, включаючи відомі атаки повторного входження, виникають через неправильну перевірку введення в деяких вразливих реалізаціях гачків. Найбільш поширеною ситуацією є те, що ненадійні зовнішні контракти викликаються в деяких ключових функціях гачків. Для того, щоб атакувати ці вразливі гачки, атакувальник може зареєструвати зловмисний фонд для своїх власних фальшивих токенів, а потім викликати гачк для використання коштів. Фонд виконує операції. При взаємодії з фондом зловмисна токен логіка захоплює потік керування для здійснення небажаної поведінки.

Навіть якщо необхідний контроль доступу до чутливих зовнішніх / публічних функцій правильно реалізований, а вхідні параметри перевірені для зменшення ризиків безпеки, пов'язаних з вищезазначеними двома типами гачків, уразливість контракту самого по собі не може бути повністю уникнена, особливо якщо гачок є модифікованим. Якщо контракт реалізований, ви також можете зіткнутися з проблемами, схожими на вразливість UUPSUpgradeable OpenZeppelin.

Причина полягає в тому, що програмування на гачках збільшує складність смарт-контрактів, тим самим збільшуючи площу атаки. Для звичайних смарт-контрактів OpenZeppelin надає серію бібліотек найкращих практик, щоб забезпечити безпеку розроблених на їх основі контрактів. Однак, фундаментально, це додає "обмеження використання безпеки" для розробників. У порівнянні контракти на гачках потребують ще строжших "обмежень використання безпеки" ніж звичайні контракти. Тому, щоб програмування на гачках було широко застосоване, потрібна комплексна структура: це вимагає безпечного середовища виконання, придатних програмних парадигм для гачків і строжких обмежень використання.

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

Крюки 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 протоколів, які вважають безпеку найважливішою.

Заява:

  1. Ця стаття спочатку мала назву «Еволюція гачків DeFi: від безпеки контракту Uniswap V4 до власного протоколу Artela» та розміщується з [ Маленька Свиня Web3]. Усі авторські права належать оригінальному автору [web3 Zhu Bold]. Якщо у вас є які-небудь заперечення стосовно репринту, будь ласка, зв'яжіться з Gate Learnкоманда, команда якнайшвидше впорається з цим.

  2. Disclaimer: Погляди та думки, висловлені в цій статті, відображають лише особисті погляди автора і не становлять жодних інвестиційних порад.

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

即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!