Lignes directrices pour l'audit des protocoles de jalonnement

Lignes directrices pour l'audit des protocoles de jalonnement

Temps de lecture: 6 minutes

Dans ce blog, nous avons décrit le concept de protocoles de jalonnement de liquidité et les directives d'audit pour les protocoles de jalonnement. Les directives couvrent une gamme de points vulnérables tels que les mécanismes de retrait, les erreurs d'arrondi, les appels externes, la logique des frais, les boucles, les structures, la durée de jalonnement, etc. Ce billet de blog sera une référence utile pour l'audit des protocoles de jalonnement et peut vous aider à identifier les bogues potentiels. .

Qu'est-ce que le Liquidity Staking ?

Le jalonnement de liquidité permet aux utilisateurs de jalonner leurs avoirs en crypto-monnaie et de gagner des récompenses sans sacrifier la liquidité. Au lieu de verrouiller leurs pièces pendant une période déterminée, les utilisateurs peuvent recevoir un jeton liquide qui représente leurs actifs jalonnés. Ce jeton peut être échangé ou utilisé comme n'importe quelle autre crypto-monnaie, permettant aux utilisateurs d'utiliser leurs actifs à leur guise tout en continuant à gagner des récompenses de mise.

Lignes directrices pour l’audit des protocoles de jalonnement PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Par exemple, vous avez 100 ETH que vous souhaitez miser sur le réseau Ethereum. Au lieu de verrouiller votre ETH pendant une période déterminée, vous pouvez utiliser un service de jalonnement de liquidité comme Lido pour jalonner votre ETH et recevoir en retour un jeton liquide appelé stETH. Avec stETH, vous pouvez toujours échanger ou utiliser votre ETH jalonné tout en gagnant des récompenses de jalonnement.

Commençons par auditer les contrats de jalonnement :

Examinez toutes les spécifications d'audit disponibles avant de commencer avec le code du contrat. Il peut s'agir d'un livre blanc, de fichiers README ou d'autre chose. Ceux-ci vous donneront une idée de ce que contiendra le code du contrat.

Lorsque vous examinez le document de spécification d'audit pour le contrat de jalonnement, recherchez ces points :

  • Types de frais basés et leurs calculs.
  • Mécanisme de récompenses pour les jetons jalonnés
  • Pouvoirs du propriétaire
  • Le contrat tiendra-t-il ETH?
  • Quels tokens le contrat contiendra-t-il ?
  • Contrat d'origine à partir duquel il est dérivé

Vérifiez que les spécifications correspondent au code. Commencez par les frais et les tokenomics, suivis de la validation de l'autorité du propriétaire. Vérifiez que toutes les récompenses et les valeurs des frais sont conformes à la documentation.

Des endroits vulnérables à rechercher ?

1. Mécanisme de retrait des récompenses :

Vérifiez que le mécanisme de récompenses des jetons jalonnés est correctement mis en œuvre et que les récompenses sont distribuées équitablement et proportionnellement à tous les jalonneurs. Les projets peuvent distribuer les récompenses de deux manières : soit automatiquement, soit périodiquement, soit à la demande des utilisateurs eux-mêmes. Une fonction de retrait peut être implémentée et personnalisée selon la logique métier du protocole.
Ci-dessous quelques points de contrôle :

  • Vérifiez si un utilisateur est en mesure de retirer plus que sa récompense + le montant misé.
  • Vérifier le dépassement/sous-dépassement dans le calcul du montant
  • Vérifiez si certains paramètres peuvent avoir un impact négatif sur les récompenses lors du calcul.
  • Si block.timestamp ou block.number est utilisé dans cette fonction. Vérifiez s'il peut être exploité de quelque manière que ce soit.

2. Logique des frais :

Si le dépôt et le retrait sont soumis à des frais, vérifiez qu'aucun utilisateur ne peut contourner les frais. De plus, soyez vigilant pour tout problème potentiel de débordement ou de sous-dépassement. Seul l'administrateur ou le propriétaire doit être autorisé à modifier les paramètres de frais. Vérifiez également qu'un seuil de frais maximum a été établi, empêchant l'administrateur de le fixer à un montant trop élevé.

3. Mécanisme de frappe/gravure du jeton LP :

Vérifiez si les mécanismes de frappe et de gravure ont été correctement mis en œuvre. Une fonction de gravure doit annuler tous les changements d'état effectués par une fonction de menthe. De plus, il est crucial de vérifier que les utilisateurs reçoivent la quantité appropriée de jetons lors de la première mise, lorsque le pool est vide.

La logique des fonctions de frappe et de gravure peut être vérifiée mathématiquement pour découvrir toute vulnérabilité cachée. De plus, l'offre totale de jetons LP frappés ne doit pas dépasser les actifs jalonnés.

4. Erreurs d'arrondi :

Même si certaines erreurs d'arrondi mineures sont généralement inévitables et non préoccupantes, elles peuvent augmenter considérablement lorsqu'il est possible de les multiplier. Recherchez les cas extrêmes où l'on peut tirer profit des erreurs d'arrondi en jalonnant et en décollant à plusieurs reprises.

