Conseils d'intégration CurveV1

Feb 19 2023
Salutations chers lecteurs! Nous continuons notre série d'articles instructifs avec quelques recommandations spéciales pour les développeurs utilisant l'intégration CurveV1 de Curve.fi ! Vous vous demandez ce qu'est Curve.

Salutations chers lecteurs!

Nous continuons notre série d'articles instructifs avec quelques recommandations spéciales pour les développeurs utilisant l'intégration CurveV1 de Curve.fi  !

Vous vous demandez ce qu'est Curve.fi ? Consultez cette ressource , visitez le blog de Curve appartenant à la communauté sur SubStack , YouTube et les chaînes officielles !

En bref, c'est l'un des protocoles DeFi les plus utilisés ; diverses équipes Web3 l'utilisent pour l' intégrer à leurs propres projets, et si cela n'est pas fait correctement, cela peut entraîner des attaques et des pertes de fonds de l'utilisateur, ce qui ne devrait jamais être autorisé.

Nous comprenons et respectons votre temps limité, c'est pourquoi nous avons créé une feuille de triche spécifique sans rien de superflu uniquement pour vous ! Vérifiez-le!

Introduction

En regardant les hacks sans fin de ce mois- ci , on se demande pourquoi ils se produisent si fréquemment . Les cabinets d'audit ont-ils réellement empiré dans ce qu'ils font ? Ceci, à mon avis, n'est pas le cas; pourtant, le sujet est plutôt délicat car vous pouvez, à certains égards, réduire les risques pour vous et votre projet !

Face à un tel problème, il ne reste plus qu'à l'aborder logiquement, autrement dit, comment agir sur cette situation défavorable ?

Premièrement, nous pourrions construire notre mur de défense métaphysique de telle manière qu'il réponde déjà à l'attaque en cours. Ce concept est fermement associé à la modélisation des menaces .

D'ailleurs, nous travaillons sur une telle solution au sein de l'équipe et espérons la livrer sous peu !

Deuxièmement, nous pouvons nous efforcer de construire une ligne de défense qui fonctionnera avant même les événements possibles, c'est-à-dire créer d'abord le code et mener toutes les activités de manière appropriée et en toute sécurité. C'est ce que nous aborderons dans cet article sur l'utilisation de CurveV1 dans votre projet !

Dans cet article, nous présentons également des conseils que nous avons acquis au fil des années d'audit de telles intégrations, vous trouverez également une liste d'outils et de recherche pour l'auto-apprentissage, nous vous recommandons fortement de le lire séparément pour une meilleure compréhension.

Avant tout, nous tenons à exprimer notre profonde gratitude aux concepteurs de Curve.fi , à tous ceux qui le soutiennent, aux auteurs de tous les documents de référence et, bien sûr, à nos auditeurs internes qui nous ont aidés en fournissant des informations indispensables. informations et briser le voile du secret !

Rétrospective

Je voudrais également profiter de cette occasion pour remercier les camarades du LobsterDAO (c'est le meilleur chat de ma liste et Sov's Compendium ; Leur Twitter ), dont le nom vient du déploiement de Curve pendant l'été DeFi 2020 , en savoir plus sur cette histoire ici et ici .

J'aimerais souligner que l'auteur de ce message, votre très humble serviteur , a été étonné de voir à quel point le projet a pris de l'ampleur et qu'il a commencé dans le salon de discussion où je suis administrateur ; C'est fantastique que l'histoire devienne plus tangible sur le Web3 ces jours-ci !

Pour en revenir à notre sujet principal, cet article se concentrera uniquement sur les aspects qui peuvent être vraiment utiles pour l'audit et le piratage de bug bounty et qui ne sont décrits nulle part. Nous pouvons dire avec confiance que de tels conseils peuvent être lus publiquement à quelques endroits, et notre blog est l'un de ces endroits !

Nous espérons également que vous trouverez l'article d'aujourd'hui informatif et utile !

Au fait, il y a des créneaux vacants maintenant, donc si votre projet a besoin d'un audit — n'hésitez pas à nous écrire , visitez notre page de rapports publics ici .

