Hooks : Un puissant outil pour étendre les fonctionnalités des applications
Les hooks sont un modèle de programmation qui permet aux développeurs d'insérer du code personnalisé dans le processus d'exécution du système. Grâce à des fonctions ou des blocs de code prédéfinis, les développeurs peuvent étendre et personnaliser le comportement des applications sans modifier le code source. Cette approche est largement utilisée dans plusieurs domaines, tels que les systèmes d'exploitation, les frameworks, les bibliothèques, le développement web et les systèmes de plugins.
L'utilisation des Hooks peut considérablement améliorer l'évolutivité et la flexibilité des programmes. Les développeurs n'ont pas besoin de modifier considérablement le code existant pour chaque ajustement de fonctionnalité, ce qui permet de maintenir la propreté et la stabilité du code. Ce mécanisme d'extension élégant fait des Hooks un modèle de programmation indispensable dans la conception logicielle.
Il convient de mentionner que la programmation orientée aspect (AOP) est souvent comparée à la programmation Hook. L'AOP vise à modulariser les préoccupations transversales, avec pour objectif d'améliorer ou de modifier des fonctionnalités sans affecter la logique commerciale principale. On peut considérer l'AOP comme une forme de programmation Hook à un niveau d'abstraction plus élevé.
Uniswap V4 : L'innovation des Hooks
En juin 2023, Uniswap a publié un brouillon de livre blanc V4, dont la caractéristique la plus remarquable est l'introduction du mécanisme Hooks.
En réalité, les Hooks sont déjà largement utilisés dans les systèmes financiers traditionnels, principalement pour répondre à des besoins de personnalisation et d'évolutivité élevés. Par exemple, ils peuvent être utilisés pour insérer des logiques de validation supplémentaires dans le processus de traitement des transactions, telles que l'authentification à deux facteurs, le contrôle des risques et les stratégies de lutte contre le blanchiment d'argent. De plus, les Hooks peuvent également être utilisés pour intégrer des API externes ou des microservices, afin d'étendre les fonctionnalités telles que l'authentification, la conversion des devises et les passerelles de paiement. Cependant, c'est sans aucun doute Uniswap qui a ouvert la voie en introduisant les Hooks dans le domaine de la finance décentralisée (DeFi).
Les Hooks dans Uniswap V4 sont essentiellement un contrat externe qui peut être lié lors de la création d'une piscine de liquidités. Par la suite, cette piscine appellera le contrat Hook lié à différentes étapes de son cycle de vie pour exécuter des opérations spécifiques, offrant une personnalisation extrêmement élevée. Cela permet aux développeurs de construire des scénarios de trading plus personnalisés et des applications décentralisées (DApp) riches en fonctionnalités basées sur les Hooks d'Uniswap.
Uniswap V4 prend actuellement en charge quatre groupes de rappels Hook, chaque groupe contenant une paire de fonctions de rappel :
beforeInitialize/afterInitialize : utilisé pour l'initialisation de la piscine de liquidités
beforeModifyPosition/afterModifyPosition : utilisés pour ajouter, réduire ou supprimer de la liquidité
beforeSwap/afterSwap : utilisé pour l'échange de jetons
beforeDonate/afterDonate : utilisé pour la fonction de don (fonctionnalité ajoutée dans Uniswap V4, offrant des récompenses aux fournisseurs de liquidités situés dans la plage de transaction)
Ces Hooks peuvent être exécutés avant et après le début de la transaction, permettant des fonctionnalités avancées telles que les ordres à cours limité sur la chaîne. Les utilisateurs peuvent définir des ordres à cours limité sur le contrat Hook, puis, dans le rappel afterSwap, déterminer si le prix satisfait les conditions en fonction d'oracles personnalisés ou gérés, afin de décider d'exécuter ou d'annuler la transaction.
Avec les Hooks, Uniswap V4 lie étroitement la liquidité au développement des DApp, renforçant non seulement les fonctionnalités des DApp, mais aussi l'effet de réseau d'Uniswap, faisant de lui une infrastructure fondamentale au sein de l'écosystème DeFi.
Les défis de sécurité des hooks Uniswap V4
Une équipe de sécurité a réalisé une analyse approfondie des risques de sécurité potentiels liés au mécanisme des Hooks dans Uniswap V4. En plus des risques liés aux contrats Hook malveillants eux-mêmes, même les contrats Hook bienveillants peuvent présenter des vulnérabilités. L'analyse a révélé que plus de 30 % des projets présentent des risques de sécurité. Ces vulnérabilités proviennent principalement des interactions complexes entre les Hooks, le PoolManager et des tiers externes, et peuvent être classées en deux grandes catégories :
Problèmes de contrôle d'accès : Cela concerne principalement les fonctions de rappel dans Uniswap V4, qui ne devraient être appelées que par le PoolManager et non par d'autres adresses (y compris des comptes externes et des contrats). Par exemple, dans un scénario de distribution de récompenses, si des fonctions pertinentes peuvent être appelées par n'importe quel compte, les récompenses pourraient être perçues par erreur. Par conséquent, il est crucial d'établir un mécanisme de contrôle d'accès solide pour les Hooks, surtout lorsqu'ils peuvent être appelés par d'autres parties en dehors de la piscine.
Problèmes de validation des entrées : En raison d'une validation des entrées inadéquate dans certaines implémentations de Hook vulnérables, divers types d'attaques peuvent se produire, y compris des attaques par réentrance. La situation la plus courante est l'appel de contrats externes non fiables dans des fonctions Hook critiques. Un attaquant pourrait enregistrer des pools de fonds malveillants pour des tokens fictifs, puis déclencher des hooks pour exécuter des opérations dans le pool de fonds. Lors de l'interaction avec le pool de fonds, la logique des tokens malveillants pourrait détourner le flux de contrôle, entraînant ainsi des comportements indésirables.
Même si un contrôle d'accès nécessaire a été mis en œuvre sur les fonctions externes/publiques sensibles et que les paramètres d'entrée ont été validés, réduisant ainsi les risques de sécurité associés aux deux types de Hook mentionnés ci-dessus, les vulnérabilités du contrat lui-même ne peuvent toujours pas être complètement évitées. En particulier, lorsque le Hook est mis en œuvre en tant que contrat évolutif, il peut également faire face à des problèmes liés aux vulnérabilités des contrats évolutifs similaires à celles de certaines bibliothèques de contrats intelligents bien connues.
La cause fondamentale de ces défis de sécurité réside dans le fait que la programmation Hook augmente la complexité des contrats intelligents, élargissant ainsi la surface d'attaque. Bien que certaines bibliothèques de contrats intelligents offrent des meilleures pratiques, elles ajoutent essentiellement des "contraintes d'utilisation sécurisée" pour les développeurs. Par rapport aux contrats ordinaires, les contrats Hook nécessitent des normes d'utilisation sécurisée plus strictes. Par conséquent, pour que la programmation Hook soit largement adoptée, un cadre complet est nécessaire, y compris un environnement d'exécution sécurisé, un paradigme de programmation adapté aux Hooks et des contraintes d'utilisation plus strictes.
Protocole natif d'une plateforme blockchain : support de la programmation Hook au niveau du protocole
Étant donné que les Hooks Uniswap V4 sont réalisés par le biais de contrats intelligents, les problèmes de sécurité en découlent également des limites inhérentes des contrats intelligents. Alors, existe-t-il une solution qui prend en charge la programmation de Hook au niveau du protocole ? Le mécanisme d'extension natif d'une certaine plateforme blockchain nous fournit la réponse.
La plateforme est un réseau de blockchain de niveau 1 compatible EVM, hautement extensible et performant, conçu pour permettre aux développeurs de créer des applications modulaires, riches en fonctionnalités, extensibles et personnalisables. La plateforme introduit un nouveau type de module programmable appelé module d'extension natif, qui intègre de manière innovante la programmation orientée aspect (AOP) dans le réseau blockchain.
Cette extension native nécessite de spécifier un point de connexion, c'est-à-dire l'emplacement où elle sera exécutée tout au long du cycle de vie du traitement des transactions, similaire à un rappel de type Hook. Les points de connexion comprennent :
Initialisation du bloc
Vérification des transactions
Avant l'exécution
Après l'exécution
Confirmation finale du bloc
Actuellement, cette extension native ne prend en charge que TypeScript, dont le code est compilé en WebAssembly (WASM) bytecode et déployé sur le réseau. Une fois déployé, le propriétaire du contrat intelligent peut lier le contrat à l'extension native. Le propriétaire du contrat intelligent fait référence à un compte dont l'adresse de compte externe (EOA) peut être vérifiée en utilisant isOwner(address) returns (bool).
Les extensions natives de la plateforme, mises en œuvre en tant que Hooks au niveau du protocole, présentent des avantages significatifs par rapport aux Hooks d'Uniswap V4 :
Tout d'abord, l'extension native utilise WASM pour exécuter son code, offrant une efficacité d'exécution plusieurs ordres de grandeur supérieure à celle de l'EVM.
Deuxièmement, l'extension native peut accrocher l'ensemble du cycle de vie des transactions, et pas seulement la logique de base de DeFi, permettant ainsi de construire des applications décentralisées plus riches en fonctionnalités.
Enfin, et c'est le plus important, l'extension native fonctionne de manière indépendante dans un environnement de bac à sable sécurisé, cette isolation garantit que l'exécution de l'extension n'affecte pas la sécurité de l'exécution des contrats.
La nature isolée des extensions natives limite l'interaction entre les contrats Hook en tant que contrats ordinaires et d'autres contrats externes, résolvant efficacement les problèmes de contrôle d'accès et de validation des entrées liés aux Hooks de Uniswap V4. Pour des contrats DeFi similaires à Uniswap, le déploiement sur cette plateforme permet de bénéficier d'une expérience Hook plus rapide, plus puissante et plus sécurisée.
Résumé
En tant qu'acteur et leader important dans le domaine de la finance décentralisée, Uniswap a joué un rôle clé dans la promotion du progrès de l'industrie et l'amélioration des fonctionnalités. Les Hooks introduits par Uniswap V4 vont sans aucun doute orienter la direction du développement des échanges décentralisés, devenant un modèle que les nouveaux venus s'efforceront d'imiter.
Cependant, les Hooks Uniswap V4 sont limités par les contraintes des contrats intelligents eux-mêmes. Peu importe la rigueur de la conception du protocole ou la complétude de la bibliothèque d'outils, il est impossible d'empêcher fondamentalement les appels mutuels entre les contrats Hook et d'autres contrats externes, ce qui présente des risques de sécurité potentiels.
Un réseau blockchain Layer 1 compatible EVM de haute performance a, dès la conception du protocole, pris en compte un mécanisme d'extension natif fonctionnant de manière autonome dans WASM, offrant un support natif pour la programmation des Hooks, ce qui améliore considérablement la sécurité. Cela fournit une solution avancée pour les protocoles de finance décentralisée qui considèrent la sécurité comme une ligne de vie.
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
16 J'aime
Récompense
16
3
Partager
Commentaire
0/400
GateUser-cff9c776
· 07-14 12:31
Le crochet de Schrödinger, accroché sans savoir s'il y a une hausse ou une chute.
Hooks Uniswap V4 et extensions natives : un nouveau chapitre de la sécurité et de l'innovation en Finance décentralisée
Hooks : Un puissant outil pour étendre les fonctionnalités des applications
Les hooks sont un modèle de programmation qui permet aux développeurs d'insérer du code personnalisé dans le processus d'exécution du système. Grâce à des fonctions ou des blocs de code prédéfinis, les développeurs peuvent étendre et personnaliser le comportement des applications sans modifier le code source. Cette approche est largement utilisée dans plusieurs domaines, tels que les systèmes d'exploitation, les frameworks, les bibliothèques, le développement web et les systèmes de plugins.
L'utilisation des Hooks peut considérablement améliorer l'évolutivité et la flexibilité des programmes. Les développeurs n'ont pas besoin de modifier considérablement le code existant pour chaque ajustement de fonctionnalité, ce qui permet de maintenir la propreté et la stabilité du code. Ce mécanisme d'extension élégant fait des Hooks un modèle de programmation indispensable dans la conception logicielle.
Il convient de mentionner que la programmation orientée aspect (AOP) est souvent comparée à la programmation Hook. L'AOP vise à modulariser les préoccupations transversales, avec pour objectif d'améliorer ou de modifier des fonctionnalités sans affecter la logique commerciale principale. On peut considérer l'AOP comme une forme de programmation Hook à un niveau d'abstraction plus élevé.
Uniswap V4 : L'innovation des Hooks
En juin 2023, Uniswap a publié un brouillon de livre blanc V4, dont la caractéristique la plus remarquable est l'introduction du mécanisme Hooks.
En réalité, les Hooks sont déjà largement utilisés dans les systèmes financiers traditionnels, principalement pour répondre à des besoins de personnalisation et d'évolutivité élevés. Par exemple, ils peuvent être utilisés pour insérer des logiques de validation supplémentaires dans le processus de traitement des transactions, telles que l'authentification à deux facteurs, le contrôle des risques et les stratégies de lutte contre le blanchiment d'argent. De plus, les Hooks peuvent également être utilisés pour intégrer des API externes ou des microservices, afin d'étendre les fonctionnalités telles que l'authentification, la conversion des devises et les passerelles de paiement. Cependant, c'est sans aucun doute Uniswap qui a ouvert la voie en introduisant les Hooks dans le domaine de la finance décentralisée (DeFi).
Les Hooks dans Uniswap V4 sont essentiellement un contrat externe qui peut être lié lors de la création d'une piscine de liquidités. Par la suite, cette piscine appellera le contrat Hook lié à différentes étapes de son cycle de vie pour exécuter des opérations spécifiques, offrant une personnalisation extrêmement élevée. Cela permet aux développeurs de construire des scénarios de trading plus personnalisés et des applications décentralisées (DApp) riches en fonctionnalités basées sur les Hooks d'Uniswap.
Uniswap V4 prend actuellement en charge quatre groupes de rappels Hook, chaque groupe contenant une paire de fonctions de rappel :
Ces Hooks peuvent être exécutés avant et après le début de la transaction, permettant des fonctionnalités avancées telles que les ordres à cours limité sur la chaîne. Les utilisateurs peuvent définir des ordres à cours limité sur le contrat Hook, puis, dans le rappel afterSwap, déterminer si le prix satisfait les conditions en fonction d'oracles personnalisés ou gérés, afin de décider d'exécuter ou d'annuler la transaction.
Avec les Hooks, Uniswap V4 lie étroitement la liquidité au développement des DApp, renforçant non seulement les fonctionnalités des DApp, mais aussi l'effet de réseau d'Uniswap, faisant de lui une infrastructure fondamentale au sein de l'écosystème DeFi.
Les défis de sécurité des hooks Uniswap V4
Une équipe de sécurité a réalisé une analyse approfondie des risques de sécurité potentiels liés au mécanisme des Hooks dans Uniswap V4. En plus des risques liés aux contrats Hook malveillants eux-mêmes, même les contrats Hook bienveillants peuvent présenter des vulnérabilités. L'analyse a révélé que plus de 30 % des projets présentent des risques de sécurité. Ces vulnérabilités proviennent principalement des interactions complexes entre les Hooks, le PoolManager et des tiers externes, et peuvent être classées en deux grandes catégories :
Problèmes de contrôle d'accès : Cela concerne principalement les fonctions de rappel dans Uniswap V4, qui ne devraient être appelées que par le PoolManager et non par d'autres adresses (y compris des comptes externes et des contrats). Par exemple, dans un scénario de distribution de récompenses, si des fonctions pertinentes peuvent être appelées par n'importe quel compte, les récompenses pourraient être perçues par erreur. Par conséquent, il est crucial d'établir un mécanisme de contrôle d'accès solide pour les Hooks, surtout lorsqu'ils peuvent être appelés par d'autres parties en dehors de la piscine.
Problèmes de validation des entrées : En raison d'une validation des entrées inadéquate dans certaines implémentations de Hook vulnérables, divers types d'attaques peuvent se produire, y compris des attaques par réentrance. La situation la plus courante est l'appel de contrats externes non fiables dans des fonctions Hook critiques. Un attaquant pourrait enregistrer des pools de fonds malveillants pour des tokens fictifs, puis déclencher des hooks pour exécuter des opérations dans le pool de fonds. Lors de l'interaction avec le pool de fonds, la logique des tokens malveillants pourrait détourner le flux de contrôle, entraînant ainsi des comportements indésirables.
Même si un contrôle d'accès nécessaire a été mis en œuvre sur les fonctions externes/publiques sensibles et que les paramètres d'entrée ont été validés, réduisant ainsi les risques de sécurité associés aux deux types de Hook mentionnés ci-dessus, les vulnérabilités du contrat lui-même ne peuvent toujours pas être complètement évitées. En particulier, lorsque le Hook est mis en œuvre en tant que contrat évolutif, il peut également faire face à des problèmes liés aux vulnérabilités des contrats évolutifs similaires à celles de certaines bibliothèques de contrats intelligents bien connues.
La cause fondamentale de ces défis de sécurité réside dans le fait que la programmation Hook augmente la complexité des contrats intelligents, élargissant ainsi la surface d'attaque. Bien que certaines bibliothèques de contrats intelligents offrent des meilleures pratiques, elles ajoutent essentiellement des "contraintes d'utilisation sécurisée" pour les développeurs. Par rapport aux contrats ordinaires, les contrats Hook nécessitent des normes d'utilisation sécurisée plus strictes. Par conséquent, pour que la programmation Hook soit largement adoptée, un cadre complet est nécessaire, y compris un environnement d'exécution sécurisé, un paradigme de programmation adapté aux Hooks et des contraintes d'utilisation plus strictes.
Protocole natif d'une plateforme blockchain : support de la programmation Hook au niveau du protocole
Étant donné que les Hooks Uniswap V4 sont réalisés par le biais de contrats intelligents, les problèmes de sécurité en découlent également des limites inhérentes des contrats intelligents. Alors, existe-t-il une solution qui prend en charge la programmation de Hook au niveau du protocole ? Le mécanisme d'extension natif d'une certaine plateforme blockchain nous fournit la réponse.
La plateforme est un réseau de blockchain de niveau 1 compatible EVM, hautement extensible et performant, conçu pour permettre aux développeurs de créer des applications modulaires, riches en fonctionnalités, extensibles et personnalisables. La plateforme introduit un nouveau type de module programmable appelé module d'extension natif, qui intègre de manière innovante la programmation orientée aspect (AOP) dans le réseau blockchain.
Cette extension native nécessite de spécifier un point de connexion, c'est-à-dire l'emplacement où elle sera exécutée tout au long du cycle de vie du traitement des transactions, similaire à un rappel de type Hook. Les points de connexion comprennent :
Actuellement, cette extension native ne prend en charge que TypeScript, dont le code est compilé en WebAssembly (WASM) bytecode et déployé sur le réseau. Une fois déployé, le propriétaire du contrat intelligent peut lier le contrat à l'extension native. Le propriétaire du contrat intelligent fait référence à un compte dont l'adresse de compte externe (EOA) peut être vérifiée en utilisant isOwner(address) returns (bool).
Les extensions natives de la plateforme, mises en œuvre en tant que Hooks au niveau du protocole, présentent des avantages significatifs par rapport aux Hooks d'Uniswap V4 :
Tout d'abord, l'extension native utilise WASM pour exécuter son code, offrant une efficacité d'exécution plusieurs ordres de grandeur supérieure à celle de l'EVM.
Deuxièmement, l'extension native peut accrocher l'ensemble du cycle de vie des transactions, et pas seulement la logique de base de DeFi, permettant ainsi de construire des applications décentralisées plus riches en fonctionnalités.
Enfin, et c'est le plus important, l'extension native fonctionne de manière indépendante dans un environnement de bac à sable sécurisé, cette isolation garantit que l'exécution de l'extension n'affecte pas la sécurité de l'exécution des contrats.
La nature isolée des extensions natives limite l'interaction entre les contrats Hook en tant que contrats ordinaires et d'autres contrats externes, résolvant efficacement les problèmes de contrôle d'accès et de validation des entrées liés aux Hooks de Uniswap V4. Pour des contrats DeFi similaires à Uniswap, le déploiement sur cette plateforme permet de bénéficier d'une expérience Hook plus rapide, plus puissante et plus sécurisée.
Résumé
En tant qu'acteur et leader important dans le domaine de la finance décentralisée, Uniswap a joué un rôle clé dans la promotion du progrès de l'industrie et l'amélioration des fonctionnalités. Les Hooks introduits par Uniswap V4 vont sans aucun doute orienter la direction du développement des échanges décentralisés, devenant un modèle que les nouveaux venus s'efforceront d'imiter.
Cependant, les Hooks Uniswap V4 sont limités par les contraintes des contrats intelligents eux-mêmes. Peu importe la rigueur de la conception du protocole ou la complétude de la bibliothèque d'outils, il est impossible d'empêcher fondamentalement les appels mutuels entre les contrats Hook et d'autres contrats externes, ce qui présente des risques de sécurité potentiels.
Un réseau blockchain Layer 1 compatible EVM de haute performance a, dès la conception du protocole, pris en compte un mécanisme d'extension natif fonctionnant de manière autonome dans WASM, offrant un support natif pour la programmation des Hooks, ce qui améliore considérablement la sécurité. Cela fournit une solution avancée pour les protocoles de finance décentralisée qui considèrent la sécurité comme une ligne de vie.