Dans l'état actuel de l'industrie Web3, les produits liés à la Finance décentralisée occupent une part de marché absolue. Parmi eux, l'AMM (Automated Market Maker, AMM) est un élément clé et un puissant moteur de changement dans le domaine financier de Web3. Cet article présentera plusieurs implémentations importantes d'AMM dans l'écosystème Solana, espérant offrir une aide aux LP (Liquidity Provider, Fournisseur de liquidité) sur la façon de choisir leur stratégie d'investissement.
CPMM
CPMM (Produit constantMarket Maker) en tant que la mise en œuvre la plus basique de l'AMM, est réalisé dans de nombreux produits. Ici, nous prenons l'exemple de l'AMM basé sur le produit constant lancé par Raydium. Le produit constant signifie que les quantités de deux tokens dans le pool ont un produit fixe : X * Y = k.
Pour les fournisseurs de liquidité, lorsque quelqu'un ajoute de la liquidité (ajoute des actifs) dans le pool, le CPMM crée automatiquement un compte associé à l'adresse du portefeuille et émet un LP Token (chaque paire de tokens ayant son propre LP Token Mint). Ce LP Token sert à prouver que l'adresse du portefeuille détient une part d'un certain pool et sera détruit lors du retrait de liquidité par le fournisseur.
Le programme on-chain de CPMM est développé avec Anchor, et le code source peut être trouvé à . Voici un bref aperçu de la façon dont il réalise un produit constant.
Tout d'abord, lorsque les utilisateurs échangent des jetons via le CPMM de Raydium, cela déclenchera des instructions liées au swap.
Par exemple (uniquement à des fins d'illustration, cet article ne prend la responsabilité d'aucun Token) : lorsque l'utilisateur souhaite échanger des USDC contre des TRUMP, il peut effectuer l'échange via le pool TRUMP-USDC.
Par exemple, examinons cette transaction. Pour simplifier, ignorons les autres instructions dans la transaction et concentrons-nous uniquement sur la partie Raydium. Trouvez Raydium CPMM : swapBaseInput :
Dans les comptes d’entrée, nous pouvons voir que le jeton d’entrée est USDC et le jeton de sortie est TRUMP. Dans l’AMM de l’écosystème Solana, LP Pair peut être simplement représenté par un compte Token sans qu’il soit nécessaire de créer un nouveau programme de contrat et de le déployer (comme le contrat d’usine couramment utilisé dans Ethereum). Lorsque la transaction a lieu, interagissez directement avec le programme CPMM de Raydium, et le programme Solana modifiera le statut du compte de jeton correspondant via l’adresse du pool entrant, l’adresse du jeton, etc., pour effectuer des opérations d’échange.
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 est calculé dans ConstantProductCurve.swap_base_input_without_fees :
La formule utilisée est :
Ainsi, après que la quantité totale de TokenX et de TokenY ait changé, leur produit doit rester constant. Le côté gauche de l'équation représente le produit après le changement, et le côté droit représente le produit avant le changement.
La formule de conversion pour Δy (c'est-à-dire le nombre de jetons y que nous pouvons échanger) peut être obtenue par transformation mathématique de l'équation ci-dessus :
C'est donc 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, il est similaire à Uniswap V3, chaque paire de tokens ayant également plusieurs niveaux de frais, permettant de créer un pool correspondant à chaque niveau.
Étant donné que la mise en œuvre de CLMM s'inspire de Uniswap V3, de nombreux concepts et méthodes de mise en œuvre peuvent être référencés dans l'implémentation de Uniswap. Il hérite également des concepts de Uniswap tels que tick, plusieurs niveaux de frais, et liquidité concentrée. Plus de contenu peut être trouvé dans le cours de développement DEX proposé par ZAN : DEX Development Practice - Analyse du code Uniswap - Comment fonctionne Uniswap - ZAN
Cependant, il est important de noter qu'en raison des caractéristiques de la chaîne Solana, le CLMM Raydium ne nécessite pas le déploiement d'un contrat séparé pour chaque pool, il n'y a donc pas de concept de contrat de fabrique. Cela diffère d'Uniswap.
CLMM permet aux fournisseurs de liquidité de choisir une plage de prix lors de l'injection de fonds, les fonds seront uniquement répartis dans la plage sélectionnée :
Pour les pools de liquidité centralisés, les jetons existent respectivement de chaque côté du prix actuel. La plage de prix sélectionnée dans l'image ci-dessus comprend le prix actuel, donc les fonds seront répartis entre les deux types de jetons dans le pool.
Nous pouvons également n'injecter qu'un seul type de jeton pour fournir ce que l'on appelle de la liquidité unilatérale (comme le montre la figure ci-dessous). Cela ressemble un peu aux ordres à cours limité dans les modèles financiers traditionnels, où les fonds du fournisseur de liquidité ne sont utilisés que lorsque le prix du jeton atteint une certaine plage, bien que ce modèle comporte également davantage 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 plus petite ; en revanche, pour ceux avec des fluctuations de prix très importantes, ils ont tendance à choisir une plage plus grande. L'objectif est d'éviter autant que possible que le prix actuel s'éloigne de la plage de prix choisie, ce qui pourrait entraîner des pertes impermanentes trop importantes.
Il est important de noter que la liquidité concentrée, bien qu'elle permette une utilisation plus efficace des fonds des fournisseurs de liquidité, exige également une conscience financière plus élevée de la part des fournisseurs de liquidité. Les fournisseurs de liquidité doivent gérer leur liquidité de manière plus proactive. Si les fournisseurs de liquidité ne réagissent pas correctement, les fluctuations fréquentes sur la chaîne peuvent facilement entraîner des pertes impermanentes importantes pour eux.
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 quelques différences dans sa mise en œuvre spécifique et offre certaines fonctionnalités distinctives.
DLMM introduit le concept de Bin, où le pool commence à un prix de base et chaque intervalle de Bin step constitue un Bin. Si une transaction se produit dans le même Bin, le trader bénéficiera d'un glissement nul. Cela peut considérablement augmenter le volume des transactions et le taux de succès des transactions, théoriquement, les LP pourraient récolter davantage de frais de transaction.
Tout comme avec le CLMM, les tokens dans le pool sont également répartis des deux côtés du prix actuel, un token n'a besoin de fournir qu'une liquidité unilatérale. Cependant, selon le concept de Bin, le Bin actuellement activé (qui indique le prix d'échange actuel) possède deux types de tokens. C'est-à-dire :
Bin actif actuel : Il y a deux jetons présents, l'échange de jetons dans le Bin actuel se fera à un prix fixe, et avec 0 glissement ;
Autres Bin : Distribués des deux côtés du Bin actuellement activé, où il n'existe qu'un seul jeton.
Lorsque la quantité de tokens dans le bin actuellement actif change, si le nombre de tokens d'une partie tombe à 0, le DLMM définira le bin actuellement actif comme étant le prochain bin à gauche ou à droite, en fonction de la situation réelle dans le pool. Cela permet de faire évoluer le prix dans le pool.
Lorsqu'un fournisseur de liquidité (LP) fournit de la liquidité, 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 relativement adaptés, ce qui en fait une des stratégies de liquidité les plus simples.
Curve est donc mieux 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 fournisseurs de liquidité dans cette plage, il est possible de maximiser les frais de transaction.
Le Bid Ask est alors plus adapté aux pools dont la volatilité des prix est très élevée. Les gens ont toujours tendance à effectuer davantage de transactions d'arbitrage dans ces pools, et il peut être difficile de concentrer les prix dans une petite plage. Cette stratégie nécessite généralement que le fournisseur de liquidité ajuste fréquemment sa position pour éviter que le prix ne s'éloigne de la plage de fonds qu'il a définie. Étant donné qu'elle implique un jugement du marché, cela n'est généralement pas facile.
Résumé
L'AMM, en tant qu'élément important du domaine financier Web3, promeut la popularisation et le développement de la Finance décentralisée grâce à ses mécanismes uniques et à son innovation. Avec les progrès technologiques continus et l'amélioration de l'écosystème, l'AMM devrait jouer un rôle encore plus grand à l'avenir, modifiant 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 dans l'écosystème Solana : le code sous-jacent derrière la haute Liquidité
Dans l'état actuel de l'industrie Web3, les produits liés à la Finance décentralisée occupent une part de marché absolue. Parmi eux, l'AMM (Automated Market Maker, AMM) est un élément clé et un puissant moteur de changement dans le domaine financier de Web3. Cet article présentera plusieurs implémentations importantes d'AMM dans l'écosystème Solana, espérant offrir une aide aux LP (Liquidity Provider, Fournisseur de liquidité) sur la façon de choisir leur stratégie d'investissement.
CPMM
CPMM (Produit constant Market Maker) en tant que la mise en œuvre la plus basique de l'AMM, est réalisé dans de nombreux produits. Ici, nous prenons l'exemple de l'AMM basé sur le produit constant lancé par Raydium. Le produit constant signifie que les quantités de deux tokens dans le pool ont un produit fixe : X * Y = k.
Pour les fournisseurs de liquidité, lorsque quelqu'un ajoute de la liquidité (ajoute des actifs) dans le pool, le CPMM crée automatiquement un compte associé à l'adresse du portefeuille et émet un LP Token (chaque paire de tokens ayant son propre LP Token Mint). Ce LP Token sert à prouver que l'adresse du portefeuille détient une part d'un certain pool et sera détruit lors du retrait de liquidité par le fournisseur.
Le programme on-chain de CPMM est développé avec Anchor, et le code source peut être trouvé à . Voici un bref aperçu de la façon dont il réalise un produit constant.
Tout d'abord, lorsque les utilisateurs échangent des jetons via le CPMM de Raydium, cela déclenchera des instructions liées au swap.
Par exemple (uniquement à des fins d'illustration, cet article ne prend la responsabilité d'aucun Token) : lorsque l'utilisateur souhaite échanger des USDC contre des TRUMP, il peut effectuer l'échange via le pool TRUMP-USDC.
| | | | | --- | --- | --- | | Piscine | TRUMP | USDC | | 7XzVsjqTebULfkUofTDH5gDdZDmxacPmPuTfHa1n9kuh | 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
Par exemple, examinons cette transaction. Pour simplifier, ignorons les autres instructions dans la transaction et concentrons-nous uniquement sur la partie Raydium. Trouvez Raydium CPMM : swapBaseInput :
Dans les comptes d’entrée, nous pouvons voir que le jeton d’entrée est USDC et le jeton de sortie est TRUMP. Dans l’AMM de l’écosystème Solana, LP Pair peut être simplement représenté par un compte Token sans qu’il soit nécessaire de créer un nouveau programme de contrat et de le déployer (comme le contrat d’usine couramment utilisé dans Ethereum). Lorsque la transaction a lieu, interagissez directement avec le programme CPMM de Raydium, et le programme Solana modifiera le statut du compte de jeton correspondant via l’adresse du pool entrant, l’adresse du jeton, etc., pour effectuer des opérations d’échange.
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 est calculé dans ConstantProductCurve.swap_base_input_without_fees :
La formule utilisée est :
Ainsi, après que la quantité totale de TokenX et de TokenY ait changé, leur produit doit rester constant. Le côté gauche de l'équation représente le produit après le changement, et le côté droit représente le produit avant le changement.
La formule de conversion pour Δy (c'est-à-dire le nombre de jetons y que nous pouvons échanger) peut être obtenue par transformation mathématique de l'équation ci-dessus :
C'est donc 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, il est similaire à Uniswap V3, chaque paire de tokens ayant également plusieurs niveaux de frais, permettant de créer un pool correspondant à chaque niveau.
Étant donné que la mise en œuvre de CLMM s'inspire de Uniswap V3, de nombreux concepts et méthodes de mise en œuvre peuvent être référencés dans l'implémentation de Uniswap. Il hérite également des concepts de Uniswap tels que tick, plusieurs niveaux de frais, et liquidité concentrée. Plus de contenu peut être trouvé dans le cours de développement DEX proposé par ZAN : DEX Development Practice - Analyse du code Uniswap - Comment fonctionne Uniswap - ZAN
Cependant, il est important de noter qu'en raison des caractéristiques de la chaîne Solana, le CLMM Raydium ne nécessite pas le déploiement d'un contrat séparé pour chaque pool, il n'y a donc pas de concept de contrat de fabrique. Cela diffère d'Uniswap.
CLMM permet aux fournisseurs de liquidité de choisir une plage de prix lors de l'injection de fonds, les fonds seront uniquement répartis dans la plage sélectionnée :
Pour les pools de liquidité centralisés, les jetons existent respectivement de chaque côté du prix actuel. La plage de prix sélectionnée dans l'image ci-dessus comprend le prix actuel, donc les fonds seront répartis entre les deux types de jetons dans le pool.
Nous pouvons également n'injecter qu'un seul type de jeton pour fournir ce que l'on appelle de la liquidité unilatérale (comme le montre la figure ci-dessous). Cela ressemble un peu aux ordres à cours limité dans les modèles financiers traditionnels, où les fonds du fournisseur de liquidité ne sont utilisés que lorsque le prix du jeton atteint une certaine plage, bien que ce modèle comporte également davantage 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 plus petite ; en revanche, pour ceux avec des fluctuations de prix très importantes, ils ont tendance à choisir une plage plus grande. L'objectif est d'éviter autant que possible que le prix actuel s'éloigne de la plage de prix choisie, ce qui pourrait entraîner des pertes impermanentes trop importantes.
Il est important de noter que la liquidité concentrée, bien qu'elle permette une utilisation plus efficace des fonds des fournisseurs de liquidité, exige également une conscience financière plus élevée de la part des fournisseurs de liquidité. Les fournisseurs de liquidité doivent gérer leur liquidité de manière plus proactive. Si les fournisseurs de liquidité ne réagissent pas correctement, les fluctuations fréquentes sur la chaîne peuvent facilement entraîner des pertes impermanentes importantes pour eux.
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 quelques différences dans sa mise en œuvre spécifique et offre certaines fonctionnalités distinctives.
DLMM introduit le concept de Bin, où le pool commence à un prix de base et chaque intervalle de Bin step constitue un Bin. Si une transaction se produit dans le même Bin, le trader bénéficiera d'un glissement nul. Cela peut considérablement augmenter le volume des transactions et le taux de succès des transactions, théoriquement, les LP pourraient récolter davantage de frais de transaction.
Tout comme avec le CLMM, les tokens dans le pool sont également répartis des deux côtés du prix actuel, un token n'a besoin de fournir qu'une liquidité unilatérale. Cependant, selon le concept de Bin, le Bin actuellement activé (qui indique le prix d'échange actuel) possède deux types de tokens. C'est-à-dire :
Lorsque la quantité de tokens dans le bin actuellement actif change, si le nombre de tokens d'une partie tombe à 0, le DLMM définira le bin actuellement actif comme étant le prochain bin à gauche ou à droite, en fonction de la situation réelle dans le pool. Cela permet de faire évoluer le prix dans le pool.
Lorsqu'un fournisseur de liquidité (LP) fournit de la liquidité, le DLMM propose 3 stratégies, à savoir Spot, Curve et Bid Ask.
Résumé
L'AMM, en tant qu'élément important du domaine financier Web3, promeut la popularisation et le développement de la Finance décentralisée grâce à ses mécanismes uniques et à son innovation. Avec les progrès technologiques continus et l'amélioration de l'écosystème, l'AMM devrait jouer un rôle encore plus grand à l'avenir, modifiant davantage le paysage de la finance traditionnelle.