Pour déterminer si les erreurs d'arrondi peuvent atteindre un montant substantiel sur une longue période de temps, nous pouvons calculer mathématiquement la plage d'erreurs d'arrondi possibles.

5. Durée du jalonnement :

Assurez-vous que les calculs de durée de jalonnement dans le contrat sont conformes à la logique métier spécifiée. Vérifiez que les utilisateurs ne peuvent pas échanger de récompenses avant la fin de la durée de mise en contournant les contrôles de durée. Vérifiez également si la durée du staking peut être exploitée par un attaquant pour obtenir plus de récompenses.

6. Appels externes et gestion des jetons :

La plupart des appels externes concerneront les contrats de jetons. Nous devons donc déterminer quels types de jetons le contrat de jalonnement gérera. Il est essentiel de vérifier les appels externes pour détecter d'éventuelles erreurs et attaques de réentrance. Les jetons déflationnistes ou les jetons avec frais de transfert, comme Safemoon, peuvent poser problème si leur logique n'est pas correctement implémentée.

7. Vérifications des manipulations de prix :

La manipulation des prix via un prêt flash est l'un des hacks les plus fréquents sur les projets DeFi. Il peut y avoir des situations où des acteurs malveillants peuvent utiliser des prêts flash pour manipuler les prix lors du jalonnement ou du retrait d'une grande quantité de jetons. Examinez attentivement les fonctions de jalonnement et de retrait pour éviter les scénarios extrêmes qui pourraient entraîner des attaques de manipulation de prix basées sur des prêts flash et la perte des fonds d'autres utilisateurs.

8. Quelques vérifications supplémentaires :

  • Boucles: Si la logique du contrat implique une boucle sur les baies, il est important de s'assurer que la limite de gaz du bloc n'est pas dépassée. Cela peut se produire lorsque la taille du tableau est très grande, vous devez donc rechercher quelles fonctions pourraient augmenter la taille du tableau et si un utilisateur pourrait l'exploiter pour provoquer une attaque DoS. Regarde ça rapport.
  • Structures : Les contrats de jalonnement utilisent le type de structure pour stocker les données des utilisateurs ou des pools. Lors de la déclaration ou de l'accès à une structure dans une fonction, il est important de spécifier s'il faut utiliser « mémoire » ou « stockage ». Cela pourrait nous aider à économiser de l'essence. Pour plus d'informations, veuillez consulter à cet article.
  • Course à l'avant: recherchez tous les scénarios dans lesquels des acteurs malveillants pourraient exploiter n'importe quelle transaction à leur avantage.
  • Visibilité des fonctions/vérifications du contrôle d'accès : Toute fonction déclarée externe ou publique est accessible à tous. Par conséquent, il est important de s'assurer qu'aucune fonction publique ne peut effectuer d'actions sensibles. Il est crucial de vérifier que le protocole de jalonnement a mis en place des contrôles appropriés pour empêcher tout accès non autorisé aux pièces jalonnées et à l'infrastructure du système.
  • Risques de centralisation : Il est important de ne pas donner au propriétaire des pouvoirs excessifs. Si l'adresse admin est compromise, cela pourrait endommager considérablement le protocole. Vérifiez que les privilèges du propriétaire ou de l'administrateur sont appropriés et assurez-vous que le protocole a un plan en place pour gérer les situations où les clés privées d'un administrateur sont divulguées.
  • Traitement ETH / WETH : Les contrats incluent souvent une logique spécifique pour la gestion des ETH. Par exemple, lorsque msg.value > 0, un contrat peut convertir ETH en WETH tout en permettant la réception directe de WETH. Lorsqu'un utilisateur spécifie WETH comme devise mais envoie ETH avec l'appel, cela peut casser certains invariants et entraîner un comportement incorrect.

Jusqu'à présent, nous avons discuté des protocoles de jalonnement de liquidité et des directives d'audit pour ces protocoles. En un mot, le jalonnement de liquidité permet aux utilisateurs de gagner des récompenses de jalonnement sans sacrifier la liquidité. Nous avons décrit les points vulnérables des contrats de jalonnement auxquels les auditeurs doivent prêter attention, tels que les mécanismes de retrait, la logique des frais, le mécanisme de frappe/gravure de jetons LP, les erreurs d'arrondi, la durée de jalonnement, les appels externes et les contrôles de manipulation des prix. 

Nous recommandons aux auditeurs d'examiner les documents de spécifications d'audit, de faire correspondre les spécifications avec le code et de vérifier les frais et la validation des tokenomics. Nous recommandons également des vérifications supplémentaires telles que la boucle sur des tableaux, la spécification de la mémoire ou du stockage pour les données de type struct et les scénarios d'exécution en amont. Ces directives seront utiles pour auditer les protocoles de jalonnement et aider à identifier les bogues potentiels.


11 Vues

Horodatage:

Plus de Quillhasch