Qu'est-ce qu'une liquidity pool ?

Les liquidity pools (piscine de liquidités) sont le coeur de la DeFI. Elles permettent aux différents services de fonctionner grâce un un afflux de liquidité. Explications.

La DeFI (finance décentralisée) est un secteur en plein boom. Elle propose différents types de services, allant des DEX (exchanges décentralisés) aux systèmes de prêts (comme COMPOUND, par exemple), en passant par toutes sortes de services financiers. Peu à peu se reconstruit, au sein de la DeFI, le système financier existant, mais cette fois, sur fond de blockchain et de décentralisation, et en supprimant les intermédiaires coûteux et superflus.

La liquidité est un facteur clé pour une grande partie de ces activités. Un exchange décentralisé ne peut pas fonctionner sans liquidités : Si vous voulez échanger des BTC contre des USDT, il vous faut quelqu'un en face, prêt à faire l'échange inverse. Si vous voulez hypothéquer des ETH pour qu'on vous prête des DAI, il vous faut également quelqu'un qui soit prêt à le faire. Qu'il s'agisse de prêts, de trading (short, leverage trading, etc), de staking, d'assurances, ou autre, il faut pouvoir s'approvisionner (parfois instantanément) en cryptomonnaies lorsque le client en a besoin.

Les liquidity pools (ou piscine de liquidités) ont été inventées pour répondre efficacement à ce besoin, sans soumettre pour autant les blockchains à un travail trop intense.

C'est quoi, techniquement, une liquidity pool, et comment ça fonctionne ?

Fondamentalement, les piscines de liquidité sont des ensembles de jetons bloqués dans des smart contracts. Les liquidity pools fonctionnent chacune sur une paire de jetons définie (par exemple, BTC/USDT). Le smart contract permet d'échanger des jetons de cette paire, dans un sens ou dans l'autre (BTC contre USDT, et vice-versa).

Dans leur forme la plus simple, une piscine de liquidité détient une quantité donnée de chacun des jetons de sa paire, selon un ratio prédéfini par la pool. Lors de la création de la pool, on fait en général en sorte de mettre la même valeur dans les deux jetons (50/50), car le taux d'échange que la piscine proposera dépend du ratio entre les jetons qu'elle possède. S'il y a une divergence trop grande entre le tarif proposé par la pool et les prix du marché, alors cela créé une opportunité d'arbitrage entre la pool et le reste du marché, qui résultera immédiatement en une perte de capitaux de celle-ci.

Il y a deux publics bien distincts qui utilisent les liquidity pools :

  • les fournisseurs, qui mettent à disposition leurs jetons dans l'optique de gagner des intérêts dessus. C'est ce qu'on appelle le yield farming.
  • les utilisateurs, qui échangent leurs jetons avec la piscine de liquidité, afin d'utiliser l'autre jeton de la paire (par exemple, sur des places de marchés, pour des emprunts, etc).

Par exemple, le leverage trading (qui vous permet de trader plusieurs fois la valeur de votre portefeuille) dans la DeFI utilise ces mécanismes.

Les constant liquidity pools (exemple d'Uniswap)

La première liquidity pool est Bancor, introduit par l'exchange décentralisé Uniswap.

Sur Uniswap, les liquidity pools utilisent un algorithme de constant market making pour être certaines que la quantité de tokens dans la pool reste la même. Cela permet à la pool de s'assurer que les prix se déplacent bien pour suivre ceux du marché.

Voici une petit description de leur fonctionnement, dans le cas d'une liquidity pool sous sa forme la plus basique :

Pour une pool sur la paire X/Y, qui possède un nombre x de jetons X et un nombre y de jetons Y, l'algorithme de prix automatique va tâcher de garder constant le produit x * y. On appellera C cette constante.

Par exemple, si la pool contient 500 BTC et 12500000 USDT (1 BTC = 25000 USDT), la constante C est 6250000000.

Si quelqu'un veut acheter 25 BTC à la pool, il ne payera pas le BTC à 25000 USDT en moyenne, car le prix se déplacera pendant cet achat, comme sur les exchanges classiques lorsqu'on achète au prix du marché (market price).

La pool va s'assurer que la constante C reste inchangée, ce qui va fixer le prix d'achat.

Si avant on avait : 500 * 12500000 = 6250000000 (notre constante C)

Après la transaction on aura : (500-25) * (12500000+P) = 6250000000

Cette équation nous donne P = 657894.73 USDT Soit un prix moyen de 26315 USDT par bitcoin.

Si par contre on n'achète qu'un seul BTC à cette pool, le même calcul nous donnera un prix de 25050 USDT.

Comme sur les marchés financiers, plus on achètera de BTC, plus son prix va s'ajuster à la hausse. Lorsqu'on vend des BTC à la pool, c'est le mécanisme inverse qui s'applique : plus on lui en vend, plus son prix baisse.

Dans l'exemple ci-dessus, la pool n'est pas très grande. En conséquence, le prix réagit fortement aux achats/ventes sur la pool. Une pool peu fournie en liquidité se comporte un peu comme une place de marché sur lequel il y a peu de liquidité : les prix sont très volatiles.

Pour faire descendre cette volatilité, les liquidity pools doivent grandir. Plus elles disposent de liquidités, moins les achats et les ventes sur la pool feront varier le prix des tokens, et plus elles seront efficaces (et sollicitées par les différents acteurs).

Des liquidity pools évoluées

Si Bancor était l'une des formes les plus simples, d'autres liquidity pools ont depuis vu le jour.

Curve, par exemple, adapte son algorithme de manière à gérer plus finement les stablecoins, pour lesquels la piscine de liquidité décrite plus haut n'a pas réellement un algorithme approprié : une petite liquidity pool basé sur une paire de stablecoin pourrait simplement se faire piller.

Balancer, elle, implémente un algorithme plus évolué permettant de ne plus travailler sur des paires de jetons mais sur des tuples plus grand, allant jusqu'à 8 types de jeton différents. Avec Balancer, il est désormais possible de yield farmer avec une partie de son portefeuille, sans avoir à se positionner sur seulement deux cryptomonnaie (dont l'une est souvent un stablecoin). Cette possibilité de diversification est souvent la bienvenue, dans une optique évidente de diminution des risques.

