Le lancement récent de dYdX V4 a attiré beaucoup d'attention et de participation dans l'échange de contrats perpétuels. dYdX a appliqué avec succès des exemples de trading sur marge, et nous devrions non seulement anticiper le grand potentiel de dYdX V4, mais aussi accorder plus d'attention à la sécurité des accords sur marge. Ensuite, nous utiliserons une analyse de code spécifique et des exemples pour vous guider à travers les différentes stratégies de levier et les considérations de sécurité.
En finance, l'effet de levier est une stratégie qui repose sur l'emprunt d'argent pour augmenter le rendement potentiel d'un investissement. En d'autres termes, les investisseurs ou les traders empruntent de l'argent pour amplifier leur exposition à des types d'actifs, de projets ou d'instruments spécifiques bien plus qu'ils ne pourraient le faire en se basant uniquement sur leur propre capital. Souvent, grâce à l'utilisation de l'effet de levier, les investisseurs sont en mesure d'amplifier leur pouvoir d'achat sur le marché.
L'utilisation de l'effet de levier est l'une des caractéristiques les plus importantes et les plus courantes du trading d'actifs cryptographiques. Peu de temps après la création des échanges décentralisés, le trading avec effet de levier est devenu de plus en plus populaire, même si le marché des crypto-monnaies montrait déjà une forte volatilité.
Comme dans la finance traditionnelle, les traders utilisent l'effet de levier soit simplement pour emprunter du capital afin d'augmenter leur pouvoir d'achat, soit pour profiter de divers produits dérivés financiers, tels que les contrats à terme et les options.
Le ratio de levier a également augmenté de 3x et 5x à plus de 100x. Un effet de levier plus élevé signifie un risque plus élevé, mais comme on peut le voir sur la plupart des bourses centralisées, c'est un risque que les traders agressifs cherchant des rendements plus élevés sont prêts à prendre alors que le volume des transactions à effet de levier augmente.
En ce qui concerne DeFi, les produits à effet de levier sont principalement divisés en quatre types, et les mécanismes de génération de levier sont différents : prêt à effet de levier, trading sur marge, contrat perpétuel, et jetons à effet de levier.
Le prêt et l'emprunt DeFi est l'une des premières et des plus grandes applications DeFi. Des géants tels que MakerDAO, Compound, AAVE et Venus opèrent déjà sur le marché. La logique pour obtenir un effet de levier en empruntant des actifs crypto est simple.
Par exemple, si vous détenez 10 000 $ en Ether (ETH) et que vous êtes haussier, vous pouvez déposer votre ETH en garantie dans Compound, prêter 5 000 $ en USDC, puis utiliser ce prêt de 5 000 $ en USDC en échange d'autres 5 000 $ en ETH. De cette façon, vous obtiendrez un effet de levier de 1,5 fois sur l'ETH et, par rapport à votre capital initial de 10 000 $, vous obtiendrez une exposition de 1,5 million de dollars en ETH.
De même, si vous êtes baissier, vous pouvez choisir de déposer des stablecoins et de prêter de l'ETH. Si le prix de l'ETH baisse, vous pouvez acheter de l'ETH sur le marché à un prix inférieur et rembourser vos dettes.
Notez que puisque vous emprunterez à partir d'un protocole décentralisé, vous pourriez être liquidé si la valeur de la garantie chute ou si la valeur de l'actif que vous empruntez dépasse un certain seuil.
Avec le prêt DeFi, vous pouvez faire ce que vous voulez avec ces actifs numériques. Le trading sur marge DeFi se concentre davantage sur l'augmentation de la taille de la position (augmentation du pouvoir d'achat) et est considéré comme une véritable "position à effet de levier". Cependant, il existe une différence importante - tant que les positions sur marge sont encore ouvertes, les actifs des traders servent de garantie pour les fonds empruntés.
dYdX est une plateforme de trading sur marge décentralisée bien connue qui permet un effet de levier allant jusqu'à 5x. Dans le trading sur marge de dYdX, les traders utilisent leurs propres fonds comme garantie, amplifient leur capital initial plusieurs fois et utilisent ces fonds amplifiés pour investir à plus grande échelle.
Les traders doivent payer des frais d'intérêt et des frais liés à la transaction. Cette position n'est pas fictive ; elle implique un emprunt réel et des achats/ventes réels.
Si le marché évolue dans une direction défavorable, les actifs du trader pourraient ne pas être en mesure de rembourser intégralement le prêt. Pour éviter que cela ne se produise, l'accord liquidera vos positions avant qu'un certain ratio de liquidation ne soit atteint.
Comment le levier change-t-il dans le trading sur marge——
Disons que vous êtes optimiste sur l'ETH 3 fois dans le trading sur marge, mais vous ne voulez pas ajuster votre exposition tout le temps.
Vous détenez 100 $ en USDC et empruntez 200 $ supplémentaires en USDC pour trader 300 $ en ETH afin d'établir la position longue en ETH dont vous avez besoin. Le niveau de levier est de 300 $ / 100 $ = 3x.
Si le prix de l'ETH augmente de 20%, votre profit serait de 300 (1 + 20%) -300 = 60 $. Votre risque de liquidation est plus faible, tandis que le niveau de levier réel est réduit à 360 / (360-200) = 2,25x. En d'autres termes, vous réduirez automatiquement votre levier lorsque le prix de l'ETH augmente.
Si le prix de l'ETH baisse de 20 %, votre perte serait de 300 (1-20 %) -300 = -60 dollars. En ce qui concerne la liquidation, vous vous trouvez dans une position plus dangereuse, et le niveau réel de l'effet de levier est automatiquement augmenté à 240/ (240-200) = 6x. En d'autres termes, vous rééquilibrez votre effet de levier lorsque le prix de l'ETH baisse, ce qui indique que vous êtes dans une position à plus haut risque qu'auparavant.
Par conséquent, alors que vous pourriez penser que vous pouvez maintenir un effet de levier constant en négociant sur une marge fixe de 3x, l'effet de levier en temps réel change constamment.Veuillez vérifier le tableau ci-dessous pour voir comment l'effet de levier changera en fonction des variations de prix [1].
Les contrats perpétuels sont similaires aux contrats à terme traditionnels, mais ils n'ont pas de date d'expiration. Les contrats perpétuels imitent un marché au comptant basé sur la marge, de sorte que le trading se rapproche du prix de l'indice de référence sous-jacent.
Il existe de nombreux projets DeFi qui proposent des contrats perpétuels pour les traders, tels que dYdX, MCDEX, Perpetual Protocol, Incomplete, etc. De nombreux traders peuvent trouver difficile de distinguer le trading sur marge des contrats perpétuels - en fait, ils impliquent tous un effet de levier pour l'utilisateur.
Cependant, il existe des différences dans les mécanismes de levier, les frais et les niveaux de levier.
Un contrat perpétuel est un produit dérivé qui négocie des actifs synthétiques et a la caractéristique de négocier avec un effet de levier. Le prix de l'actif sous-jacent est suivi de manière synthétique, sans avoir besoin de négocier l'actif sous-jacent réel. Cependant, le trading avec effet de levier implique l'emprunt réel et le trading d'actifs crypto réels.
Avec l'avènement des contrats perpétuels, le concept des taux de financement a émergé. Le but est de maintenir le prix de transaction d'un contrat perpétuel en cohérence avec le prix de référence sous-jacent. Si le prix du contrat est supérieur au prix au comptant, alors les taureaux paieront les shorts. En d'autres termes, les traders doivent constamment payer des frais pour emprunter.
L'effet de levier dans les contrats perpétuels est généralement plus élevé que dans le trading sur marge, et peut atteindre jusqu'à 100x. Les mécanismes de liquidation et d'effet de levier réels sont les mêmes que dans le trading sur marge.
Les tokens à effet de levier sont des dérivés qui offrent aux détenteurs une exposition à effet de levier sur le marché des crypto-monnaies sans avoir à se soucier de la gestion active des positions à effet de levier. Bien qu'ils offrent une exposition à effet de levier, ils ne nécessitent pas de traiter avec la marge, la liquidation, les garanties ou les taux de financement.
La plus grande différence entre les jetons à effet de levier et le trading sur marge / contrats perpétuels est que les jetons à effet de levier seront rééquilibrés périodiquement ou lorsqu'un certain seuil est atteint pour maintenir un niveau spécifique d'effet de levier.
Cela est clairement différent du trading sur marge et des contrats perpétuels - l'effet de levier réel de ces produits change constamment en fonction des fluctuations de prix, même si le trader peut initialement spécifier un niveau d'effet de levier.
Jetons un coup d'œil sur le fonctionnement du rééquilibrage dans l'exemple 3x ETH ci-dessus:
Vous détenez 100 $ de USDC et achetez un jeton levier ETHBULL (3x). Le protocole empruntera automatiquement 200 $ en USDC et échangera 200 $ en ETH.
Supposez que le prix de l'ETH a augmenté de 20 %, tandis que le prix du jeton ETHBULL (3x) augmente à 300* (1 +20 %) -200 = 160 $ avant le rééquilibrage. Votre effet de levier réel est maintenant de 2,25 (360/160), inférieur à votre effet de levier cible.
Dans le cadre du processus de rééquilibrage, le protocole empruntera davantage de dollars au pool de stablecoins et achètera des jetons ETH supplémentaires pour ramener l'effet de levier à 3x. Dans notre exemple, le protocole emprunterait 120 $ supplémentaires et les échangerait contre de l'ETH. Ainsi, l'effet de levier total devient à nouveau (360+120) /160 = 3 fois.
Supposez que le prix de l'ETH ait baissé de 20 %, tandis que le prix du jeton ETHBULL (3x) chute à 300* (1-20 %) -200 = 40 $ avant le rééquilibrage. Votre effet de levier réel sera maintenant de 6 (240/40), au-dessus de votre effet de levier cible.
Dans ce cas, l'accord vendrait des jetons ETH et rembourserait les dettes impayées pour réduire l'effet de levier. Dans cet exemple, le protocole vendrait 120 $ en ETH pour payer le pool. La dette deviendra de 80 $, et l'effet de levier total sera à nouveau de (240-120) /40 = 3x.
En d'autres termes, les jetons à effet de levier seront automatiquement re-levier dans les profits et dé-lever dans les pertes pour restaurer leur niveau cible de levier. Si ce mécanisme fonctionne bien, même dans des tendances de marché défavorables, les détenteurs de jetons à effet de levier ne seront pas liquidés car le mécanisme de dé-leveraging réduira continuellement le niveau de levier effectif des utilisateurs.
En conséquence, le pool de prêt dans le modèle de jeton levier sera exempté du risque de liquidation et sera plus sécurisé que le pool d'emprunt dans le trading sur marge.
Maintenant que nous avons appris certains types de levier DeFi courants, parlons de l'application du levier en détail en relation avec des protocoles DeFi spécifiques.
GMX[2]est un échange décentralisé de spot et perpétuel qui offre aux traders la possibilité de trader des actifs avec jusqu'à 50 fois de levier. L'accord fonctionne actuellement sur Arbitrum et Avalanche. Sur GMX, les traders sont pleinement conscients de la situation de leur contrepartie, ce qui est complètement différent du trading sur CEX. Contrairement à d'autres accords de contrat perpétuel tels que dYdX, GMX fonctionne entièrement on-chain et utilise la fonctionnalité AMM pour permettre le trading avec effet de levier.
Ce qui distingue GMX des autres services, c'est qu'il s'agit d'un échange décentralisé qui propose des services de trading avec effet de levier. À cet égard, il combine une expérience similaire à celle d'autres échanges DeFi tels que Uniswap avec des services de trading avec effet de levier offerts par Binance et d'autres.
GMX dispose d’un pool de liquidité GLP, qui est un pool multi-actifs qui fournit des liquidités pour le trading sur marge : les utilisateurs peuvent prendre des positions longues/courtes et exécuter des transactions en frappant et en détruisant des jetons GLP. Le pool gagne des frais de LP sur les transactions et les transactions à effet de levier, qui sont distribués aux détenteurs de GMX et de GLP.
Pour trader avec effet de levier, les traders déposent des garanties dans un accord. Les traders peuvent choisir un effet de levier allant jusqu'à 50x. Plus l'effet de levier est élevé, plus le prix de liquidation augmente, ce qui augmentera progressivement à mesure que les coûts d'emprunt augmentent.
Par exemple, lorsque vous vous positionnez à la hausse sur l'ETH, les traders “louent” l'espace à la hausse de l'ETH à partir du pool GLP ; lorsque vous vous positionnez à la baisse sur l'ETH, les traders “empruntent” l'espace à la hausse des stablecoins contre l'ETH à partir du pool GLP. Cependant, les actifs dans le pool GLP ne sont pas réellement loués.
Lors de la clôture d'une position, si le trader parie correctement, les profits seront payés sous forme de jetons croissants issus du pool GLP ; sinon, les pertes seront déduites de la garantie et payées dans le pool. GLP tire des profits des pertes des traders et des profits des traders.
Dans le processus, les traders paient des frais de transaction, des frais d'ouverture/fermeture et des frais d'emprunt en échange d'un espace à la hausse pour des tokens spécifiés (BTC, ETH, AVAX, UNI et LINK) contre le dollar américain.
Commerce de Merkle[3] est une plateforme de trading décentralisée qui propose le trading de cryptomonnaies, de devises et de matières premières avec un effet de levier allant jusqu'à 1 000x et des fonctionnalités de trading avancées centrées sur l'utilisateur. Merkle Trade est alimenté par la blockchain Aptos et offre des performances et une évolutivité de premier ordre. Comparé à Gains Network, qui propose le même effet de levier élevé, il présente des retards de transaction et des frais plus faibles.
Contrairement à la plupart des bourses, il n'y a pas de carnet d'ordres sur Merkle Trade. Au lieu de cela, Merkle LP agit comme contrepartie à chaque transaction, et lorsque les traders perdent de l'argent, il prend des garanties et paie les bénéfices sur les transactions fermées avec des rendements positifs.
Merkle Trade a été conçu dès le départ pour offrir une large gamme de paires de trading, y compris des cryptomonnaies, du forex et des matières premières, ainsi que certains des plus hauts niveaux de levier sur le marché; jusqu'à 150x sur les cryptomonnaies et jusqu'à 1 000x sur le forex.
Générer une blockchain avec Aptos, qui a la latence la plus faible à ce jour, peut fournir l'expérience de transaction en chaîne la plus rapide. Pour les traders, cela signifie une expérience de trading plus rapide et moins de glissement de prix en raison des retards d'exécution.
Les traders échangent avec un pool de liquidité (Merkle LP), qui agit comme contrepartie à chaque transaction sur l'accord. Toutes les transactions et règlements sont exécutés par des contrats intelligents, et il n'y a pas d'hébergement des fonds des utilisateurs à tout moment.
Merkle Trade affirme avoir parmi les frais les plus bas du marché à ce jour. Au lancement, les frais pour les paires de trading de cryptomonnaies étaient aussi bas que 0,05 %, et les frais pour les paires de trading forex étaient aussi bas que 0,0075 %.
DYDX
dYdX[4] est un échange décentralisé (DEX) qui permet aux utilisateurs de négocier efficacement des contrats perpétuels tout en ayant un contrôle total sur les actifs. Depuis son lancement en 2021, dYdX V3 a adopté une solution de mise à l'échelle unique de second niveau non-custodiale pour mettre en œuvre son échange, mais son carnet de commandes et son moteur de correspondance sont toujours gérés de manière centralisée.
Maintenant, avec dYdX V4, le protocole évolue vers sa propre chaîne, et l'ensemble du protocole est entièrement restructuré pour atteindre une décentralisation complète tout en augmentant le débit. dYdX comprend également trois fonctions : le prêt, le trading avec effet de levier et les contrats perpétuels. Le trading avec effet de levier est accompagné d'une fonction d'emprunt. Les fonds déposés par les utilisateurs forment automatiquement un pool de fonds. En cas de capital insuffisant lors du trading, un intérêt est automatiquement emprunté et payé.
Nous avons présenté les types et les applications courants de l’effet de levier dans la DeFi. De plus, il existe encore de nombreux problèmes de sécurité dans la conception de l’effet de levier qui méritent notre attention. Nous analyserons les problèmes de sécurité et les points d’audit de l’effet de levier de la DeFi sur la base de cas d’audit spécifiques.
Dans la plupart des applications d'échange à effet de levier, il existe des ordres limités et des ordres au marché. Une différenciation stricte et une vérification des ordres limités et des ordres au marché sont très nécessaires.Ensuite, nous procéderons à une analyse détaillée des problèmes que nous avons trouvés lors de l'audit de Merkle Trade [5].
let now = timestamp: :now_seconds (); if (now - order.created_timestamp > 30) { cancel_order_internal( _order_id, order, T_CANCEL_ORDER_EXPIRED ); return };
Cette partie du code effectue les vérifications dans la fonction d'ordre, où il vérifie s'il s'est écoulé plus de 30 secondes depuis la création de l'ordre. Si les conditions sont remplies, appelez cancel_order_internal () pour annuler l'ordre. Cependant, si l'ordre est un ordre limite, cela signifie que l'ordre a un prix spécifique défini par le trader et qu'ils sont prêts à acheter ou vendre l'actif à ce prix. Il ne devrait y avoir aucun jugement de ce type lors de l'exécution d'ordres limites ; cela peut entraîner que la plupart des ordres limites ne soient pas exécutés. Il est donc important de différencier strictement la logique de trading entre les ordres limites et les ordres au marché.
Les erreurs de calcul ont toujours été un problème très courant dans DeFi, et elles sont également particulièrement fréquentes dans l'effet de levier. Nous utiliserons les problèmes découverts par le protocole Unstoppable [6] lors d'audits tiers pour examiner en profondeur les problèmes de calcul de l'effet de levier.
Regardons le code pour calculer l'effet de levier dans Unstoppable :
def _calculate_calculation(_position_value: uint256, _debt_value: uint256, _margin_value: uint256) -> uint256: if _position_value < = _debt_value: #bad debt Return max_value(uint256) Return (précision * (_debt_value + _margin_value) / (_position_value - _debt_value) / PRECISION)
La fonction _calculate_margin a causé un calcul incorrect du levier en utilisant _debt_value + _margin_value comme numérateur plutôt que _position_value. Les trois paramètres d'entrée de la fonction _position_value, _debt_value et _margin_value sont tous déterminés par les informations de prix fournies par les oracles on-chain de Chainlink. Ici, _debt_value indique la valeur de conversion de la part de dette de la position en montant de dette en dollars. _margin_value indique la valeur actuelle du montant de marge initiale de la position (en dollars américains). _position_value indique la valeur actuelle (en dollars américains) du montant de position initial de la position.
Le problème avec le calcul ci-dessus est que _debt_value + _margin_value ne représente pas la valeur de la position. L'effet de levier est le ratio entre la valeur actuelle de la position et la valeur actuelle de la marge. _position_value - _debt_value est correct. Cela indique la valeur actuelle de la marge, mais _debt_value + _margin_value ne représente pas la valeur actuelle de la position, car il n'y a aucune garantie que les jetons de dette et les jetons de position ont des fluctuations de prix liées.
Par exemple, le jeton de dette est ETH, et le jeton de position est BTC.
Alice utilise 1 ETH comme marge, emprunte 14 ETH (2 000 $ chacun), et obtient 1 BTC (30 000 $ chacun) en jetons de position. L'effet de levier est de 14.
Le lendemain, le prix de l'ETH est resté à 2 000 $/ETH, mais le prix du BTC est passé de 30 000 $/BTC à 29 000 $/BTC. À ce stade, l'effet de levier devrait être (_valeur_de_position == 29 000)/(_valeur_de_position == 29 000 - _valeur_de_dette == 28 000) = 29, et non la valeur calculée dans le contrat : (_valeur_de_dette == 28 000 + _valeur_de_marge == 2 000)/(_valeur_de_position == 29 000 - _valeur_de_dette == 28 000) = 30.
Par conséquent, pour corriger cela, la formule correcte mentionnée ci-dessus doit être utilisée pour calculer l'effet de levier dans les contrats intelligents. Une erreur de calcul de l'effet de levier peut entraîner des liquidations injustes ou des positions excessivement levier face aux fluctuations des prix.
Dans les contrats intelligents, il est essentiel de garantir un calcul de levier approprié pour maintenir la robustesse du système et les intérêts des utilisateurs. Le calcul correct du levier doit être basé sur le ratio entre la valeur actuelle de la position et la valeur marginale actuelle. Si la mauvaise formule de calcul est utilisée, cela peut entraîner une réaction inappropriée du système aux changements de prix, entraîner la liquidation de positions qui ne devraient pas être liquidées ou permettre à des positions excessivement levier de continuer à exister, augmentant ainsi le risque pour le système et les utilisateurs.
Erreur logique
Les erreurs logiques nécessitent une attention particulière dans les audits de contrats intelligents, en particulier dans des logiques complexes telles que le trading sur marge DeFi.
Discutons des problèmes logiques à prendre en compte dans l'effet de levier DeFi en utilisant les problèmes découverts par Tigris[7](Tigris, une plateforme de trading à effet de levier synthétique décentralisée basée sur Arbitrum et Polygon) dans le cadre d'un audit externe.
Jetons un coup d'œil à la logique de la fonction de clôture de limite de prix dans Tigris :
Function limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) external{ _checkDelay(_id, false) ; (uint _limitPrice, adresse _tigAsset) = tradingExtension._limitClose(_id, _tp, _priceData, _signature) ; _closePosition(_id, DIVISION_CONSTANT, _limitPrice, address(0), _tigAsset, true) ;}function _limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) external view returns (uint _limitPrice, address _TIGAsset) { _checkGas () ; iPosition.trade mémoire _trade = position.trades (_id) ; _tigAsset = _trade.tigAsset ; getVerifiedPrice (_trade.asset, _priceData, _signature, 0) ; uint256 _price = _priceData.prix ; if (_trade.orderType ! = 0) revert ( » 4 « ) ; isLimit if (_tp) { if (_trade.tpPrice == 0) revert ( » 7 « ) ; limitNotSet if (_trade.direction) { if (_trade.tpPrice > _price) revert(« 6 ») ; //LimitNotMet } else { if (_trade.tpPrice < _price) revert(« 6 ») ; //LimitNotMet } _limitPrice = _trade.tpPrice ; } else { if (_trade.slprice == 0) revert ( » 7 « ) ; limitNotSet if (_trade.direction) { if (_trade.slPrice < _price) revert(« 6 ») ; //LimitNotMet } else { if (_trade.slPrice > _price) revert(« 6 ») ; //LimitNotMet } //@audit stop loss est clôturé au prix spécifié par l’utilisateur PAS au prix du marché _limitPrice = _trade.slprice ; }}
Lors de l'utilisation du stop-loss pour clôturer une position, le prix de clôture de l'utilisateur est le prix de stop-loss défini par l'utilisateur, et non le prix actuel de l'actif. Dans le cas des marchés directionnels et de l'effet de levier élevé, les utilisateurs peuvent abuser de cela pour réaliser des transactions presque sans risque. Les utilisateurs peuvent ouvrir une position longue et définir un prix de stop-loss inférieur de 0,01 $ au prix actuel.
Si le prix baisse immédiatement lors de la prochaine mise à jour, ils clôtureront leur position à leur prix d'entrée et ne paieront que les frais d'ouverture et de clôture. Si les prix montent, ils sont susceptibles de gagner beaucoup d'argent. En conséquence, les utilisateurs peuvent abuser des méthodes de tarification de stop-loss pour ouvrir des transactions avec un effet de levier élevé, un potentiel de hausse élevé et un faible risque à la baisse.
Prix Tubs
L'impact des fluctuations de prix sur l'effet de levier DeFi est très important. Ce n'est qu'en tenant toujours compte des fluctuations de prix que nous pouvons garantir la sécurité des accords de levier. Utilisons le DeFiner[8]protocole comme exemple pour une analyse approfondie des problèmes découverts lors d'un audit réalisé par un tiers :
Le protocole DeFiner subit deux vérifications avant de traiter les retraits.
Tout d'abord, la méthode vérifie si le montant demandé par l'utilisateur à retirer dépasse le solde de cet actif :
fonction d'autorisation (adresse _accountAddr, adresse _token, uint256 _amount) externe seulementAutorisé rendements (uint256) { // Vérifier si le montant suffisant est inférieur au solde de l'utilisateur require (_amount < = getDepositBalanceCurrent (_token, _accountAddr), " Solde gagné. "); uint256 borrowLtv = globalConfig.tokenInfoLogistry () .getBorrowLtv (_token);
Deuxièmement, la méthode vérifie si les retraits vont rendre le ratio de levier de l'utilisateur trop élevé. Le montant retiré sera soustrait de la "puissance d'emprunt" du prix actuel de l'utilisateur. Si la valeur d'emprunt totale de l'utilisateur dépasse la nouvelle puissance d'emprunt, la méthode échoue car l'utilisateur n'a plus suffisamment de garanties pour soutenir sa position d'emprunt. Cependant, cette exigence ne sera vérifiée que si l'utilisateur n'a pas été excessivement endetté :
si (getBorrowEth(_accountAddr) < = getBorrowPower(_accountAddr)) nécessitent (getBorrowEth(_accountAddr) < = getBorrowPower(_accountAddr).sub(_amount.mul(globalConfig.tokenInfoRegistry().priceFromAddress(_token)).mul(borrowLtv).div(utils.getDivisor(address(globalConfig), _token)).div(100)), " Colloque Collège quand ");
Si les utilisateurs ont emprunté plus que ce que leur "pouvoir d'emprunt" permet, ils peuvent retirer de l'argent quand même. Cela peut se produire dans plusieurs situations, la plus courante étant les fluctuations de prix. L'accord n'a pas pris en compte l'impact des fluctuations de prix sur l'accord, ce qui a causé ce problème.
En plus des effets de la non-distinction entre les ordres limite et les ordres au marché, des erreurs de calcul, des erreurs logiques et des fluctuations de prix mentionnées ci-dessus, il existe de nombreux points de sécurité liés aux accords de levier qui nécessitent notre attention. Cela comprend, sans s'y limiter, des problèmes tels que les attaques de prêt flash, la manipulation des prix, la sécurité du prophète, le contrôle de l'autorité, des vérifications de levier insuffisantes ou l'absence de vérifications. Ces facteurs doivent être soigneusement pris en compte lors de la conception et de la mise en œuvre d'accords de levier pour garantir la robustesse de l'accord et la sécurité des actifs des utilisateurs. Des mesures préventives, une surveillance en temps réel et des plans d'intervention d'urgence sont également essentiels pour réduire les risques potentiels et protéger les intérêts des utilisateurs.
Conclusion
L'introduction du trading avec effet de levier dans les protocoles DeFi a en effet fourni au marché une plus grande manœuvrabilité, tout en apportant des mécanismes de trading plus complexes. Bien que le trading avec effet de levier offre aux utilisateurs plus d'opportunités d'investissement, ses risques potentiels et ses défis pour la sécurité du protocole sont également devenus plus importants.
À mesure que l'effet de levier augmente, le fonctionnement des accords devient plus flexible, mais en conséquence, ils deviennent plus vulnérables et plus exposés à diverses menaces de sécurité. Cela inclut la possibilité de ne pas faire une distinction stricte entre les ordres limites et les ordres de marché, les erreurs de calcul, les erreurs logiques et une sensibilité extrême à des facteurs tels que les fluctuations de prix. Dans ce cas, nous devons accorder plus d'attention à la sécurité du protocole pour garantir que les actifs des utilisateurs sont efficacement protégés.
En tant qu'équipe de sécurité blockchain de premier plan dans le domaine de Web3, ScaleBit est distribuée à Silicon Valley, Singapour, Hong Kong, Taiwan, etc. Nous avons fourni des solutions de sécurité blockchain à plus de 200 institutions et projets dans le secteur mondial de Web3, accumulé plus de 180 000 lignes de code d'audit, et protégé plus de 8 milliards de dollars d'actifs d'utilisateurs. Rendre la sécurité accessible à tous ! Si vous avez des besoins en audit de sécurité, n'hésitez pas à nous contacter. Nous vous fournirons des solutions de sécurité détaillées, complètes et professionnelles pour vous protéger, ainsi que le domaine de Web3, en toute sécurité !
Cet article a été repris de[ScaleBit]et les droits d'auteur appartiennent à l'auteur original [Polaris]. Si vous avez des objections à la réimpression, veuillez contacter l'équipe Gate Learn, et l'équipe s'en occupera dès que possible selon les procédures pertinentes.
Avertissement : Les points de vue et opinions exprimés dans cet article ne représentent que les opinions personnelles de l'auteur et ne constituent pas un conseil en investissement.
Les traductions de l'article dans d'autres langues sont effectuées par l'équipe Gate Learn. Sauf mention contraire, la copie, la distribution ou le plagiat des articles traduits est interdite.
Le lancement récent de dYdX V4 a attiré beaucoup d'attention et de participation dans l'échange de contrats perpétuels. dYdX a appliqué avec succès des exemples de trading sur marge, et nous devrions non seulement anticiper le grand potentiel de dYdX V4, mais aussi accorder plus d'attention à la sécurité des accords sur marge. Ensuite, nous utiliserons une analyse de code spécifique et des exemples pour vous guider à travers les différentes stratégies de levier et les considérations de sécurité.
En finance, l'effet de levier est une stratégie qui repose sur l'emprunt d'argent pour augmenter le rendement potentiel d'un investissement. En d'autres termes, les investisseurs ou les traders empruntent de l'argent pour amplifier leur exposition à des types d'actifs, de projets ou d'instruments spécifiques bien plus qu'ils ne pourraient le faire en se basant uniquement sur leur propre capital. Souvent, grâce à l'utilisation de l'effet de levier, les investisseurs sont en mesure d'amplifier leur pouvoir d'achat sur le marché.
L'utilisation de l'effet de levier est l'une des caractéristiques les plus importantes et les plus courantes du trading d'actifs cryptographiques. Peu de temps après la création des échanges décentralisés, le trading avec effet de levier est devenu de plus en plus populaire, même si le marché des crypto-monnaies montrait déjà une forte volatilité.
Comme dans la finance traditionnelle, les traders utilisent l'effet de levier soit simplement pour emprunter du capital afin d'augmenter leur pouvoir d'achat, soit pour profiter de divers produits dérivés financiers, tels que les contrats à terme et les options.
Le ratio de levier a également augmenté de 3x et 5x à plus de 100x. Un effet de levier plus élevé signifie un risque plus élevé, mais comme on peut le voir sur la plupart des bourses centralisées, c'est un risque que les traders agressifs cherchant des rendements plus élevés sont prêts à prendre alors que le volume des transactions à effet de levier augmente.
En ce qui concerne DeFi, les produits à effet de levier sont principalement divisés en quatre types, et les mécanismes de génération de levier sont différents : prêt à effet de levier, trading sur marge, contrat perpétuel, et jetons à effet de levier.
Le prêt et l'emprunt DeFi est l'une des premières et des plus grandes applications DeFi. Des géants tels que MakerDAO, Compound, AAVE et Venus opèrent déjà sur le marché. La logique pour obtenir un effet de levier en empruntant des actifs crypto est simple.
Par exemple, si vous détenez 10 000 $ en Ether (ETH) et que vous êtes haussier, vous pouvez déposer votre ETH en garantie dans Compound, prêter 5 000 $ en USDC, puis utiliser ce prêt de 5 000 $ en USDC en échange d'autres 5 000 $ en ETH. De cette façon, vous obtiendrez un effet de levier de 1,5 fois sur l'ETH et, par rapport à votre capital initial de 10 000 $, vous obtiendrez une exposition de 1,5 million de dollars en ETH.
De même, si vous êtes baissier, vous pouvez choisir de déposer des stablecoins et de prêter de l'ETH. Si le prix de l'ETH baisse, vous pouvez acheter de l'ETH sur le marché à un prix inférieur et rembourser vos dettes.
Notez que puisque vous emprunterez à partir d'un protocole décentralisé, vous pourriez être liquidé si la valeur de la garantie chute ou si la valeur de l'actif que vous empruntez dépasse un certain seuil.
Avec le prêt DeFi, vous pouvez faire ce que vous voulez avec ces actifs numériques. Le trading sur marge DeFi se concentre davantage sur l'augmentation de la taille de la position (augmentation du pouvoir d'achat) et est considéré comme une véritable "position à effet de levier". Cependant, il existe une différence importante - tant que les positions sur marge sont encore ouvertes, les actifs des traders servent de garantie pour les fonds empruntés.
dYdX est une plateforme de trading sur marge décentralisée bien connue qui permet un effet de levier allant jusqu'à 5x. Dans le trading sur marge de dYdX, les traders utilisent leurs propres fonds comme garantie, amplifient leur capital initial plusieurs fois et utilisent ces fonds amplifiés pour investir à plus grande échelle.
Les traders doivent payer des frais d'intérêt et des frais liés à la transaction. Cette position n'est pas fictive ; elle implique un emprunt réel et des achats/ventes réels.
Si le marché évolue dans une direction défavorable, les actifs du trader pourraient ne pas être en mesure de rembourser intégralement le prêt. Pour éviter que cela ne se produise, l'accord liquidera vos positions avant qu'un certain ratio de liquidation ne soit atteint.
Comment le levier change-t-il dans le trading sur marge——
Disons que vous êtes optimiste sur l'ETH 3 fois dans le trading sur marge, mais vous ne voulez pas ajuster votre exposition tout le temps.
Vous détenez 100 $ en USDC et empruntez 200 $ supplémentaires en USDC pour trader 300 $ en ETH afin d'établir la position longue en ETH dont vous avez besoin. Le niveau de levier est de 300 $ / 100 $ = 3x.
Si le prix de l'ETH augmente de 20%, votre profit serait de 300 (1 + 20%) -300 = 60 $. Votre risque de liquidation est plus faible, tandis que le niveau de levier réel est réduit à 360 / (360-200) = 2,25x. En d'autres termes, vous réduirez automatiquement votre levier lorsque le prix de l'ETH augmente.
Si le prix de l'ETH baisse de 20 %, votre perte serait de 300 (1-20 %) -300 = -60 dollars. En ce qui concerne la liquidation, vous vous trouvez dans une position plus dangereuse, et le niveau réel de l'effet de levier est automatiquement augmenté à 240/ (240-200) = 6x. En d'autres termes, vous rééquilibrez votre effet de levier lorsque le prix de l'ETH baisse, ce qui indique que vous êtes dans une position à plus haut risque qu'auparavant.
Par conséquent, alors que vous pourriez penser que vous pouvez maintenir un effet de levier constant en négociant sur une marge fixe de 3x, l'effet de levier en temps réel change constamment.Veuillez vérifier le tableau ci-dessous pour voir comment l'effet de levier changera en fonction des variations de prix [1].
Les contrats perpétuels sont similaires aux contrats à terme traditionnels, mais ils n'ont pas de date d'expiration. Les contrats perpétuels imitent un marché au comptant basé sur la marge, de sorte que le trading se rapproche du prix de l'indice de référence sous-jacent.
Il existe de nombreux projets DeFi qui proposent des contrats perpétuels pour les traders, tels que dYdX, MCDEX, Perpetual Protocol, Incomplete, etc. De nombreux traders peuvent trouver difficile de distinguer le trading sur marge des contrats perpétuels - en fait, ils impliquent tous un effet de levier pour l'utilisateur.
Cependant, il existe des différences dans les mécanismes de levier, les frais et les niveaux de levier.
Un contrat perpétuel est un produit dérivé qui négocie des actifs synthétiques et a la caractéristique de négocier avec un effet de levier. Le prix de l'actif sous-jacent est suivi de manière synthétique, sans avoir besoin de négocier l'actif sous-jacent réel. Cependant, le trading avec effet de levier implique l'emprunt réel et le trading d'actifs crypto réels.
Avec l'avènement des contrats perpétuels, le concept des taux de financement a émergé. Le but est de maintenir le prix de transaction d'un contrat perpétuel en cohérence avec le prix de référence sous-jacent. Si le prix du contrat est supérieur au prix au comptant, alors les taureaux paieront les shorts. En d'autres termes, les traders doivent constamment payer des frais pour emprunter.
L'effet de levier dans les contrats perpétuels est généralement plus élevé que dans le trading sur marge, et peut atteindre jusqu'à 100x. Les mécanismes de liquidation et d'effet de levier réels sont les mêmes que dans le trading sur marge.
Les tokens à effet de levier sont des dérivés qui offrent aux détenteurs une exposition à effet de levier sur le marché des crypto-monnaies sans avoir à se soucier de la gestion active des positions à effet de levier. Bien qu'ils offrent une exposition à effet de levier, ils ne nécessitent pas de traiter avec la marge, la liquidation, les garanties ou les taux de financement.
La plus grande différence entre les jetons à effet de levier et le trading sur marge / contrats perpétuels est que les jetons à effet de levier seront rééquilibrés périodiquement ou lorsqu'un certain seuil est atteint pour maintenir un niveau spécifique d'effet de levier.
Cela est clairement différent du trading sur marge et des contrats perpétuels - l'effet de levier réel de ces produits change constamment en fonction des fluctuations de prix, même si le trader peut initialement spécifier un niveau d'effet de levier.
Jetons un coup d'œil sur le fonctionnement du rééquilibrage dans l'exemple 3x ETH ci-dessus:
Vous détenez 100 $ de USDC et achetez un jeton levier ETHBULL (3x). Le protocole empruntera automatiquement 200 $ en USDC et échangera 200 $ en ETH.
Supposez que le prix de l'ETH a augmenté de 20 %, tandis que le prix du jeton ETHBULL (3x) augmente à 300* (1 +20 %) -200 = 160 $ avant le rééquilibrage. Votre effet de levier réel est maintenant de 2,25 (360/160), inférieur à votre effet de levier cible.
Dans le cadre du processus de rééquilibrage, le protocole empruntera davantage de dollars au pool de stablecoins et achètera des jetons ETH supplémentaires pour ramener l'effet de levier à 3x. Dans notre exemple, le protocole emprunterait 120 $ supplémentaires et les échangerait contre de l'ETH. Ainsi, l'effet de levier total devient à nouveau (360+120) /160 = 3 fois.
Supposez que le prix de l'ETH ait baissé de 20 %, tandis que le prix du jeton ETHBULL (3x) chute à 300* (1-20 %) -200 = 40 $ avant le rééquilibrage. Votre effet de levier réel sera maintenant de 6 (240/40), au-dessus de votre effet de levier cible.
Dans ce cas, l'accord vendrait des jetons ETH et rembourserait les dettes impayées pour réduire l'effet de levier. Dans cet exemple, le protocole vendrait 120 $ en ETH pour payer le pool. La dette deviendra de 80 $, et l'effet de levier total sera à nouveau de (240-120) /40 = 3x.
En d'autres termes, les jetons à effet de levier seront automatiquement re-levier dans les profits et dé-lever dans les pertes pour restaurer leur niveau cible de levier. Si ce mécanisme fonctionne bien, même dans des tendances de marché défavorables, les détenteurs de jetons à effet de levier ne seront pas liquidés car le mécanisme de dé-leveraging réduira continuellement le niveau de levier effectif des utilisateurs.
En conséquence, le pool de prêt dans le modèle de jeton levier sera exempté du risque de liquidation et sera plus sécurisé que le pool d'emprunt dans le trading sur marge.
Maintenant que nous avons appris certains types de levier DeFi courants, parlons de l'application du levier en détail en relation avec des protocoles DeFi spécifiques.
GMX[2]est un échange décentralisé de spot et perpétuel qui offre aux traders la possibilité de trader des actifs avec jusqu'à 50 fois de levier. L'accord fonctionne actuellement sur Arbitrum et Avalanche. Sur GMX, les traders sont pleinement conscients de la situation de leur contrepartie, ce qui est complètement différent du trading sur CEX. Contrairement à d'autres accords de contrat perpétuel tels que dYdX, GMX fonctionne entièrement on-chain et utilise la fonctionnalité AMM pour permettre le trading avec effet de levier.
Ce qui distingue GMX des autres services, c'est qu'il s'agit d'un échange décentralisé qui propose des services de trading avec effet de levier. À cet égard, il combine une expérience similaire à celle d'autres échanges DeFi tels que Uniswap avec des services de trading avec effet de levier offerts par Binance et d'autres.
GMX dispose d’un pool de liquidité GLP, qui est un pool multi-actifs qui fournit des liquidités pour le trading sur marge : les utilisateurs peuvent prendre des positions longues/courtes et exécuter des transactions en frappant et en détruisant des jetons GLP. Le pool gagne des frais de LP sur les transactions et les transactions à effet de levier, qui sont distribués aux détenteurs de GMX et de GLP.
Pour trader avec effet de levier, les traders déposent des garanties dans un accord. Les traders peuvent choisir un effet de levier allant jusqu'à 50x. Plus l'effet de levier est élevé, plus le prix de liquidation augmente, ce qui augmentera progressivement à mesure que les coûts d'emprunt augmentent.
Par exemple, lorsque vous vous positionnez à la hausse sur l'ETH, les traders “louent” l'espace à la hausse de l'ETH à partir du pool GLP ; lorsque vous vous positionnez à la baisse sur l'ETH, les traders “empruntent” l'espace à la hausse des stablecoins contre l'ETH à partir du pool GLP. Cependant, les actifs dans le pool GLP ne sont pas réellement loués.
Lors de la clôture d'une position, si le trader parie correctement, les profits seront payés sous forme de jetons croissants issus du pool GLP ; sinon, les pertes seront déduites de la garantie et payées dans le pool. GLP tire des profits des pertes des traders et des profits des traders.
Dans le processus, les traders paient des frais de transaction, des frais d'ouverture/fermeture et des frais d'emprunt en échange d'un espace à la hausse pour des tokens spécifiés (BTC, ETH, AVAX, UNI et LINK) contre le dollar américain.
Commerce de Merkle[3] est une plateforme de trading décentralisée qui propose le trading de cryptomonnaies, de devises et de matières premières avec un effet de levier allant jusqu'à 1 000x et des fonctionnalités de trading avancées centrées sur l'utilisateur. Merkle Trade est alimenté par la blockchain Aptos et offre des performances et une évolutivité de premier ordre. Comparé à Gains Network, qui propose le même effet de levier élevé, il présente des retards de transaction et des frais plus faibles.
Contrairement à la plupart des bourses, il n'y a pas de carnet d'ordres sur Merkle Trade. Au lieu de cela, Merkle LP agit comme contrepartie à chaque transaction, et lorsque les traders perdent de l'argent, il prend des garanties et paie les bénéfices sur les transactions fermées avec des rendements positifs.
Merkle Trade a été conçu dès le départ pour offrir une large gamme de paires de trading, y compris des cryptomonnaies, du forex et des matières premières, ainsi que certains des plus hauts niveaux de levier sur le marché; jusqu'à 150x sur les cryptomonnaies et jusqu'à 1 000x sur le forex.
Générer une blockchain avec Aptos, qui a la latence la plus faible à ce jour, peut fournir l'expérience de transaction en chaîne la plus rapide. Pour les traders, cela signifie une expérience de trading plus rapide et moins de glissement de prix en raison des retards d'exécution.
Les traders échangent avec un pool de liquidité (Merkle LP), qui agit comme contrepartie à chaque transaction sur l'accord. Toutes les transactions et règlements sont exécutés par des contrats intelligents, et il n'y a pas d'hébergement des fonds des utilisateurs à tout moment.
Merkle Trade affirme avoir parmi les frais les plus bas du marché à ce jour. Au lancement, les frais pour les paires de trading de cryptomonnaies étaient aussi bas que 0,05 %, et les frais pour les paires de trading forex étaient aussi bas que 0,0075 %.
DYDX
dYdX[4] est un échange décentralisé (DEX) qui permet aux utilisateurs de négocier efficacement des contrats perpétuels tout en ayant un contrôle total sur les actifs. Depuis son lancement en 2021, dYdX V3 a adopté une solution de mise à l'échelle unique de second niveau non-custodiale pour mettre en œuvre son échange, mais son carnet de commandes et son moteur de correspondance sont toujours gérés de manière centralisée.
Maintenant, avec dYdX V4, le protocole évolue vers sa propre chaîne, et l'ensemble du protocole est entièrement restructuré pour atteindre une décentralisation complète tout en augmentant le débit. dYdX comprend également trois fonctions : le prêt, le trading avec effet de levier et les contrats perpétuels. Le trading avec effet de levier est accompagné d'une fonction d'emprunt. Les fonds déposés par les utilisateurs forment automatiquement un pool de fonds. En cas de capital insuffisant lors du trading, un intérêt est automatiquement emprunté et payé.
Nous avons présenté les types et les applications courants de l’effet de levier dans la DeFi. De plus, il existe encore de nombreux problèmes de sécurité dans la conception de l’effet de levier qui méritent notre attention. Nous analyserons les problèmes de sécurité et les points d’audit de l’effet de levier de la DeFi sur la base de cas d’audit spécifiques.
Dans la plupart des applications d'échange à effet de levier, il existe des ordres limités et des ordres au marché. Une différenciation stricte et une vérification des ordres limités et des ordres au marché sont très nécessaires.Ensuite, nous procéderons à une analyse détaillée des problèmes que nous avons trouvés lors de l'audit de Merkle Trade [5].
let now = timestamp: :now_seconds (); if (now - order.created_timestamp > 30) { cancel_order_internal( _order_id, order, T_CANCEL_ORDER_EXPIRED ); return };
Cette partie du code effectue les vérifications dans la fonction d'ordre, où il vérifie s'il s'est écoulé plus de 30 secondes depuis la création de l'ordre. Si les conditions sont remplies, appelez cancel_order_internal () pour annuler l'ordre. Cependant, si l'ordre est un ordre limite, cela signifie que l'ordre a un prix spécifique défini par le trader et qu'ils sont prêts à acheter ou vendre l'actif à ce prix. Il ne devrait y avoir aucun jugement de ce type lors de l'exécution d'ordres limites ; cela peut entraîner que la plupart des ordres limites ne soient pas exécutés. Il est donc important de différencier strictement la logique de trading entre les ordres limites et les ordres au marché.
Les erreurs de calcul ont toujours été un problème très courant dans DeFi, et elles sont également particulièrement fréquentes dans l'effet de levier. Nous utiliserons les problèmes découverts par le protocole Unstoppable [6] lors d'audits tiers pour examiner en profondeur les problèmes de calcul de l'effet de levier.
Regardons le code pour calculer l'effet de levier dans Unstoppable :
def _calculate_calculation(_position_value: uint256, _debt_value: uint256, _margin_value: uint256) -> uint256: if _position_value < = _debt_value: #bad debt Return max_value(uint256) Return (précision * (_debt_value + _margin_value) / (_position_value - _debt_value) / PRECISION)
La fonction _calculate_margin a causé un calcul incorrect du levier en utilisant _debt_value + _margin_value comme numérateur plutôt que _position_value. Les trois paramètres d'entrée de la fonction _position_value, _debt_value et _margin_value sont tous déterminés par les informations de prix fournies par les oracles on-chain de Chainlink. Ici, _debt_value indique la valeur de conversion de la part de dette de la position en montant de dette en dollars. _margin_value indique la valeur actuelle du montant de marge initiale de la position (en dollars américains). _position_value indique la valeur actuelle (en dollars américains) du montant de position initial de la position.
Le problème avec le calcul ci-dessus est que _debt_value + _margin_value ne représente pas la valeur de la position. L'effet de levier est le ratio entre la valeur actuelle de la position et la valeur actuelle de la marge. _position_value - _debt_value est correct. Cela indique la valeur actuelle de la marge, mais _debt_value + _margin_value ne représente pas la valeur actuelle de la position, car il n'y a aucune garantie que les jetons de dette et les jetons de position ont des fluctuations de prix liées.
Par exemple, le jeton de dette est ETH, et le jeton de position est BTC.
Alice utilise 1 ETH comme marge, emprunte 14 ETH (2 000 $ chacun), et obtient 1 BTC (30 000 $ chacun) en jetons de position. L'effet de levier est de 14.
Le lendemain, le prix de l'ETH est resté à 2 000 $/ETH, mais le prix du BTC est passé de 30 000 $/BTC à 29 000 $/BTC. À ce stade, l'effet de levier devrait être (_valeur_de_position == 29 000)/(_valeur_de_position == 29 000 - _valeur_de_dette == 28 000) = 29, et non la valeur calculée dans le contrat : (_valeur_de_dette == 28 000 + _valeur_de_marge == 2 000)/(_valeur_de_position == 29 000 - _valeur_de_dette == 28 000) = 30.
Par conséquent, pour corriger cela, la formule correcte mentionnée ci-dessus doit être utilisée pour calculer l'effet de levier dans les contrats intelligents. Une erreur de calcul de l'effet de levier peut entraîner des liquidations injustes ou des positions excessivement levier face aux fluctuations des prix.
Dans les contrats intelligents, il est essentiel de garantir un calcul de levier approprié pour maintenir la robustesse du système et les intérêts des utilisateurs. Le calcul correct du levier doit être basé sur le ratio entre la valeur actuelle de la position et la valeur marginale actuelle. Si la mauvaise formule de calcul est utilisée, cela peut entraîner une réaction inappropriée du système aux changements de prix, entraîner la liquidation de positions qui ne devraient pas être liquidées ou permettre à des positions excessivement levier de continuer à exister, augmentant ainsi le risque pour le système et les utilisateurs.
Erreur logique
Les erreurs logiques nécessitent une attention particulière dans les audits de contrats intelligents, en particulier dans des logiques complexes telles que le trading sur marge DeFi.
Discutons des problèmes logiques à prendre en compte dans l'effet de levier DeFi en utilisant les problèmes découverts par Tigris[7](Tigris, une plateforme de trading à effet de levier synthétique décentralisée basée sur Arbitrum et Polygon) dans le cadre d'un audit externe.
Jetons un coup d'œil à la logique de la fonction de clôture de limite de prix dans Tigris :
Function limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) external{ _checkDelay(_id, false) ; (uint _limitPrice, adresse _tigAsset) = tradingExtension._limitClose(_id, _tp, _priceData, _signature) ; _closePosition(_id, DIVISION_CONSTANT, _limitPrice, address(0), _tigAsset, true) ;}function _limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) external view returns (uint _limitPrice, address _TIGAsset) { _checkGas () ; iPosition.trade mémoire _trade = position.trades (_id) ; _tigAsset = _trade.tigAsset ; getVerifiedPrice (_trade.asset, _priceData, _signature, 0) ; uint256 _price = _priceData.prix ; if (_trade.orderType ! = 0) revert ( » 4 « ) ; isLimit if (_tp) { if (_trade.tpPrice == 0) revert ( » 7 « ) ; limitNotSet if (_trade.direction) { if (_trade.tpPrice > _price) revert(« 6 ») ; //LimitNotMet } else { if (_trade.tpPrice < _price) revert(« 6 ») ; //LimitNotMet } _limitPrice = _trade.tpPrice ; } else { if (_trade.slprice == 0) revert ( » 7 « ) ; limitNotSet if (_trade.direction) { if (_trade.slPrice < _price) revert(« 6 ») ; //LimitNotMet } else { if (_trade.slPrice > _price) revert(« 6 ») ; //LimitNotMet } //@audit stop loss est clôturé au prix spécifié par l’utilisateur PAS au prix du marché _limitPrice = _trade.slprice ; }}
Lors de l'utilisation du stop-loss pour clôturer une position, le prix de clôture de l'utilisateur est le prix de stop-loss défini par l'utilisateur, et non le prix actuel de l'actif. Dans le cas des marchés directionnels et de l'effet de levier élevé, les utilisateurs peuvent abuser de cela pour réaliser des transactions presque sans risque. Les utilisateurs peuvent ouvrir une position longue et définir un prix de stop-loss inférieur de 0,01 $ au prix actuel.
Si le prix baisse immédiatement lors de la prochaine mise à jour, ils clôtureront leur position à leur prix d'entrée et ne paieront que les frais d'ouverture et de clôture. Si les prix montent, ils sont susceptibles de gagner beaucoup d'argent. En conséquence, les utilisateurs peuvent abuser des méthodes de tarification de stop-loss pour ouvrir des transactions avec un effet de levier élevé, un potentiel de hausse élevé et un faible risque à la baisse.
Prix Tubs
L'impact des fluctuations de prix sur l'effet de levier DeFi est très important. Ce n'est qu'en tenant toujours compte des fluctuations de prix que nous pouvons garantir la sécurité des accords de levier. Utilisons le DeFiner[8]protocole comme exemple pour une analyse approfondie des problèmes découverts lors d'un audit réalisé par un tiers :
Le protocole DeFiner subit deux vérifications avant de traiter les retraits.
Tout d'abord, la méthode vérifie si le montant demandé par l'utilisateur à retirer dépasse le solde de cet actif :
fonction d'autorisation (adresse _accountAddr, adresse _token, uint256 _amount) externe seulementAutorisé rendements (uint256) { // Vérifier si le montant suffisant est inférieur au solde de l'utilisateur require (_amount < = getDepositBalanceCurrent (_token, _accountAddr), " Solde gagné. "); uint256 borrowLtv = globalConfig.tokenInfoLogistry () .getBorrowLtv (_token);
Deuxièmement, la méthode vérifie si les retraits vont rendre le ratio de levier de l'utilisateur trop élevé. Le montant retiré sera soustrait de la "puissance d'emprunt" du prix actuel de l'utilisateur. Si la valeur d'emprunt totale de l'utilisateur dépasse la nouvelle puissance d'emprunt, la méthode échoue car l'utilisateur n'a plus suffisamment de garanties pour soutenir sa position d'emprunt. Cependant, cette exigence ne sera vérifiée que si l'utilisateur n'a pas été excessivement endetté :
si (getBorrowEth(_accountAddr) < = getBorrowPower(_accountAddr)) nécessitent (getBorrowEth(_accountAddr) < = getBorrowPower(_accountAddr).sub(_amount.mul(globalConfig.tokenInfoRegistry().priceFromAddress(_token)).mul(borrowLtv).div(utils.getDivisor(address(globalConfig), _token)).div(100)), " Colloque Collège quand ");
Si les utilisateurs ont emprunté plus que ce que leur "pouvoir d'emprunt" permet, ils peuvent retirer de l'argent quand même. Cela peut se produire dans plusieurs situations, la plus courante étant les fluctuations de prix. L'accord n'a pas pris en compte l'impact des fluctuations de prix sur l'accord, ce qui a causé ce problème.
En plus des effets de la non-distinction entre les ordres limite et les ordres au marché, des erreurs de calcul, des erreurs logiques et des fluctuations de prix mentionnées ci-dessus, il existe de nombreux points de sécurité liés aux accords de levier qui nécessitent notre attention. Cela comprend, sans s'y limiter, des problèmes tels que les attaques de prêt flash, la manipulation des prix, la sécurité du prophète, le contrôle de l'autorité, des vérifications de levier insuffisantes ou l'absence de vérifications. Ces facteurs doivent être soigneusement pris en compte lors de la conception et de la mise en œuvre d'accords de levier pour garantir la robustesse de l'accord et la sécurité des actifs des utilisateurs. Des mesures préventives, une surveillance en temps réel et des plans d'intervention d'urgence sont également essentiels pour réduire les risques potentiels et protéger les intérêts des utilisateurs.
Conclusion
L'introduction du trading avec effet de levier dans les protocoles DeFi a en effet fourni au marché une plus grande manœuvrabilité, tout en apportant des mécanismes de trading plus complexes. Bien que le trading avec effet de levier offre aux utilisateurs plus d'opportunités d'investissement, ses risques potentiels et ses défis pour la sécurité du protocole sont également devenus plus importants.
À mesure que l'effet de levier augmente, le fonctionnement des accords devient plus flexible, mais en conséquence, ils deviennent plus vulnérables et plus exposés à diverses menaces de sécurité. Cela inclut la possibilité de ne pas faire une distinction stricte entre les ordres limites et les ordres de marché, les erreurs de calcul, les erreurs logiques et une sensibilité extrême à des facteurs tels que les fluctuations de prix. Dans ce cas, nous devons accorder plus d'attention à la sécurité du protocole pour garantir que les actifs des utilisateurs sont efficacement protégés.
En tant qu'équipe de sécurité blockchain de premier plan dans le domaine de Web3, ScaleBit est distribuée à Silicon Valley, Singapour, Hong Kong, Taiwan, etc. Nous avons fourni des solutions de sécurité blockchain à plus de 200 institutions et projets dans le secteur mondial de Web3, accumulé plus de 180 000 lignes de code d'audit, et protégé plus de 8 milliards de dollars d'actifs d'utilisateurs. Rendre la sécurité accessible à tous ! Si vous avez des besoins en audit de sécurité, n'hésitez pas à nous contacter. Nous vous fournirons des solutions de sécurité détaillées, complètes et professionnelles pour vous protéger, ainsi que le domaine de Web3, en toute sécurité !
Cet article a été repris de[ScaleBit]et les droits d'auteur appartiennent à l'auteur original [Polaris]. Si vous avez des objections à la réimpression, veuillez contacter l'équipe Gate Learn, et l'équipe s'en occupera dès que possible selon les procédures pertinentes.
Avertissement : Les points de vue et opinions exprimés dans cet article ne représentent que les opinions personnelles de l'auteur et ne constituent pas un conseil en investissement.
Les traductions de l'article dans d'autres langues sont effectuées par l'équipe Gate Learn. Sauf mention contraire, la copie, la distribution ou le plagiat des articles traduits est interdite.