Guida alla DeFi: Exchange decentralizzati

0xstepit
Terra Network Italia
11 min readDec 5, 2021

Introduzione

In questa guida andremo ad approfondire da un punto di vista tecnico che cosa sono gli exchange. In particolare, andremo a vedere quali sono le caratteristiche principali di un exchange decentralizzato, la base di una delle applicazioni più prospere della blockchain: la finanza decentralizzata. Approfondiremo i modelli che ne costituiscono le fondamenta, come utilizzarli e quale scegliere facendo attenzione alle possibili complicazioni che potrebbero nascere. Per chi di voi non sapesse cosa si intende con finanza decentralizzata vi lascio il link alla mia prima guida.

Se siete curiosi di capire come funzionano questi strumenti, molto spesso utilizzati senza ben comprenderne il meccanismo, siete nel posto giusto e vi auguro una buona lettura!

Gli exchange sono quei luoghi dove gli utenti possono acquistare o vendere un certo prodotto. Facciamo un esempio, Alice vuole scambiare una mela rossa 🍎 con una mela verde 🍏 e Bob, guarda che fortuna, vuole scambiare una mela verde 🍏 con una mela rossa 🍎. Ottimo, Alice e Bob potrebbero soddisfare uno le esigenze dell’ altro ed essere entrambi contenti. Dove sta il problema quindi? Il problema è che questi due individui potrebbero non conoscersi o potrebbero essere ai due poli opposti della terra. Gli exchange permettono ad utenti che vogliono comprare, vendere o scambiare asset di incontrarsi e di mettersi d’accordo. Oltre a questo, gli exchange permettono in modo naturale di far scoprire qual è il prezzo di un asset.

Exchange con order book

Nei sistemi di finanza tradizionale, la richiesta di scambio di Alice e di Bob sarebbe stata eseguita attraverso un order book. Un order book può essere visto come composto da due grossi elenchi:

  • Uno che contiene le quantità e il prezzo di un asset che le persone vogliono vendere.
  • L’ altro le stesse informazioni per l’ asset che le persone vogliono acquistare.

Nell’immagine di sotto ho riportato un esempio grafico di questo strumento preso dall’ exchange di Binance. Sulla destra potete vedere in rosso l’elenco delle proposte di vendita e in verde quello delle proposte di acquisto. Non pensiamo per ora al grafico sulla sinistra, lo considereremo fra poco.

Sull’asse orizzontale abbiamo il prezzo e sul verticale il numero di ordini a quel prezzo

Per comprendere come funziona un exchange di questo tipo possiamo assumere che non esistano le quantità ma solo i prezzi, ovviamente non ha senso come assunzione ma è molto comoda per iniziare a capirne il funzionamento. Quando nell’ order book sono presenti due richieste di transazioni allo stesso prezzo, una di vendita e una di acquisto, queste vengono eseguite ed eliminate dall’order book. 🔄

Ottimo, tutto molto lineare. Questo tipo di exchange serve per mettere in contatto persone che hanno volontà speculari. Introducendo anche la variabile della quantità, quello che succede è che se in acquisto si vuole prendere una quantità minore di quella in vendita, sempre considerando due richieste allo stesso prezzo, allora una parte degli asset rimarrà ancora in vendita. Se viceversa, l’ordine di acquisto richiede più asset di quello in vendita allora rimarrà aperto un altro ordine con la restante parte che voleva essere acquistata, e verrà soddisfatta appena troverà la sua anima gemella. ❤️

Un parametro molto importante di un exchange che funziona attraverso un order book è la sua liquidità e quindi la quantità di richieste di vendita e di acquisto nel mercato. Più un mercato è liquido e meno variazioni di prezzo ci saranno per grossi ordini. Prendiamo come esempio questa serie di ordini di vendita per la coppia USDT-BTC:

Se noi volessimo comprare 0.8 BTC andremo a prendere tutte le quantità dei primi 3 ordini (quelli più in basso) e una parte del 4. A questo punto rimarrebbe aperto un ordine di vendita di 0,0694 BTC (0.04717+0.00024+0.16184+0.59769–0,8) a 61240,49 dollari.

Il prezzo di acquisto sarà una media pesata dei BTC ottenuti dai vari ordini.

Con questo esempio è facile capire che se un mercato non è liquido il prezzo di acquisto ne risente. Immaginatevi di eliminare dal grafico una riga si e una no (rendendo quindi l’order book meno liquido). Lo stesso ordine di acquisto verrebbe effettuato a un prezzo di carico più alto!

I principali vantaggi di questo meccanismo sono la possibilità di avere diversi indicatori sotto mano come i trend del prezzo, le candele giapponesi e molto altro. E’ possibile impostare anche ordini articolati come i limit order in cui viene innescato l’ordine di acquisto solo a un certo prezzo.

Un altro vantaggio è che se l’order book è abbastanza profondo si ha un basso slippage e poco spread rendendo quindi lo strumento conveniente per l’acquisto o vendita di un asset.

SPREAD: è la differenza fra il prezzo di acquisto e di vendita di un asset.