Comment les fournisseurs gagnent des intérêts

Pour les fournisseurs cherchant à faire du yield farming, le modèle est très simple.

Un fournisseur va placer ses jetons dans une pool. En échange, il recevra des jetons de cette pool, qui sont générés par le smart contract, en proportion de leurs "parts" dans la pool.

Lorsque quelqu'un effectue un échange avec la pool, comme avec une place de marché réelle, il paie des frais de transactions à celle-ci. Ce sont les swap fees (frais d'échanges). Uniswap, par exemple, prend une commission de 0.3% de la transaction. Ces frais sont accumulés dans la piscine de liquidité.

Au moment ou le fournisseur retirera ses fonds de la pool (en échangeant ses "parts", ses jetons de la pool), il récupèrera son investissement initial, plus une partie des "swap fees" qui ont été généré pendant le temps de son investissement, au prorata de ses parts dans la pool.

Avantages et risques des liquidity pools pour les fournisseurs

Avantages

Anonymat et décentralisation

Les liquidity pools sont un placement financier, mais en version anonyme. Pas de KYC, pas d'autorité globale, juste un smart contract.

Un ROI (Retour sur investissement) puissant

Les liquidity pools permettent à n'importe qui de devenir market maker et de profiter de ces rendements habituellement plus haut que le staking, là ou la finance classique requiert des investissements souvent hors de portée pour le commun des mortels.

Pas d'intermédiaire

Personne ne se sert au passage, c'est un simple smart contract. Les frais sont connus à l'avance et tout le monde peut participer.

Risques

Bug et vulnérabilités

Les liquidity pools résident sur des smart contracts. La sécurité de ceux-ci est dépendante à la fois du code écrit par le/les développeurs et de la blockchain sur laquelle il s'exécute. Une liquidity pool qui fonctionne sur un smart contract hébergé par EOS, par exemple, risquerait de s'éteindre assez vite si le gouvernement chinois décidait d'éteindre la plateforme. A l'inverse, un smart contract fonctionnait sur Ethereum (ou encore mieux, sur Cardano !) bénéficierait d'un environnement décentralisé, et d'outils relativement fiables.

Les jetons de la paire

Evidemment, miser sur une LP implique que vous misiez sur le long terme sur une paire de jeton. Si l'un des jetons se dévalue soudainement, vous ne seriez pas nécessairement en mesure de récupérer rapidement vos jetons pour les échanger.

Fonds insuffisants sur la pool

Sur les nouvelles pools qui se lancent, ou sur les paires sur lesquelles un des deux jetons pourrait être retiré ou dévalué trop vite, les prix de la liquidity pool pourraient devenir trop volatiles, ce qui pourrait créer des opportunités d'arbitrage par rapport au reste du marché. La LP pourrait alors perdre une partie de son capital, et réaliser des gains faibles, ou nuls malgré ses frais de transactions.

Pertes intermittentes

Ce dernier point est un peu compliqué, aussi je vous renvoie à l'article de Binance sur le sujet pour ceux qui désirent des explications approfondies.

En très simple, il peut y avoir des variations sur les prix des jetons entre le moment ou vous les avez déposé et le moment ou vous les retirez.

Lorsque ces variations ont lieu, la pool, elle ne réagit pas. Elle réagira lorsque des trades auront lieu, qui seront souvent, dans ce genre de cas, des arbitrages effectués par des utilisateurs voulant prendre un profit facile (acheter des jetons moins cher sur la liquidity pool et les revendre plus cher sur Binance, par exemple).

Lorsque vous retirez vos jetons, le ratio des jetons sur la piscine ne sera plus le même que lorsque vous les y avez mis. La valeur combinée de ce que vous retirez pourra alors être inférieure que ce que vous y aviez mis. En d'autres termes, vous auriez mieux fait de HODL tout simplement vos jetons.

Ces risques néanmoins sont surtout pertinents sur le court terme, ou pour des actifs à grande volatilité. Sur le long terme, et avec des actifs peu volatils, ils sont insignifiants.