Comment fonctionnent les « automated market makers »
Element indissociable des réserves de liquidité en crypto, les AMM (automated market makers en anglais) permettent d’en mettre les fonds en mouvement, et d’assurer la liquidité des marchés. Voyons comment cela fonctionne en pratique.
Faiseur de transactions
En remplaçant les carnets d’ordres, les réserves de liquidités permettent aux transactions de pouvoir s’effectuer en environnement décentralisé. Cependant, une réserve à elle seule n’est pas suffisante, et elle doit être associée à un algorithme qui agira en tant que contrepartie, puisant dans la réserve, pour les transactions qui se présentent. Cet algorithme vise à garantir les deux objectifs qui répliquent du carnet d’ordre pour une place de marché centralisée :
- Assurer la liquidité, et donc la faisabilité des transactions dans un temps acceptable
- Garantir les prix des transactions afin de garder un équilibre des monnaies présentes dans la réserve
L’exemple d’Uniswap
Chaque place de marché utilise son propre algorithme d’AMM, bien qu’ils aient tous en commun d’être implémentés via la technologie des Smart Contracts présents dans la chaine Ethereum. Voyons comment fonctionne celui d’Uniswap.
Pour chaque paire d’échange (Ethereum vs une autre crypto), Uniswap maintient une réserve d’argent. Le coeur de son algorithme est de garder cette réserve aussi proche d’un équilibre 50/50 pour les deux monnaies présentes.
Cela prend la forme d’une formule extrêmement simple :
x * y = k
- X est ici la valeur de la monnaie A
- Y est la valeur de la monnaie B
- K est une constante.
Prenons un exemple pour le voir en fonctionnement. Dans le pool ETH/USDT, imaginons qu’il y ait 10 ETH valant initialement chacun $3500 (valeur X) et 35000 USDT valant chacun $1 (valeur Y). La constante K est donc :
x * y = k => (10 * 3500) * (35000 * 1) = 1225000000 => k = 1225000000
Le but est que, malgré les échanges, cette constance ne change jamais. La valeur initiale est ici de 1 ETH pour 3500 USDT.
Imaginons que lors du premier échange, une personne achète 1 ETH contre 3500 USDT. Il en reste 9 dans la réserve, le nouveau prix sera donc calculé comme suit :
x * y = k <=> x = k / y => x = 1225000000 / (1 * (35000 + 3500)) => x = 38888
La nouvelle valeur des ETH de la réserve est $31818. Il y en a 9 ETH, 38888 / 9 = $4320 qui sera le nouveau prix où pourra s’échanger le ETH.
Ce calcul très simple permet de répliquer l’impact qu’a l’offre et la demande sur les prix. Imaginons le cas très improbable où, au lieu d’acheter 1 ETH de notre réserve, une personne souhaite en acheter 9, soit 90% de ce que possède la réserve. Le calcul sera alors :
x * y = k <=> x = k / y => x = 1225000000 / (1 * (35000 + 9 * 3500)) => x = 18421
La nouvelle valeur des ETH de la réserve est $18421. Il n’y en a plus qu’un, ce qui monte son prix à $18421. La rareté entraîne donc la hausse des prix, comme dans n’importe quelle mécanique de marché.
Chaque place d’échange maintient ainsi son propre prix. La fluidité et la liquidité entre elles s’assurent qu’il n’y ait pas trop de différences d’une place à l’autre, mais le prix d’une même monnaie varie toujours un peu. Certains en profitent pour faire de l’arbitrage, tirant avantage d’une même monnaie achetée moins chère sur un échange et revenue à un prix supérieur sur un autre.
Les autres algorithmes
L’algorithme utilisé par Uniswap est un des plus simples à comprendre et à mettre en oeuvre. Binance par exemple utilise une forme de relation mathématique beaucoup plus complexe qui permet aux utilisateurs de combiner jusqu’à 8 actifs numériques dans une seule réserve de liquidités. Curve quant à lui, adopte une formule mathématique adaptée à l’association de pièces stables ou d’actifs similaires.
Bien que leurs méthodes de calcul divergent, tous ces algorithmes visent au même but, celui de garantir la liquidité et la cohérence des prix dans les échanges décentralisés.