SLIPPAGE: differenza fra il prezzo a cui si imposta un ordine e il prezzo al quale viene eseguito. E’ presente per gli ordini di mercato e non i limit order.

I principali svantaggi di questo sistema è che se non vi è abbastanza liquidità è molto difficile che un ordine venga eseguito. Un altro problema legato a questo tipo di mercati, in un contesto di finanza su blockchain, è la grande quantità di dati che sarebbe necessario scrivere e che comporterebbe un elevato costo in termini di fee. La grande quantità di dati sarebbe dovuta a tutte le possibilità di ordini che un utente può inserire, facili da gestire con un database tradizionale ma troppo oneroso per un sistema on-chain.

Ok, direi che possiamo dire di aver capito come funziona un mercato con order book. Non approfondiremo oltre questo concetto poiché nell’ambito della DeFi il mercato viene gestito, nella maggior parte dei protocolli, in maniera molto diversa. Ho scritto la maggior parte perché esistono comunque degli exchange decentralizzati che ne fanno uso (un esempio è Serum su Solana), ma a noi interessano le cose più innovative e quindi ci soffermeremo sugli exchange con automated market maker o AMM. 😎

Exchange con AMM

Vediamo subito di creare una situazione che ci servirà per comprendere il perché della nascita di questi exchange e di quale necessità vanno a colmare. Immaginiamo che Alice sia un persona molto ricca, talmente ricca da far parte delle cosiddette balene 🐳 delle cripto. Essendo molto ricca non cerca la fortuna ma un guadagno semplice e sicuro e vuole mettere a disposizione le proprie monete per altre persone che vogliono fare trade guadagnando così dalle fee pagate da questi utenti. Bob invece, è un semplice risparmiatore, che dopo aver compreso il funzionamento di Bitcoin vuole cominciare ad acquistarlo. Vi è quindi la necessità da parte di questi due utenti di trovare una persona fidata a cui affidare i propri soldi (per Alice) o da cui poter comprare (per Bob). Come sappiamo, la necessità di una terza parte fidata è una cosa ormai passata, utilizzando la DeFi possiamo rimuovere questo intermediario e affidarci solo agli smart contract. 😏

Gli AMM intervengono a colmare la necessità appena descritta, questi permetteranno sia ad Alice che a Bob di soddisfare le proprie necessità incontrandosi on-chain.

Come prima cosa vediamo quali sono i soggetti coinvolti in un AMM:

  • Traders: sono gli untenti che depositano un token per riceverne un altro effettuando così dei trade (Bob).
  • Liquidity providers: sono gli utenti che depositano coppie di token per creare le pool di liquidità con le quali costruire il mercato (Alice).
  • Arbitrageurs: sfruttano differenze di prezzo nei vari mercati per regolare il prezzo negli AMM su quello reale ottenendo un guadagno.

Liquidity pool

L’idea dietro un AMM è quella di incaricare uno smart contract di fare il mercato e quindi di mettere a disposizione dei trader della liquidità e di quotare in maniera continuativa il prezzo dei prodotti venduti nel mercato. Tutto questo è stato reso possibile grazie alle cosiddette pool di liquidità. Queste non sono altro che degli smart contract ai quali gli utenti possono affidare una coppia di monete in egual misura in termini di valore corrispettivo.

Un trader potrà acquistare una delle due monete all’ interno della pool semplicemente depositando l’altra moneta e pagando una fee. Quando un utente fornisce alla pool della liquidità riceverà in cambio dei token LP che stanno a rappresentare la percentuale delle monete appena depositate all’interno della pool. Oltre a permettere di capire la fetta di ogni utente all’interno della pool totale, gli LP permetteranno di guadagnare attraverso le fee pagate dagli utenti. Questo è il modo in cui un AMM soddisferà le necessità di Alice e Bob.

NOTA: se depositate degli LP in una pool non ne vedrete aumentare il numero nel tempo ma aumenterà la quantità che preleverete poiché verranno aggiunte le fee nella pool. Il 10% di 100 è 10 mentre di 110 è 11 (dove il +10 rappresenta le fee introdotte).

Facciamo un breve esempio per meglio capirne il funzionamento. Consideriamo la pool, e quindi il mercato, di UST 💲 e BTC ₿.

  • UST è una stablecoin algoritmica ancorata al dollaro e quindi 1 UST == 1 USD.
  • Assumiamo che 1 BTC == 1000 USD. (magari…)

Per far si che la pool sia utile al mercato dovrà contenere della liquidità. Nessun problema, la nostra Alice è qui per questo! Alice potrà depositare le due monete in egual misura, ad esempio potrà depositare 10 BTC (10 x 1000 = 10.000 USD) e 10.000 UST per ricevere in cambio degli LP. Assumendo che nella pool ci siano un totale equivalente di 100.000 USD, gli LP appena ricevuti staranno ad indicare che Alice possiede il 20% della liquidità nella pool.

