Cet article présentera plusieurs implémentations AMM importantes dans l'écosystème Solana.
Rédigé par : ZAN
Dans l'état actuel de l'industrie Web3, les produits liés à DeFi occupent une part de marché absolue. Parmi ceux-ci, les AMM (Automated Market Maker, teneurs de marché automatisés) jouent un rôle clé et sont de puissants moteurs des changements dans la finance Web3. Cet article présentera plusieurs réalisations importantes d'AMM dans l'écosystème Solana, en espérant offrir une aide aux LP (Liquidity Provider, fournisseurs de liquidités) sur la manière de choisir leur stratégie d'investissement.
CPMM
CPMM (Market Maker à produit constant) en tant que mise en œuvre AMM la plus basique, se retrouve dans de nombreux produits. Ici, nous prenons l'exemple de l'AMM à produit constant basé sur Raydium. Le produit constant signifie que la quantité de deux types de jetons dans le pool a un produit fixe : X * Y = k.
Pour les fournisseurs de liquidité, lorsque quelqu'un ajoute de la liquidité (ajoute des actifs) à la piscine, le CPMM crée automatiquement un compte associé à l'adresse du portefeuille et émet un LP Token (chaque paire de jetons a son propre LP Token Mint). Ce LP Token sert à prouver que l'adresse du portefeuille détient une part d'une piscine donnée et sera détruit lors du retrait des fonds par le fournisseur de liquidité.
Le programme on-chain de CPMM est développé avec Anchor, et le code du programme peut être trouvé. Voyons rapidement comment il réalise le produit constant.
Tout d'abord, lorsque les utilisateurs utilisent le CPMM de Raydium pour échanger des jetons, cela déclenchera des instructions liées à l'échange.
Par exemple (uniquement à titre d'illustration, cet article ne prend aucune responsabilité pour aucun Token) : lorsque l'utilisateur souhaite échanger des USDC contre des TRUMP, il peut procéder à l'échange via le pool TRUMP-USDC.
Par exemple, regardons cette transaction, pour simplifier, ignorons les autres instructions dans la transaction et concentrons-nous sur la partie Raydium. Trouvez Raydium CPMM : swapBaseInput :
Dans les Comptes d'Entrée, nous pouvons voir que le token d'entrée est USDC et le token de sortie est TRUMP. Dans l'AMM de l'écosystème Solana, le LP Pair peut être simplement représenté par le Token Account, sans avoir besoin de créer un nouveau contrat et de le déployer (comme le contrat de factory couramment utilisé sur Ethereum). Lorsqu'une transaction se produit, elle interagit directement avec le Programme CPMM de Raydium. Le programme Solana modifie l'état du Token Account correspondant en utilisant l'adresse de la piscine, l'adresse du token, etc., pour effectuer l'opération de swap.
Par exemple, la commande swapBaseInput mentionnée ci-dessus peut être trouvée ici. Après une série de vérifications préalables, le montant exact de jetons cibles pouvant être échangés a été calculé dans ConstantProductCurve.swap_base_input_without_fees :
Le formule utilisée est :
Ainsi, après que les quantités totales de TokenX et TokenY ont changé, leur produit doit rester constant. Le côté gauche de l'équation représente le produit après changement, tandis que le côté droit représente le produit avant changement.
L'équation ci-dessus, après transformation mathématique, permet d'obtenir la formule de conversion Δy (c'est-à-dire le nombre de jetons y que nous pouvons échanger) :
c'est-à-dire la partie delta_y = (delta_x * y) / (x + delta_x) dans le code. Notez que ce calcul n'inclut pas les frais, qui ont déjà été déduits dans la logique préalable de swap_base_input.
CLMM
CLMM (Créateur de Marché de Liquidité Concentrée) est également un AMM lancé par Raydium, similaire à Uniswap V3, chaque paire de jetons ayant plusieurs niveaux de frais, permettant de créer un pool correspondant à chaque niveau.
Puisque la mise en œuvre de CLMM s'inspire de Uniswap V3, de nombreux concepts et méthodes d'implémentation peuvent être référencés dans la mise en œuvre de Uniswap lors de son apprentissage. Elle hérite également des concepts de Uniswap tels que tick, multiples niveaux de frais, liquidité concentrée, etc. Plus de contenu peut être trouvé dans le cours de développement DEX proposé par ZAN : DEX Development Practice - Uniswap Code Analysis - How Uniswap works - ZAN
Cependant, il est important de noter que, comme avec les CPMM, en raison des caractéristiques de la chaîne Solana, le CLMM de Raydium ne nécessite pas de déployer un contrat séparé pour chaque pool, donc il n'y a pas non plus de concept de contrat de fabrique. Cela diffère d'Uniswap.
CLMM permet aux fournisseurs de liquidité de sélectionner une fourchette de prix lors de l'injection de fonds, les fonds ne seront distribués que dans la fourchette sélectionnée :
Dans le cas des pools de liquidité concentrée, les jetons sont respectivement situés de chaque côté du prix actuel. La plage de prix choisie dans l'image ci-dessus inclut le prix actuel, de sorte que les fonds seront répartis entre les deux types de jetons dans le pool.
Nous pouvons également injecter un seul type de jeton pour fournir ce qu'on appelle une liquidité unilatérale (comme le montre l'image ci-dessous). Cela ressemble un peu aux ordres à cours limité dans le modèle financier traditionnel, les fonds du LP ne seront utilisés que lorsque le prix du jeton atteint une certaine fourchette, mais ce modèle comporte également plus de points de risque à considérer.
En général, pour les pools avec peu de fluctuations de prix, les LP ont tendance à choisir une plage un peu plus petite ; en revanche, pour ceux avec des fluctuations de prix très importantes, ils ont tendance à choisir une plage un peu plus large. L'objectif est d'éviter autant que possible que le prix actuel s'écarte de la plage de prix choisie, ce qui pourrait entraîner trop de pertes impermanentes.
Il est important de noter que la liquidité concentrée, bien qu'elle puisse augmenter l'utilisation des fonds des LP, impose également des exigences plus élevées en matière de conscience financière aux LP. Les LP doivent gérer leur liquidité de manière plus proactive. Si les LP ne réagissent pas de manière adéquate, les fluctuations fréquentes sur la chaîne peuvent facilement entraîner des pertes impermanentes sévères pour les LP.
DLMM
DLMM ( Dynamic Liquidity Market Maker ) est un produit AMM lancé par Meteora, qui appartient également à Uniswap V3 et est très similaire au CLMM mentionné ci-dessus. DLMM permet également aux LP de concentrer leurs fonds dans une certaine plage autour du prix actuel. Cependant, DLMM présente certaines différences dans sa mise en œuvre et offre quelques fonctionnalités distinctives.
DLMM introduit le concept de Bin, le pool commencera à partir du prix de base, chaque intervalle de Bin step constituant un Bin. Si une transaction se produit dans le même Bin, alors le trader bénéficiera d'un glissement nul. Cela peut considérablement augmenter le volume des transactions et le taux de réussite des transactions, en théorie, les LP peuvent récolter plus de frais de transaction.
Comme avec le CLMM, les jetons dans le pool sont également répartis des deux côtés du prix actuel, un jeton n'a besoin de fournir qu'une seule liquidité. Mais selon le concept de Bin, le Bin actuellement actif (qui indique le prix d'échange actuel) possède deux types de jetons. C'est-à-dire :
Bin actif actuel : il y a deux types de tokens, l'échange de tokens dans le Bin actuel se fera à un prix fixe et avec 0 slippage ;
Autres Bin : distribué de chaque côté du Bin actuellement activé, avec un seul jeton présent de chaque côté.
Lorsque le montant des jetons dans le bin actuellement activé change, si le montant des jetons d'une partie tombe à 0, le DLMM définira le bin actuellement activé en fonction de la situation réelle dans le pool, comme le bin suivant à gauche ou à droite. Cela permet de faire évoluer le prix dans le pool.
Lors de la fourniture de liquidités dans le LP, le DLMM propose 3 stratégies, à savoir Spot, Curve et Bid Ask.
Parmi eux, le Spot est le plus universel, pratiquement tous les pools de liquidité sont assez adaptés, ce qui en fait une stratégie de liquidité très simple.
Curve est plus adapté aux pools où les variations de prix sont très faibles, comme les paires de stablecoins. Les fluctuations de prix dans ces pools sont très faibles, comme le révèle sa forme, en concentrant les fonds des LP dans cette zone, ce qui permet de maximiser les frais de transaction.
Les offres et les demandes sont donc plus adaptées aux pools où les fluctuations de prix sont très importantes. Les gens ont toujours tendance à effectuer davantage de transactions d'arbitrage dans ces pools, où il peut être difficile de concentrer le prix dans une petite plage. Cette stratégie nécessite généralement que les LP ajustent fréquemment leur position pour éviter que le prix ne sorte de la plage de fonds qu'ils ont fixée. Étant donné qu'elle implique un jugement sur le marché, cela n'est généralement pas facile.
Résumé
L'AMM, en tant qu'élément essentiel du domaine financier Web3, propulse la popularisation et le développement de la finance décentralisée grâce à ses mécanismes uniques et innovants. Avec les avancées technologiques continues et l'amélioration de l'écosystème, l'AMM devrait jouer un rôle encore plus important à l'avenir, transformant davantage le paysage de la finance traditionnelle.
Le contenu est fourni à titre de référence uniquement, il ne s'agit pas d'une sollicitation ou d'une offre. Aucun conseil en investissement, fiscalité ou juridique n'est fourni. Consultez l'Avertissement pour plus de détails sur les risques.
Recherche AMM sur l'écosystème Solana
Rédigé par : ZAN
Dans l'état actuel de l'industrie Web3, les produits liés à DeFi occupent une part de marché absolue. Parmi ceux-ci, les AMM (Automated Market Maker, teneurs de marché automatisés) jouent un rôle clé et sont de puissants moteurs des changements dans la finance Web3. Cet article présentera plusieurs réalisations importantes d'AMM dans l'écosystème Solana, en espérant offrir une aide aux LP (Liquidity Provider, fournisseurs de liquidités) sur la manière de choisir leur stratégie d'investissement.
CPMM
CPMM (Market Maker à produit constant) en tant que mise en œuvre AMM la plus basique, se retrouve dans de nombreux produits. Ici, nous prenons l'exemple de l'AMM à produit constant basé sur Raydium. Le produit constant signifie que la quantité de deux types de jetons dans le pool a un produit fixe : X * Y = k.
Pour les fournisseurs de liquidité, lorsque quelqu'un ajoute de la liquidité (ajoute des actifs) à la piscine, le CPMM crée automatiquement un compte associé à l'adresse du portefeuille et émet un LP Token (chaque paire de jetons a son propre LP Token Mint). Ce LP Token sert à prouver que l'adresse du portefeuille détient une part d'une piscine donnée et sera détruit lors du retrait des fonds par le fournisseur de liquidité.
Le programme on-chain de CPMM est développé avec Anchor, et le code du programme peut être trouvé. Voyons rapidement comment il réalise le produit constant.
Tout d'abord, lorsque les utilisateurs utilisent le CPMM de Raydium pour échanger des jetons, cela déclenchera des instructions liées à l'échange.
Par exemple (uniquement à titre d'illustration, cet article ne prend aucune responsabilité pour aucun Token) : lorsque l'utilisateur souhaite échanger des USDC contre des TRUMP, il peut procéder à l'échange via le pool TRUMP-USDC.
Par exemple, regardons cette transaction, pour simplifier, ignorons les autres instructions dans la transaction et concentrons-nous sur la partie Raydium. Trouvez Raydium CPMM : swapBaseInput :
Dans les Comptes d'Entrée, nous pouvons voir que le token d'entrée est USDC et le token de sortie est TRUMP. Dans l'AMM de l'écosystème Solana, le LP Pair peut être simplement représenté par le Token Account, sans avoir besoin de créer un nouveau contrat et de le déployer (comme le contrat de factory couramment utilisé sur Ethereum). Lorsqu'une transaction se produit, elle interagit directement avec le Programme CPMM de Raydium. Le programme Solana modifie l'état du Token Account correspondant en utilisant l'adresse de la piscine, l'adresse du token, etc., pour effectuer l'opération de swap.
Par exemple, la commande swapBaseInput mentionnée ci-dessus peut être trouvée ici. Après une série de vérifications préalables, le montant exact de jetons cibles pouvant être échangés a été calculé dans ConstantProductCurve.swap_base_input_without_fees :
Le formule utilisée est :
Ainsi, après que les quantités totales de TokenX et TokenY ont changé, leur produit doit rester constant. Le côté gauche de l'équation représente le produit après changement, tandis que le côté droit représente le produit avant changement.
L'équation ci-dessus, après transformation mathématique, permet d'obtenir la formule de conversion Δy (c'est-à-dire le nombre de jetons y que nous pouvons échanger) :
c'est-à-dire la partie delta_y = (delta_x * y) / (x + delta_x) dans le code. Notez que ce calcul n'inclut pas les frais, qui ont déjà été déduits dans la logique préalable de swap_base_input.
CLMM
CLMM (Créateur de Marché de Liquidité Concentrée) est également un AMM lancé par Raydium, similaire à Uniswap V3, chaque paire de jetons ayant plusieurs niveaux de frais, permettant de créer un pool correspondant à chaque niveau.
Puisque la mise en œuvre de CLMM s'inspire de Uniswap V3, de nombreux concepts et méthodes d'implémentation peuvent être référencés dans la mise en œuvre de Uniswap lors de son apprentissage. Elle hérite également des concepts de Uniswap tels que tick, multiples niveaux de frais, liquidité concentrée, etc. Plus de contenu peut être trouvé dans le cours de développement DEX proposé par ZAN : DEX Development Practice - Uniswap Code Analysis - How Uniswap works - ZAN
Cependant, il est important de noter que, comme avec les CPMM, en raison des caractéristiques de la chaîne Solana, le CLMM de Raydium ne nécessite pas de déployer un contrat séparé pour chaque pool, donc il n'y a pas non plus de concept de contrat de fabrique. Cela diffère d'Uniswap.
CLMM permet aux fournisseurs de liquidité de sélectionner une fourchette de prix lors de l'injection de fonds, les fonds ne seront distribués que dans la fourchette sélectionnée :
Dans le cas des pools de liquidité concentrée, les jetons sont respectivement situés de chaque côté du prix actuel. La plage de prix choisie dans l'image ci-dessus inclut le prix actuel, de sorte que les fonds seront répartis entre les deux types de jetons dans le pool.
Nous pouvons également injecter un seul type de jeton pour fournir ce qu'on appelle une liquidité unilatérale (comme le montre l'image ci-dessous). Cela ressemble un peu aux ordres à cours limité dans le modèle financier traditionnel, les fonds du LP ne seront utilisés que lorsque le prix du jeton atteint une certaine fourchette, mais ce modèle comporte également plus de points de risque à considérer.
En général, pour les pools avec peu de fluctuations de prix, les LP ont tendance à choisir une plage un peu plus petite ; en revanche, pour ceux avec des fluctuations de prix très importantes, ils ont tendance à choisir une plage un peu plus large. L'objectif est d'éviter autant que possible que le prix actuel s'écarte de la plage de prix choisie, ce qui pourrait entraîner trop de pertes impermanentes.
Il est important de noter que la liquidité concentrée, bien qu'elle puisse augmenter l'utilisation des fonds des LP, impose également des exigences plus élevées en matière de conscience financière aux LP. Les LP doivent gérer leur liquidité de manière plus proactive. Si les LP ne réagissent pas de manière adéquate, les fluctuations fréquentes sur la chaîne peuvent facilement entraîner des pertes impermanentes sévères pour les LP.
DLMM
DLMM ( Dynamic Liquidity Market Maker ) est un produit AMM lancé par Meteora, qui appartient également à Uniswap V3 et est très similaire au CLMM mentionné ci-dessus. DLMM permet également aux LP de concentrer leurs fonds dans une certaine plage autour du prix actuel. Cependant, DLMM présente certaines différences dans sa mise en œuvre et offre quelques fonctionnalités distinctives.
DLMM introduit le concept de Bin, le pool commencera à partir du prix de base, chaque intervalle de Bin step constituant un Bin. Si une transaction se produit dans le même Bin, alors le trader bénéficiera d'un glissement nul. Cela peut considérablement augmenter le volume des transactions et le taux de réussite des transactions, en théorie, les LP peuvent récolter plus de frais de transaction.
Comme avec le CLMM, les jetons dans le pool sont également répartis des deux côtés du prix actuel, un jeton n'a besoin de fournir qu'une seule liquidité. Mais selon le concept de Bin, le Bin actuellement actif (qui indique le prix d'échange actuel) possède deux types de jetons. C'est-à-dire :
Lorsque le montant des jetons dans le bin actuellement activé change, si le montant des jetons d'une partie tombe à 0, le DLMM définira le bin actuellement activé en fonction de la situation réelle dans le pool, comme le bin suivant à gauche ou à droite. Cela permet de faire évoluer le prix dans le pool.
Lors de la fourniture de liquidités dans le LP, le DLMM propose 3 stratégies, à savoir Spot, Curve et Bid Ask.
Parmi eux, le Spot est le plus universel, pratiquement tous les pools de liquidité sont assez adaptés, ce qui en fait une stratégie de liquidité très simple.
Curve est plus adapté aux pools où les variations de prix sont très faibles, comme les paires de stablecoins. Les fluctuations de prix dans ces pools sont très faibles, comme le révèle sa forme, en concentrant les fonds des LP dans cette zone, ce qui permet de maximiser les frais de transaction.
Les offres et les demandes sont donc plus adaptées aux pools où les fluctuations de prix sont très importantes. Les gens ont toujours tendance à effectuer davantage de transactions d'arbitrage dans ces pools, où il peut être difficile de concentrer le prix dans une petite plage. Cette stratégie nécessite généralement que les LP ajustent fréquemment leur position pour éviter que le prix ne sorte de la plage de fonds qu'ils ont fixée. Étant donné qu'elle implique un jugement sur le marché, cela n'est généralement pas facile.
Résumé
L'AMM, en tant qu'élément essentiel du domaine financier Web3, propulse la popularisation et le développement de la finance décentralisée grâce à ses mécanismes uniques et innovants. Avec les avancées technologiques continues et l'amélioration de l'écosystème, l'AMM devrait jouer un rôle encore plus important à l'avenir, transformant davantage le paysage de la finance traditionnelle.