Hooks: Потужний інструмент для розширення функціональності додатків
Hooks - це спосіб програмування, який дозволяє розробникам вставляти власний код під час виконання системи. За допомогою попередньо визначених функцій або кодових блоків, розробники можуть розширювати та налаштовувати поведінку програми, не змінюючи вихідний код. Цей підхід широко використовується в операційних системах, фреймворках, бібліотеках, веб-розробці та плагінних системах.
Використання Hooks може значно підвищити масштабованість та гнучкість програми. Розробникам не потрібно вносити значні зміни в існуючий код з кожним коригуванням функцій, що дозволяє зберегти чистоту та стабільність коду. Цей елегантний механізм розширення робить Hooks невід'ємною частиною програмного дизайну.
Варто зазначити, що програмування на основі аспектів (AOP) часто порівнюється з Hook-програмуванням. AOP має на меті модульність крос-функційних аспектів, і його мета також полягає в підвищенні або зміні функціональності без впливу на основну бізнес-логіку. AOP можна розглядати як більш абстрактну форму Hook-програмування.
Uniswap V4: Інновації Hooks
У червні 2023 року Uniswap опублікував чернетку білого паперу V4, серед найпомітніших особливостей якого є впровадження механізму Hooks.
Фактично, Hooks вже широко використовуються в традиційній фінансовій системі, головним чином для задоволення вимог до високої персоналізації та масштабованості. Наприклад, під час обробки транзакцій можна вставляти додаткову логіку перевірки, таку як двоетапна аутентифікація, контроль ризиків і стратегії боротьби з відмиванням грошей. Крім того, Hooks можуть використовуватися для інтеграції зовнішніх API або мікросервісів, розширюючи нові функції, такі як аутентифікація, конвертація валют, платіжні шлюзи тощо. Проте впровадження Hooks у сферу децентралізованих фінансів (DeFi) безумовно стало новаторським кроком для Uniswap.
Hooks в Uniswap V4 по суті є зовнішнім контрактом, який можна прив'язати до створення ліквідного пулу. Потім цей пул буде викликати прив'язаний Hook контракт на різних етапах життєвого циклу для виконання специфічних операцій, що забезпечує високу ступінь кастомізації. Це дозволяє розробникам створювати більш персоналізовані торгові сценарії та функціонально багаті децентралізовані додатки (DApp) на основі Hooks Uniswap.
Uniswap V4 наразі підтримує чотири групи Hook зворотних викликів, кожна з яких містить пару функцій зворотного виклику:
beforeInitialize/afterInitialize: використовується для ініціалізації ліквідного пулу
beforeModifyPosition/afterModifyPosition: використовується для додавання, зменшення або видалення ліквідності
beforeSwap/afterSwap: використовується для обміну токенів
beforeDonate/afterDonate: використовується для функції донатів (нововведення Uniswap V4, що надає винагороди постачальникам ліквідності, які знаходяться в межах діапазону торгівлі)
Ці Hooks можуть виконуватись до початку та після завершення угоди, реалізуючи такі розширені функції, як лімітні ордери на блокчейні. Користувачі можуть налаштувати лімітні ордери на контракті Hook, а потім у зворотному виклику afterSwap визначити, чи відповідає ціна умовам, на основі користувацького або керованого оракула, щоб вирішити, виконати чи скасувати угоду.
Завдяки Hooks, Uniswap V4 тісно пов'язує ліквідність з розвитком DApp, що не лише покращує функціональність DApp, а й посилює мережевий ефект Uniswap, роблячи його основною інфраструктурою екосистеми DeFi.
Виклики безпеки хуків Uniswap V4
Одна з команд з безпеки провела глибокий аналіз потенційних ризиків безпеки механізму Hooks у Uniswap V4. Окрім ризиків, пов'язаних з самими шкідливими Hook-контрактами, навіть доброзичливі Hook-контракти можуть мати вразливості. Аналіз показав, що понад 30% проєктів мають ризики безпеки. Ці вразливості, в основному, виникають через складні взаємодії між Hook, PoolManager та зовнішніми третіми сторонами, і їх можна розділити на дві великі категорії:
Проблеми контролю доступу: Основна увага приділяється функціям зворотного виклику в Uniswap V4, які повинні дозволяти виклик лише PoolManager, а не можуть бути викликані іншими адресами (включаючи зовнішні рахунки та контракти). Наприклад, у сценарії розподілу винагород, якщо відповідні функції можуть бути викликані будь-яким рахунком, винагорода може бути помилково отримана. Тому для Hook надзвичайно важливо встановити потужний механізм контролю доступу, особливо коли їх можуть викликати інші сторони, окрім пулу.
Проблеми з перевіркою введення: через неналежну перевірку введення в деяких вразливих реалізаціях Hook можуть виникнути різні типи атак, включаючи атаки повторного входу. Найбільш поширеним випадком є виклик ненадійних зовнішніх контрактів у критичних функціях Hook. Зловмисники можуть зареєструвати злочинні пули коштів для фальшивих токенів, а потім активувати Hook для виконання операцій у пулі коштів. Під час взаємодії з пулом коштів зловмисна логіка токенів може захопити контроль за потоком, що призводить до неналежної поведінки.
Навіть якщо були впроваджені необхідні контролі доступу для чутливих зовнішніх/публічних функцій та перевірені параметри введення, що знижує вищезазначені два типи ризиків безпеки, пов’язаних із Hook, самі вразливості контракту все ще не можуть бути повністю уникнені. Особливо коли Hook реалізується як контракт, що підлягає оновленню, можуть виникнути проблеми, пов’язані з вразливостями контрактів, що підлягають оновленню, подібними до відомої бібліотеки смарт-контрактів.
Корінні причини цих проблем безпеки полягають у тому, що програмування Hook збільшує складність смарт-контрактів, тим самим розширюючи площу для атак. Хоча деякі бібліотеки смарт-контрактів пропонують найкращі практики, по суті, це все ще додає "обмеження безпечного використання" для розробників. У порівнянні з звичайними контрактами, контракти Hook вимагають більш суворих норм безпечного використання. Тому, щоб програмування Hook широко застосовувалося, потрібна комплексна структура, яка включає безпечне середовище виконання, програмні парадигми, що підходять для Hook, і ще більш суворі обмеження використання.
Нативний протокол певної блокчейн-платформи: підтримка програмування Hook на рівні протоколу
Оскільки Hooks Uniswap V4 реалізовані через смарт-контракти, проблеми безпеки також виникають з властивих обмежень смарт-контрактів. Чи існує рішення, яке підтримує програмування Hook з протоколу? Рідна механіка розширення певної блокчейн-платформи надає нам відповідь.
Ця платформа є високорозширювальною, високопродуктивною мережею блокчейну рівня 1, сумісною з EVM, спеціально розробленою для розробників, що пропонує модульні, функціонально багаті, розширювальні та налаштовувані програми. Платформа вводить новий тип програмованого модуля, відомого як нативний розширювальний модуль, який інноваційно впроваджує аспектно-орієнтоване програмування (AOP) у мережу блокчейну.
Цей рідний розширення потребує вказівки точки з'єднання, тобто місця виконання протягом усього життєвого циклу обробки транзакцій, подібно до зворотного виклику Hook. Точки з'єднання включають:
Ініціалізація блоку
Підтвердження транзакцій
Перед виконанням
Після виконання
Остаточне підтвердження блоку
На даний момент це рідне розширення підтримує лише TypeScript, його код компілюється в WebAssembly (WASM) байт-код та розгортається в мережі. Після завершення розгортання, власник смарт-контракту може зв’язати контракт з рідним розширенням. Власник смарт-контракту – це рахунок, адреса якого зовнішнього рахунку (EOA) може перевірити через смарт-контракт isOwner(address) returns (bool).
Нативне розширення цієї платформи реалізується як хуки на рівні протоколу, що має суттєві переваги в порівнянні з хуками Uniswap V4:
По-перше, нативний розширення використовує WASM для виконання свого коду, ефективність виконання якого в кілька разів вища, ніж у EVM.
По-друге, нативне розширення може підключити все життя угоди, а не лише основну логіку DeFi, що дозволяє створювати більш функціональні децентралізовані додатки.
Нарешті, і це найважливіший момент, корінні розширення працюють незалежно в безпечному середовищі пісочниці, і ця ізоляція забезпечує, що виконання розширень не вплине на безпеку виконання контракту.
Обмеження ізоляції рідних розширень обмежує взаємні виклики між контрактом Hook як звичайним контрактом та іншими зовнішніми контрактами, ефективно вирішуючи проблеми контролю доступу та валідації введення в Uniswap V4 Hooks. Для DeFi контрактів, подібних до Uniswap, розгортання на цій платформі дозволяє насолоджуватися швидшим, потужнішим та безпечнішим досвідом Hook.
Підсумок
Як важливий учасник і лідер у сфері децентралізованих фінансів, Uniswap відіграє ключову роль у просуванні прогресу галузі та вдосконаленні функцій. Hooks, введені в Uniswap V4, безсумнівно, визначать напрямок розвитку децентралізованих бірж, ставши об'єктом наслідування для новачків.
Однак, Uniswap V4 Hooks обмежені самими обмеженнями смарт-контрактів, незалежно від того, наскільки ретельно спроектований протокол або наскільки досконала бібліотека інструментів, вони не можуть в принципі запобігти взаємному виклику Hook контрактів та інших зовнішніх контрактів, що створює потенційні ризики безпеки.
Деяка високо продуктивна EVM-сумісна Layer 1 блокчейн-мережа з моменту розробки протоколу враховувала незалежний механізм розширення, що працює в WASM, забезпечуючи нативну підтримку для програмування Hooks, що суттєво підвищує безпеку. Це надає прогресивне рішення для децентралізованих фінансових протоколів, які вважають безпеку своїм життєвим ланцюгом.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
15 лайків
Нагородити
15
3
Поділіться
Прокоментувати
0/400
GateUser-cff9c776
· 18год тому
Гачок Шредінгера, повісивши його, не знаєш, чи буде зростання, чи падіння
Переглянути оригіналвідповісти на0
FUD_Whisperer
· 07-12 23:42
hooks бик а, інтерактивна ефективність памп на максимум
Uniswap V4 Hooks та рідні розширення: нова глава безпеки та інновацій у Децентралізованих фінансах
Hooks: Потужний інструмент для розширення функціональності додатків
Hooks - це спосіб програмування, який дозволяє розробникам вставляти власний код під час виконання системи. За допомогою попередньо визначених функцій або кодових блоків, розробники можуть розширювати та налаштовувати поведінку програми, не змінюючи вихідний код. Цей підхід широко використовується в операційних системах, фреймворках, бібліотеках, веб-розробці та плагінних системах.
Використання Hooks може значно підвищити масштабованість та гнучкість програми. Розробникам не потрібно вносити значні зміни в існуючий код з кожним коригуванням функцій, що дозволяє зберегти чистоту та стабільність коду. Цей елегантний механізм розширення робить Hooks невід'ємною частиною програмного дизайну.
Варто зазначити, що програмування на основі аспектів (AOP) часто порівнюється з Hook-програмуванням. AOP має на меті модульність крос-функційних аспектів, і його мета також полягає в підвищенні або зміні функціональності без впливу на основну бізнес-логіку. AOP можна розглядати як більш абстрактну форму Hook-програмування.
Uniswap V4: Інновації Hooks
У червні 2023 року Uniswap опублікував чернетку білого паперу V4, серед найпомітніших особливостей якого є впровадження механізму Hooks.
Фактично, Hooks вже широко використовуються в традиційній фінансовій системі, головним чином для задоволення вимог до високої персоналізації та масштабованості. Наприклад, під час обробки транзакцій можна вставляти додаткову логіку перевірки, таку як двоетапна аутентифікація, контроль ризиків і стратегії боротьби з відмиванням грошей. Крім того, Hooks можуть використовуватися для інтеграції зовнішніх API або мікросервісів, розширюючи нові функції, такі як аутентифікація, конвертація валют, платіжні шлюзи тощо. Проте впровадження Hooks у сферу децентралізованих фінансів (DeFi) безумовно стало новаторським кроком для Uniswap.
Hooks в Uniswap V4 по суті є зовнішнім контрактом, який можна прив'язати до створення ліквідного пулу. Потім цей пул буде викликати прив'язаний Hook контракт на різних етапах життєвого циклу для виконання специфічних операцій, що забезпечує високу ступінь кастомізації. Це дозволяє розробникам створювати більш персоналізовані торгові сценарії та функціонально багаті децентралізовані додатки (DApp) на основі Hooks Uniswap.
Uniswap V4 наразі підтримує чотири групи Hook зворотних викликів, кожна з яких містить пару функцій зворотного виклику:
Ці Hooks можуть виконуватись до початку та після завершення угоди, реалізуючи такі розширені функції, як лімітні ордери на блокчейні. Користувачі можуть налаштувати лімітні ордери на контракті Hook, а потім у зворотному виклику afterSwap визначити, чи відповідає ціна умовам, на основі користувацького або керованого оракула, щоб вирішити, виконати чи скасувати угоду.
Завдяки Hooks, Uniswap V4 тісно пов'язує ліквідність з розвитком DApp, що не лише покращує функціональність DApp, а й посилює мережевий ефект Uniswap, роблячи його основною інфраструктурою екосистеми DeFi.
Виклики безпеки хуків Uniswap V4
Одна з команд з безпеки провела глибокий аналіз потенційних ризиків безпеки механізму Hooks у Uniswap V4. Окрім ризиків, пов'язаних з самими шкідливими Hook-контрактами, навіть доброзичливі Hook-контракти можуть мати вразливості. Аналіз показав, що понад 30% проєктів мають ризики безпеки. Ці вразливості, в основному, виникають через складні взаємодії між Hook, PoolManager та зовнішніми третіми сторонами, і їх можна розділити на дві великі категорії:
Проблеми контролю доступу: Основна увага приділяється функціям зворотного виклику в Uniswap V4, які повинні дозволяти виклик лише PoolManager, а не можуть бути викликані іншими адресами (включаючи зовнішні рахунки та контракти). Наприклад, у сценарії розподілу винагород, якщо відповідні функції можуть бути викликані будь-яким рахунком, винагорода може бути помилково отримана. Тому для Hook надзвичайно важливо встановити потужний механізм контролю доступу, особливо коли їх можуть викликати інші сторони, окрім пулу.
Проблеми з перевіркою введення: через неналежну перевірку введення в деяких вразливих реалізаціях Hook можуть виникнути різні типи атак, включаючи атаки повторного входу. Найбільш поширеним випадком є виклик ненадійних зовнішніх контрактів у критичних функціях Hook. Зловмисники можуть зареєструвати злочинні пули коштів для фальшивих токенів, а потім активувати Hook для виконання операцій у пулі коштів. Під час взаємодії з пулом коштів зловмисна логіка токенів може захопити контроль за потоком, що призводить до неналежної поведінки.
Навіть якщо були впроваджені необхідні контролі доступу для чутливих зовнішніх/публічних функцій та перевірені параметри введення, що знижує вищезазначені два типи ризиків безпеки, пов’язаних із Hook, самі вразливості контракту все ще не можуть бути повністю уникнені. Особливо коли Hook реалізується як контракт, що підлягає оновленню, можуть виникнути проблеми, пов’язані з вразливостями контрактів, що підлягають оновленню, подібними до відомої бібліотеки смарт-контрактів.
Корінні причини цих проблем безпеки полягають у тому, що програмування Hook збільшує складність смарт-контрактів, тим самим розширюючи площу для атак. Хоча деякі бібліотеки смарт-контрактів пропонують найкращі практики, по суті, це все ще додає "обмеження безпечного використання" для розробників. У порівнянні з звичайними контрактами, контракти Hook вимагають більш суворих норм безпечного використання. Тому, щоб програмування Hook широко застосовувалося, потрібна комплексна структура, яка включає безпечне середовище виконання, програмні парадигми, що підходять для Hook, і ще більш суворі обмеження використання.
Нативний протокол певної блокчейн-платформи: підтримка програмування Hook на рівні протоколу
Оскільки Hooks Uniswap V4 реалізовані через смарт-контракти, проблеми безпеки також виникають з властивих обмежень смарт-контрактів. Чи існує рішення, яке підтримує програмування Hook з протоколу? Рідна механіка розширення певної блокчейн-платформи надає нам відповідь.
Ця платформа є високорозширювальною, високопродуктивною мережею блокчейну рівня 1, сумісною з EVM, спеціально розробленою для розробників, що пропонує модульні, функціонально багаті, розширювальні та налаштовувані програми. Платформа вводить новий тип програмованого модуля, відомого як нативний розширювальний модуль, який інноваційно впроваджує аспектно-орієнтоване програмування (AOP) у мережу блокчейну.
Цей рідний розширення потребує вказівки точки з'єднання, тобто місця виконання протягом усього життєвого циклу обробки транзакцій, подібно до зворотного виклику Hook. Точки з'єднання включають:
На даний момент це рідне розширення підтримує лише TypeScript, його код компілюється в WebAssembly (WASM) байт-код та розгортається в мережі. Після завершення розгортання, власник смарт-контракту може зв’язати контракт з рідним розширенням. Власник смарт-контракту – це рахунок, адреса якого зовнішнього рахунку (EOA) може перевірити через смарт-контракт isOwner(address) returns (bool).
Нативне розширення цієї платформи реалізується як хуки на рівні протоколу, що має суттєві переваги в порівнянні з хуками Uniswap V4:
По-перше, нативний розширення використовує WASM для виконання свого коду, ефективність виконання якого в кілька разів вища, ніж у EVM.
По-друге, нативне розширення може підключити все життя угоди, а не лише основну логіку DeFi, що дозволяє створювати більш функціональні децентралізовані додатки.
Нарешті, і це найважливіший момент, корінні розширення працюють незалежно в безпечному середовищі пісочниці, і ця ізоляція забезпечує, що виконання розширень не вплине на безпеку виконання контракту.
Обмеження ізоляції рідних розширень обмежує взаємні виклики між контрактом Hook як звичайним контрактом та іншими зовнішніми контрактами, ефективно вирішуючи проблеми контролю доступу та валідації введення в Uniswap V4 Hooks. Для DeFi контрактів, подібних до Uniswap, розгортання на цій платформі дозволяє насолоджуватися швидшим, потужнішим та безпечнішим досвідом Hook.
Підсумок
Як важливий учасник і лідер у сфері децентралізованих фінансів, Uniswap відіграє ключову роль у просуванні прогресу галузі та вдосконаленні функцій. Hooks, введені в Uniswap V4, безсумнівно, визначать напрямок розвитку децентралізованих бірж, ставши об'єктом наслідування для новачків.
Однак, Uniswap V4 Hooks обмежені самими обмеженнями смарт-контрактів, незалежно від того, наскільки ретельно спроектований протокол або наскільки досконала бібліотека інструментів, вони не можуть в принципі запобігти взаємному виклику Hook контрактів та інших зовнішніх контрактів, що створює потенційні ризики безпеки.
Деяка високо продуктивна EVM-сумісна Layer 1 блокчейн-мережа з моменту розробки протоколу враховувала незалежний механізм розширення, що працює в WASM, забезпечуючи нативну підтримку для програмування Hooks, що суттєво підвищує безпеку. Це надає прогресивне рішення для децентралізованих фінансових протоколів, які вважають безпеку своїм життєвим ланцюгом.