Hooks, o Programación de Gancho, es un modelo de programación que permite a los desarrolladores insertar código personalizado en la ruta de ejecución de un sistema, aplicación o biblioteca a través de Hooks, que son funciones predefinidas o bloques de código. No es necesario modificar el código original. Los Hooks se utilizan frecuentemente en muchos entornos y marcos de programación, como sistemas operativos, marcos y bibliotecas, desarrollo web y sistemas de plug-in.
Al usar Hooks, los desarrolladores pueden aumentar la escalabilidad y la personalización del programa sin tener que modificar el código original para cada cambio o requisito de expansión, lo que ayuda a mantener el código limpio y estable. Los Hooks proporcionan un método de implementación elegante para la extensión de software y son un modelo de programación muy útil en el diseño de software.
En particular, AOP (Programación Orientada a Aspectos) se compara a menudo con la programación Hook. AOP es un paradigma de programación modular que implementa preocupaciones transversales, y el objetivo no es cambiar la lógica principal del negocio. Mejora o modifica la funcionalidad si es necesario. No me extenderé en detalles sobre AOP aquí. Simplemente puedes pensar en AOP como una abstracción de nivel superior de la programación Hook.
En junio de 2023, Uniswap anunció y hizo público una versión preliminar del libro blanco de Uniswap V4. Una característica importante de Uniswap V4 es la introducción de Hooks.
Los Hooks se han utilizado ampliamente en los sistemas financieros Web2, porque estos sistemas generalmente requieren un alto grado de personalización y escalabilidad. Escenarios personalizados, como cuando se procesan transacciones, utilizan Hooks para insertar lógica de verificación adicional antes y después de la ejecución de la transacción, como verificación secundaria, detección de control de riesgos y estrategias contra el lavado de dinero (AML). Los escenarios de escalabilidad incluyen la integración con APIs externas o microservicios a través de Hooks para expandir nuevas funciones en el sistema financiero, como servicios de autenticación de identidad, conversión de tipos de cambio, pasarelas de pago, etc. Pero al introducir Hooks en DeFi, Uniswap ha sentado un precedente.
Uniswap V4 Hooks es esencialmente un contrato externo creado y definido por desarrolladores. Cuando se crea una piscina de liquidez, puedes optar por vincular un contrato Hook. Después, la piscina de liquidez llamará al contrato Hook previamente vinculado para realizar operaciones especificadas en diferentes etapas del ciclo de vida, proporcionando un alto grado de personalización. Los desarrolladores pueden utilizar los Hooks de Uniswap para cumplir con escenarios de trading más personalizados y construir DApps con funciones más ricas, como:
Actualmente, Uniswap V4 admite cuatro grupos de devoluciones de llamada de Hook, cada grupo contiene un par de devoluciones de llamada:
El siguiente diagrama ilustra el proceso de gancho antes/después del intercambio como se presenta en el libro blanco. Se puede observar que antes y después de ejecutar el intercambio, primero verifica si está habilitada la bandera correspondiente del gancho de la piscina de liquidez. Si está habilitado, entonces llamará a las funciones correspondientes del contrato de gancho.
Estos Hooks pueden ejecutarse antes de que comience un intercambio y después de que termine, lo que permite funcionalidades similares a las órdenes límite en cadena. El usuario coloca una orden límite en el contrato Hook, y luego utiliza un oráculo personalizado o gestionado en la devolución de llamada afterSwap para determinar si el precio cumple con la orden límite. Si lo hace, la transacción se ejecutará. Si no lo hace, la transacción se cancelará.
Uniswap V4 une profundamente la liquidez al desarrollo de la propia DApp a través de Hooks. Mejora las funciones de DApp y también potencia el efecto de red de Uniswap, convirtiéndolo en la infraestructura subyacente de todo el ecosistema DeFi.
El equipo de BlockSec ha explorado los riesgos de seguridad del mecanismo de Hooks en Uniswap V4. Además del hecho de que el contrato de Hook en sí es malicioso, los contratos de Hook benignos también son extremadamente propensos a vulnerabilidades. El equipo de BlockSec analizó el repositorio Awesome Uniswap v4 Hooks (hash de commit 3a0a444922f26605ec27a41929f3ced924af6075) y encontró que más del 30% de los proyectos en el repositorio eran vulnerables. Estas vulnerabilidades se originan principalmente de las interacciones de riesgo entre Hook, PoolManager y terceros externos, y se pueden dividir principalmente en dos categorías:
Incluso si se implementa un control de acceso necesario a funciones externas/públicas sensibles y se verifican los parámetros de entrada para reducir los riesgos de seguridad relacionados con los dos tipos de Hooks mencionados anteriormente, la vulnerabilidad del contrato en sí misma no puede evitarse por completo, especialmente si el Hook es actualizable. Si se implementa el contrato, también podría encontrarse con problemas similares relacionados con la vulnerabilidad UUPSUpgradeable de OpenZeppelin.
La razón radica en el hecho de que la programación Hook aumenta la complejidad de los contratos inteligentes, ampliando así la superficie de ataque. Para los contratos inteligentes regulares, OpenZeppelin proporciona una serie de bibliotecas de mejores prácticas para garantizar que los contratos desarrollados en base a él sean seguros. Sin embargo, fundamentalmente, añade "restricciones de uso de seguridad" para los desarrolladores. En comparación, los contratos Hook requieren incluso restricciones de uso de seguridad más estrictas que los contratos regulares. Por lo tanto, para que la programación Hook se aplique ampliamente, se necesita un marco integral: requiere un entorno de ejecución seguro, paradigmas de programación aplicables para Hooks y restricciones de uso más estrictas.
Los Hooks de Uniswap V4 se implementan a través de contratos inteligentes, y sus problemas de seguridad también son causados por las limitaciones de los contratos inteligentes. ¿Existe una solución que admita la programación de Hooks desde el nivel del protocolo? ¡Artela Aspect nos da la respuesta!
Artela es una red blockchain de capa 1 altamente escalable y de alto rendimiento compatible con EVM, diseñada para que los desarrolladores construyan aplicaciones modulares, ricas en funciones, escalables y personalizables. Artela define un nuevo módulo programable como una extensión nativa llamada Aspect, que introduce de forma innovadora el AOP en la red blockchain. Aspecto necesita especificar un punto de conexión, es decir, el lugar donde se ejecuta Aspecto en todo el ciclo de vida del procesamiento de transacciones. Similar al callback de Hook, los puntos de conexión incluyen:
Aspect actualmente solo admite TypeScript, y su código se compila en bytecode de WebAssembly (WASM) y se implementa en la red de Artela. Después de la implementación de Aspect, los propietarios de contratos inteligentes pueden vincular sus contratos con Aspect. Se define como propietario de un contrato inteligente a una dirección de cuenta externa (EOA) que puede aprobar la comprobación isOwner(address) returns (bool) en el contrato inteligente.
Posteriormente, las transacciones subsecuentes que llamen al contrato inteligente serán manejadas por Aspect, como se muestra en el diagrama a continuación:
Como implementación de Hooks a nivel de protocolo, Artela Aspects tiene grandes ventajas sobre Uniswap V4 Hooks:
En primer lugar, Artela Aspects utiliza WASM para ejecutar su código, y la eficiencia de ejecución es varias órdenes de magnitud mayor que la de EVM;
En segundo lugar, Artela Aspects puede enganchar todo el ciclo de vida de la transacción, no solo la lógica central de DeFi, y puede construir DApps con funciones más ricas;
Finalmente, y lo más importante, Artela Aspects se ejecuta de forma independiente en un entorno seguro de sandbox. Este aislamiento asegura que la ejecución de Aspects no afectará la seguridad de la ejecución del contrato.
El aislamiento de los Aspectos de Artela limita las llamadas mutuas entre el contrato Hook como un contrato normal y otros contratos externos, resolviendo el obstinado problema del control de acceso y verificación de entrada de Uniswap V4 Hooks. Para contratos DeFi como Uniswap, puedes disfrutar de una experiencia Hook más rápida, fuerte y segura al implementarlo en Artela.
Como participante y líder significativo en la industria DeFi, Uniswap ha desempeñado un papel crucial en impulsar el progreso de la industria y mejorar la funcionalidad. La introducción de Hooks en Uniswap V4 sin duda marca la dirección para el desarrollo de DEX y es ansiosamente emulada por los sucesores.
Sin embargo, los Hooks de Uniswap V4 están limitados por las restricciones inherentes de los contratos inteligentes. Independientemente de lo sólido que sea el diseño del protocolo y lo completas que sean las herramientas, no puede prevenir fundamentalmente la invocación mutua entre contratos Hook y contratos externos, lo que plantea posibles vulnerabilidades de seguridad.
Artela, como una red de blockchain Layer 1 de alto rendimiento compatible con EVM, ha diseñado Aspect para funcionar de forma independiente en WASM desde el inicio del protocolo, admitiendo nativamente la programación de Hook. Esto mejora en gran medida la seguridad, proporcionando una solución avanzada para los protocolos DeFi que consideran la seguridad como primordial.
Este artículo originalmente titulado "Evolución de DeFi Hooks: Desde la Seguridad del Contrato Uniswap V4 hasta el Protocolo Nativo de Artela" es reproducido de [小猪Web3]. Todos los derechos de autor pertenecen al autor original [web3朱大胆]. Si tiene alguna objeción a la reimpresión, por favor póngase en contacto con el Gate Aprenderequipo, el equipo lo manejará lo antes posible.
Descargo de responsabilidad: Las opiniones expresadas en este artículo representan solo las opiniones personales del autor y no constituyen ningún consejo de inversión.
Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.
Hooks, o Programación de Gancho, es un modelo de programación que permite a los desarrolladores insertar código personalizado en la ruta de ejecución de un sistema, aplicación o biblioteca a través de Hooks, que son funciones predefinidas o bloques de código. No es necesario modificar el código original. Los Hooks se utilizan frecuentemente en muchos entornos y marcos de programación, como sistemas operativos, marcos y bibliotecas, desarrollo web y sistemas de plug-in.
Al usar Hooks, los desarrolladores pueden aumentar la escalabilidad y la personalización del programa sin tener que modificar el código original para cada cambio o requisito de expansión, lo que ayuda a mantener el código limpio y estable. Los Hooks proporcionan un método de implementación elegante para la extensión de software y son un modelo de programación muy útil en el diseño de software.
En particular, AOP (Programación Orientada a Aspectos) se compara a menudo con la programación Hook. AOP es un paradigma de programación modular que implementa preocupaciones transversales, y el objetivo no es cambiar la lógica principal del negocio. Mejora o modifica la funcionalidad si es necesario. No me extenderé en detalles sobre AOP aquí. Simplemente puedes pensar en AOP como una abstracción de nivel superior de la programación Hook.
En junio de 2023, Uniswap anunció y hizo público una versión preliminar del libro blanco de Uniswap V4. Una característica importante de Uniswap V4 es la introducción de Hooks.
Los Hooks se han utilizado ampliamente en los sistemas financieros Web2, porque estos sistemas generalmente requieren un alto grado de personalización y escalabilidad. Escenarios personalizados, como cuando se procesan transacciones, utilizan Hooks para insertar lógica de verificación adicional antes y después de la ejecución de la transacción, como verificación secundaria, detección de control de riesgos y estrategias contra el lavado de dinero (AML). Los escenarios de escalabilidad incluyen la integración con APIs externas o microservicios a través de Hooks para expandir nuevas funciones en el sistema financiero, como servicios de autenticación de identidad, conversión de tipos de cambio, pasarelas de pago, etc. Pero al introducir Hooks en DeFi, Uniswap ha sentado un precedente.
Uniswap V4 Hooks es esencialmente un contrato externo creado y definido por desarrolladores. Cuando se crea una piscina de liquidez, puedes optar por vincular un contrato Hook. Después, la piscina de liquidez llamará al contrato Hook previamente vinculado para realizar operaciones especificadas en diferentes etapas del ciclo de vida, proporcionando un alto grado de personalización. Los desarrolladores pueden utilizar los Hooks de Uniswap para cumplir con escenarios de trading más personalizados y construir DApps con funciones más ricas, como:
Actualmente, Uniswap V4 admite cuatro grupos de devoluciones de llamada de Hook, cada grupo contiene un par de devoluciones de llamada:
El siguiente diagrama ilustra el proceso de gancho antes/después del intercambio como se presenta en el libro blanco. Se puede observar que antes y después de ejecutar el intercambio, primero verifica si está habilitada la bandera correspondiente del gancho de la piscina de liquidez. Si está habilitado, entonces llamará a las funciones correspondientes del contrato de gancho.
Estos Hooks pueden ejecutarse antes de que comience un intercambio y después de que termine, lo que permite funcionalidades similares a las órdenes límite en cadena. El usuario coloca una orden límite en el contrato Hook, y luego utiliza un oráculo personalizado o gestionado en la devolución de llamada afterSwap para determinar si el precio cumple con la orden límite. Si lo hace, la transacción se ejecutará. Si no lo hace, la transacción se cancelará.
Uniswap V4 une profundamente la liquidez al desarrollo de la propia DApp a través de Hooks. Mejora las funciones de DApp y también potencia el efecto de red de Uniswap, convirtiéndolo en la infraestructura subyacente de todo el ecosistema DeFi.
El equipo de BlockSec ha explorado los riesgos de seguridad del mecanismo de Hooks en Uniswap V4. Además del hecho de que el contrato de Hook en sí es malicioso, los contratos de Hook benignos también son extremadamente propensos a vulnerabilidades. El equipo de BlockSec analizó el repositorio Awesome Uniswap v4 Hooks (hash de commit 3a0a444922f26605ec27a41929f3ced924af6075) y encontró que más del 30% de los proyectos en el repositorio eran vulnerables. Estas vulnerabilidades se originan principalmente de las interacciones de riesgo entre Hook, PoolManager y terceros externos, y se pueden dividir principalmente en dos categorías:
Incluso si se implementa un control de acceso necesario a funciones externas/públicas sensibles y se verifican los parámetros de entrada para reducir los riesgos de seguridad relacionados con los dos tipos de Hooks mencionados anteriormente, la vulnerabilidad del contrato en sí misma no puede evitarse por completo, especialmente si el Hook es actualizable. Si se implementa el contrato, también podría encontrarse con problemas similares relacionados con la vulnerabilidad UUPSUpgradeable de OpenZeppelin.
La razón radica en el hecho de que la programación Hook aumenta la complejidad de los contratos inteligentes, ampliando así la superficie de ataque. Para los contratos inteligentes regulares, OpenZeppelin proporciona una serie de bibliotecas de mejores prácticas para garantizar que los contratos desarrollados en base a él sean seguros. Sin embargo, fundamentalmente, añade "restricciones de uso de seguridad" para los desarrolladores. En comparación, los contratos Hook requieren incluso restricciones de uso de seguridad más estrictas que los contratos regulares. Por lo tanto, para que la programación Hook se aplique ampliamente, se necesita un marco integral: requiere un entorno de ejecución seguro, paradigmas de programación aplicables para Hooks y restricciones de uso más estrictas.
Los Hooks de Uniswap V4 se implementan a través de contratos inteligentes, y sus problemas de seguridad también son causados por las limitaciones de los contratos inteligentes. ¿Existe una solución que admita la programación de Hooks desde el nivel del protocolo? ¡Artela Aspect nos da la respuesta!
Artela es una red blockchain de capa 1 altamente escalable y de alto rendimiento compatible con EVM, diseñada para que los desarrolladores construyan aplicaciones modulares, ricas en funciones, escalables y personalizables. Artela define un nuevo módulo programable como una extensión nativa llamada Aspect, que introduce de forma innovadora el AOP en la red blockchain. Aspecto necesita especificar un punto de conexión, es decir, el lugar donde se ejecuta Aspecto en todo el ciclo de vida del procesamiento de transacciones. Similar al callback de Hook, los puntos de conexión incluyen:
Aspect actualmente solo admite TypeScript, y su código se compila en bytecode de WebAssembly (WASM) y se implementa en la red de Artela. Después de la implementación de Aspect, los propietarios de contratos inteligentes pueden vincular sus contratos con Aspect. Se define como propietario de un contrato inteligente a una dirección de cuenta externa (EOA) que puede aprobar la comprobación isOwner(address) returns (bool) en el contrato inteligente.
Posteriormente, las transacciones subsecuentes que llamen al contrato inteligente serán manejadas por Aspect, como se muestra en el diagrama a continuación:
Como implementación de Hooks a nivel de protocolo, Artela Aspects tiene grandes ventajas sobre Uniswap V4 Hooks:
En primer lugar, Artela Aspects utiliza WASM para ejecutar su código, y la eficiencia de ejecución es varias órdenes de magnitud mayor que la de EVM;
En segundo lugar, Artela Aspects puede enganchar todo el ciclo de vida de la transacción, no solo la lógica central de DeFi, y puede construir DApps con funciones más ricas;
Finalmente, y lo más importante, Artela Aspects se ejecuta de forma independiente en un entorno seguro de sandbox. Este aislamiento asegura que la ejecución de Aspects no afectará la seguridad de la ejecución del contrato.
El aislamiento de los Aspectos de Artela limita las llamadas mutuas entre el contrato Hook como un contrato normal y otros contratos externos, resolviendo el obstinado problema del control de acceso y verificación de entrada de Uniswap V4 Hooks. Para contratos DeFi como Uniswap, puedes disfrutar de una experiencia Hook más rápida, fuerte y segura al implementarlo en Artela.
Como participante y líder significativo en la industria DeFi, Uniswap ha desempeñado un papel crucial en impulsar el progreso de la industria y mejorar la funcionalidad. La introducción de Hooks en Uniswap V4 sin duda marca la dirección para el desarrollo de DEX y es ansiosamente emulada por los sucesores.
Sin embargo, los Hooks de Uniswap V4 están limitados por las restricciones inherentes de los contratos inteligentes. Independientemente de lo sólido que sea el diseño del protocolo y lo completas que sean las herramientas, no puede prevenir fundamentalmente la invocación mutua entre contratos Hook y contratos externos, lo que plantea posibles vulnerabilidades de seguridad.
Artela, como una red de blockchain Layer 1 de alto rendimiento compatible con EVM, ha diseñado Aspect para funcionar de forma independiente en WASM desde el inicio del protocolo, admitiendo nativamente la programación de Hook. Esto mejora en gran medida la seguridad, proporcionando una solución avanzada para los protocolos DeFi que consideran la seguridad como primordial.
Este artículo originalmente titulado "Evolución de DeFi Hooks: Desde la Seguridad del Contrato Uniswap V4 hasta el Protocolo Nativo de Artela" es reproducido de [小猪Web3]. Todos los derechos de autor pertenecen al autor original [web3朱大胆]. Si tiene alguna objeción a la reimpresión, por favor póngase en contacto con el Gate Aprenderequipo, el equipo lo manejará lo antes posible.
Descargo de responsabilidad: Las opiniones expresadas en este artículo representan solo las opiniones personales del autor y no constituyen ningún consejo de inversión.
Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.