II— Nous recommandons

Suivre les conseils ci-dessous peut améliorer considérablement la sécurité de votre intégration :

  • Il est essentiel de garder à l'esprit que les adresses des composants ( Swaps , Metapool factory , etc.) ne peuvent pas être codées en dur ; à la place, vous devez toujours les obtenir via un AddressProvider !
  • Registry.Swaps est un composant très gourmand en gaz, en particulier les fonctions get_best_rate et exchange_with_best_rate , par conséquent, vous ne devez pas les utiliser en chaîne.
  • Il est préférable d'utiliser Swaps.exchange en conjonction avec Swaps.get_best_rate effectué hors chaîne.
  • Vous ne pouvez pas vous attendre à ce que tous les pools de prêt (et les contrats DepositZaps correspondants ) implémentent la même API. Par exemple, il existe d'anciens et de nouveaux DepositZaps dont les méthodes peuvent différer dans les valeurs de retour ou les types d'arguments.
  • De plus, les anciens pools de prêt (et leurs DepositZaps ) n'implémentent pas certaines des méthodes que les nouveaux pools ont (par exemple remove_liquidity_one_coin ).
  • Essayez de ne pas traiter les pools Curve en boucle !
  • Vous devez également vérifier séparément l'ABI pour chacun des pools de prêt !
  • Dans les métapools et les pools de prêt , les échanges peuvent être effectués dans les jetons sous-jacents et les versions enveloppées ( cTokens dans un pool composé ). Pour échanger des jetons sous-jacents, utilisez exchange_underlying !

MetaRegistry est essentiellement un agrégateur ultime de pools Curve sur le réseau principal Ethereum. C'est le meilleur moyen de récupérer des informations sur les pools.

MetaRegistry agrège des pools de ses registres enfants :

  • (1) StableRegistry — pour les pools StableSwap, créés par Curve
  • (2) StableFactory - pour les pools StableSwap créés par l'utilisateur
  • (3) CryptoRegistry — pour les pools CryptoSwap, créés par Curve
  • (4) CryptoFactory - pour les pools CryptoSwap créés par l'utilisateur

MetaRegistry connaît également tous les types de pools : méta, prêt, swap stable et crypto-swap, créés par l'utilisateur (pools d'usine) ainsi que les pools créés par Curve lui-même. Il implémente un ensemble de getters utiles, tels que : get_base_pool(pool), get_underlying_coins(pool), get_coins(pool), get_fees, etc.

Le contrat de registre régulier a beaucoup moins de pools enregistrés que MetaRegistry, vous devez donc vous fier à ce dernier. Vous pouvez trouver les adresses des registres déployés ici !

III— Ressources & Outils

Nous vous conseillons vivement de consulter séparément cette liste d'outils et de ressources fantastiques pour une meilleure compréhension !

Nous comprenons et respectons votre temps limité, c'est pourquoi nous avons créé une feuille de triche spécifique sans rien de superflu pour un accès plus facile ! Vérifiez-le!

Ce qui suit est une collection de ressources que l' auteur de cette page a passé plus d'une heure à collecter et à vérifier des données lien par lien :

  • courbe.readthedocs.io/index.html
  • resources.curve.fi/base-features/understanding-curve
  • twitter.com/CurveFinance
  • Écosystème de courbe ( 2 )
  • betterprogramming.pub/how-to-integrate-the-curve-fi-protocol-into-your-defi-protocol-e1d4c43f716d
  • github.com/manifoldfinance/curve-integration
  • help.lido.fi/en/articles/5231649-a-guide-to-curve-finance
  • academy.moralis.io/blog/defi-deep-dive-what-is-curve-finance

Consultez notre article avec des conseils sur l'optimisation du gaz ainsi que d'autres articles !

Quels instruments devrions-nous revoir? Qu'est-ce qui vous intéresserait de lire ?

S'il vous plaît laissez vos commentaires, nous serons heureux d'y répondre, et les meilleures réponses et questions seront peut-être incluses dans le prochain article!

Soyez prudent!