A questo punto, un qualsiasi utente, come ad esempio Bob, potrà depositare nella pool BTC per ricevere UST o il contrario. Oltre a depositare una delle due monete ogni trade richiederà anche il pagamento di una fee che verrà aggiunta alla pool. In questo modo, Alice, avrà ricevuto il 20% delle fee pagate da Bob.

Nota bene che ho scritto UN QUALSIASI UTENTE, si, gli exchange decentralizzati sono permissionless e quindi chiunque può utilizzarli.

Di seguito vi ho riportato un’ infografica sul funzionamento generale di una pool. Alice è rappresentata da una bellissima Galactic Punk (GP) con ali spaziali e il nostro Bob dal un-pò-meno-bello GP zombie.

NOTA: ogni DEX possiede le sue pool e di conseguenza conia dei token LP relativi al proprio mercato. Non potete creare degli LP in un DEX e poi depositarli in un altro poiché farebbero riferimento a quantità diverse.

Tipologie di AMM

Benissimo, abbiamo capito come funziona una pool di liquidità. Le domande che sorgono naturali adesso sono, ma come viene deciso quanti BTC ricevo depositando una certa quantità di UST? Quanto sto pagando? Come si adatta una pool alle variazioni di prezzo del mercato? Non esiste una sola risposta a questa domanda ma dipende dal tipo di smart contract che gestisce la pool. Vedremo adesso tre esempi di AMM e risponderemmo a queste domande per ognuno di essi.

Gli AMM fanno uso di particolari curve matematiche che vanno a vincolare l’andamento del prezzo su determinate traiettorie. Nell’immagine di sotto sull’asse x avete il prezzo del token X e sull’asse y quello dello token Y. Sono riportate 3 tipologie di curve che vanno a definire 3 tipologie diverse di mercato

NOTA: Nell’immagine sotto l’unità di misura è il prezzo ma può essere visto in maniera equivalente come se fosse le quantità dei due token.

https://curve.fi/files/stableswap-paper.pdf

Cosa si intende che il prezzo è vincolato a muoversi lungo una traiettoria? Immaginiamo di trovarci come stato iniziale sul puntino nero dove la pool sarà composta da 5 token X e 5 token Y. Un utente adesso vuole fare un trade fra i due token vendendo 5 token X e andando quindi a portarne il totale a 10. La curva utilizzata ci permette di capire quanti token Y rimarranno nella pool e di conseguenza quanti l’utente ne riceverà. I puntini viola, blu e rosso stanno ad indicare quale sarà lo stato della pool a seguito del trade, e come potete vedere ogni curva permetterà di avere la pool in una situazione diversa.

Perché dovrebbe esistere diverse curve? Non ne basta una sola? La risposta ovviamente e no e vedremo brevemente il perché.

  • Costant price AMM: in questo tipo di curva per ogni token depositato se ne riceve uno indietro. Il vantaggio è che non si ha slippage ma la pool può essere prosciugata (proprio come nell’esempio sopra). A causa di questo problema nessun AMM la implementa ma ci servirà per capire il funzionamento di quelli successivi.
  • Uniswap invariant: questo modello permette di impedire che una pool venga prosciugata ma per grossi volumi di trade si può avere un grosso slippage. Gli AMM basati su questa curva sono utilizzati per trade fra token che hanno un prezzo diverso fra di loro ma non va bene per trade fra stablecoin e pegged token. Il motivo è che il rapporto di scambio non potrà mai essere 1:1 cosa che è invece necessaria fra due token con lo stesso valore.
  • Stableswap invariant: questo modello mette assieme i due modelli precedenti e permette di effettuare in modo efficiente gli scambi fra token pegged o stablecoin.

Pericoli

E’ importante essere a conoscenza anche delle possibile problematiche che un utente può riscontrare nell’utilizzo di automated market maker. Non approfondiremo nel dettaglio questo argomento perché merita una guida a parte ma vorrei comunque accennarvi qualcosa:

  • Essendo il mercato basato su degli smart contract, e quindi su dei codici, vi è sempre la possibilità di bug o problematiche legate a logiche non considerate.
  • Nella DeFi potete interagire con gli AMM attraverso altri protocolli. Questo sistema è legato al concetto della componibilità dei protocolli che può portare a delle problematiche che questi individualmente non possiedono.
  • Vi è il rischio di impermanent loss. Ho scritto un’intera guida su questo topic che vi consiglio caldamente di leggere.

Conclusione

In questa guida abbiamo analizzato in che modo viene costruito il mercato in un sistema di finanza tradizionale e come viene fatto on-chain, quali sono le differenze e i relativi vantaggi. Adesso sappiamo che nella DeFi lo scambio di token avviene grazie alla liquidità fornita da altre persone e quale tipologia di AMM scegliere in base alle nostre necessità. Nella guida successiva andremo ad analizzare più nel dettaglio le tre curve viste in precedenza così da acquisire una maggiore consapevolezza del come e del perché vengono usate. Se non volete perdervi i miei prossimi post vi suggerisco di iscrivervi e di lasciare un bel 👏 se avete trovato interessante e utile questa guida.

Per qualsiasi domanda non esitate a contattarmi. A preso! 🚀

--

--