Il 2021 è sicuramente stato l’anno della DeFi, con l’esplosione di tantissimi exchange decentralizzati. Migliaia di investitori hanno iniziato a vendere e comprare criptovalute in DEX come Uniswap, PancakeSwap, Mdex e altri ancora. Queste piattaforme permettono anche di depositare le proprie criptovalute in dei liquidity pool e guadagnare degli interessi molto alti. In molti casi, però, gli utenti depositano i loro risparmi in questi servizi senza sapere esattamente cosa siano e come funzionano, oltre a non conoscerne i rischi come l’impermanent loss.

In questa guida vedremo innanzitutto come funzionano gli exchange centralizzati, per poi capire in che modo si differenziano i DEX e perché i liquidity pool sono fondamentali per il funzionamento degli AMM (automated market maker).

Gli order book degli exchange

Gli exchange centralizzati come Binance o Coinbase utilizzano gli order book per facilitare le transazioni tra acquirenti e venditori. Gli order book sono essenzialmente elenchi di ordini di acquisto (limite) e ordini di vendita (limite) che i clienti hanno inserito. Un ordine limite è un’offerta aperta per acquistare o vendere una certa quantità di un bene a un prezzo specificato dal cliente che effettua l’ordine limite.

Questi ordini limite vengono consumati dagli ordini di mercato, che è il tipo istantaneo di ordine che si verifica quando si fa clic su “Acquista” o “Vendi”. Se esegui un acquisto di mercato, acquisterai immediatamente da qualsiasi ordine di vendita limite che offre il prezzo più basso. Se esegui una vendita di mercato, venderai immediatamente a qualsiasi ordine di acquisto limite che attualmente offre il prezzo più alto. Questi ordini di mercato consumano parte o tutto l’ordine limite che offre l’offerta migliore.

L’exchange guadagna addebitando commissioni in cambio del servizio di corrispondenza di questi ordini di mercato con questi ordini di vendita. Il prezzo ufficiale dell’asset in qualsiasi momento è semplicemente l’ordine di vendita limite più economico in quel momento.

Il prezzo si muove quando gli ordini di acquisto di mercato consumano interamente l’ordine di vendita limite più economico. Quando ciò accade, il prezzo diventa qualunque sia il prezzo offerto dal successivo ordine di vendita limite più economico.

Per fare un esempio, immaginiamo che il prezzo più basso di vendita di BTC nell’order book sia 40.000$ per 10 BTC messi in vendita da un utente. Oltre a questa offerta, ne abbiamo una di 41.000$ per 2 BTC, un’altra di 42.000$ per 3 BTC e infine 43.000$ per 10 BTC.

Se un acquirente dovesse acquistare a mercato 5 BTC, li pagherebbe 40.000$ e il prezzo resterebbe uguale.

Se invece l’acquirente volesse acquistare 15 BTC, acquisterebbe 10 BTC al prezzo di 40.000$, 2 BTC per 41.000$ e 3 BTC per 42.000$. Questa operazione viene gestita automaticamente dall’exchange. L’acquirente saprà soltanto di aver acquistato 15 BTC al prezzo totale di 608.000$, con un costo medio di 40.533$ per BTC. A quel punto, il prezzo di BTC nell’exchange sarà di 43.000$, ovvero il prezzo dell’offerta successiva presente nell’order book.

Gli AMM e i Liquidity Pool

Gli AMM sono l’innovazione alla base di ogni exchange decentralizzato. Gli AMM utilizzano smart contract per creare un’alternativa automatica, decentralizzata e peer-to-peer agli order book, consentendo alle persone di scambiare risorse senza passare attraverso gli exchange centralizzati.

L’idea centrale degli AMM è un concetto chiamato pool di liquidità. Ciascun liquidity pool in un AMM consente alle persone di scambiare una coppia di asset specifica (come BNB/BUSD) in entrambe le direzioni. In altre parole, un pool di liquidità BNB/BUSD consentirebbe di acquistare BNB con BUSD o acquistare BUSD con pagando in BNB. Gli AMM sono costituiti da grandi quantità di questi pool di liquidità, consentendo grandi quantità di possibili coppie di scambi.

Ciascun pool di liquidità è composto da parti uguali dei due asset della coppia di negoziazione. Questi pool sono riforniti dai liquidity provider, che sono utenti che scelgono di depositare le proprie monete per facilitare le negoziazioni da parte di altre persone, al fine di guadagnare premi sotto forma di commissioni di negoziazione.

Quando un trader usa il pool per fare uno swap, in realtà sta solo aggiungendo un importo a uno dei due asset nel pool e togliendo l’importo corrispondente dell’altro asset nel pool. Il trader paga anche una commissione di negoziazione, che è ciò che premia tutti i fornitori di liquidità in quel pool.

Cosa succede quando le due metà del pool vengono sbilanciate a causa degli scambi effettuati da trader? Come viene definito il prezzo degli asset non essendoci un order book?

Queste sono domande altamente correlate. Qualunque cosa accada, il liquidity pool considera sempre che i due asset abbiano lo stesso valore.

Quindi, supponiamo di acquistare BNB con BUSD utilizzando un DEX. Si vuole spendere 400 BUSD. La quantità di BNB che si otterrà dipenderà dal rapporto tra la quantità di BNB e la quantità di BUSD nel pool, e nient’altro. Supponiamo che il pool contenga attualmente 100.000 BUSD e 500 BNB, con un rapporto di 200 BUSD per 1 BNB. Ciò significa che, secondo il pool, il prezzo di BNB in BUSD è 200, indipendentemente da ciò che potrebbe credere il mondo esterno e altre piattaforme.

Quindi, dopo lo scambio, si otterranno 2 BNB e il pool avrà 100.400 BUSD e 498 BNB (più un piccolo extra, dovuto alla commissione di trading pagata al momento dello swap). Ora il rapporto tra BUSD e BNB nel pool è 201,60, quindi il prezzo di BNB secondo il pool è 201,60 BUSD e il prezzo di BUSD è 0,00496 BNB.

Questo ci porta ad un concetto chiave. Il prezzo di BNB secondo il pool è salito a 201,60 BUSD a causa dell’ultimo scambio, ma questo aumento di prezzo non si è verificato nel resto degli exchange. Pertanto, il resto del mondo probabilmente concorda ancora sul fatto che 1 BNB costi circa 2000 BUSD, il che offre un’opportunità di arbitraggio: i trader più svelti possono ora acquistare 201,60 BUSD nel pool pagando 1 BNB, per poi riacquistare 1 BNB in un altro exchange pagando solo 200 BUSD, facendo un profitto di 1,60 BUSD (meno le commissioni). Esistono anche dei bot automatizzati che controllano in tempo reale le quotazioni nei diversi exchange, al fine di approfittare di queste discrepanze di prezzo. Il prezzo nei liquidity pool, quindi, è sempre molto simile in tutti i diversi exchange semplicemente perchè, se dovesse cambiare troppo, qualcuno ne approfitterebbe, facendolo tornare ad un valore corretto.

Come funzionano i Liquidity pool?

In generale, chiunque può creare un nuovo pool di liquidità per consentire ad altri di scambiare una coppia specifica. Una volta che un pool è stato creato, chiunque può fornirgli liquidità o ritirare la propria liquidità in qualsiasi momento. Quando fornisci liquidità, devi fornire le due attività in importi equivalenti. Prendendo il solito esempio, se il cambio è 1 BNB per 200 BUSD, si dovrà depositare queste due monete rispettando questa proporzione (ad esempio 0,50 BNB e 100 BUSD).

Quando si fornisce liquidità, i fondi lasciano il proprio portafoglio, a differenza dello staking. Questo è necessario in quanto questi fondi devono essere liberi per facilitare gli swap dei trader

Quindi, come fa il pool a sapere che una parte della sua liquidità appartiene ad un determinato utente?

Quando si aggiunge liquidità ad un pool, si riceve in cambio un token speciale chiamato token LP. Il token sarà specifico per la coppia di asset e avrà un nome tipo LP-BNBBUSD.

Questi token LP sono gestiti in modo tale che l’importo di questo token un investitore detiene, sia proporzionale alla sua fetta del pool. In altre parole, se si fornisce il 10% di tutta la liquidità in un pool, si avrà anche il 10% di tutti i token LP-BNBBUSD che esistono su quell’AMM.

Quando si vuole ritirare i propri risparmi, si scambia i propri token LP e questo consente al pool di sapere quanto BNB e BUSD restituire (sempre seguendo il nostro esempio, si otterrebbe il 10% dei BNB e il 10% dei BUSD presenti nel pool. Si noti che le commissioni di negoziazione vengono sempre aggiunte al pool, facendo aumentare le partecipazioni totali del pool, il che significa che quando un liquidity provider preleva la propria liquidità, le commissioni guadagnate mentre fornisce liquidità fanno naturalmente parte della quota che si riceverà.

I rischi dei Liquidity pool e l’impermanent loss

Si noti che quando si aggiungono i propri fondi ad un pool di liquidità, si corre il rischio che lo smart contract dello specifico AMM che si sta utilizzando possa essere hackerato. Affidandosi a piattaforme famose e affermate, si limita di molto questo rischio. Ci si espone anche ad una variazione del prezzo dei due beni che si sta fornendo, perché quando si ritira la propria liquidità, questa viene restituita sotto forma di quei due beni.

L’impermanent loss è invece un altro rischio che si deve tenere in conto quando si fornisce liquidità. Più precisamente, si riferisce alla perdita del valore dei propri asset forniti al pool.

Per capire cosa sia l’impermanent loss, abbiamo bisogno di un esempio. Immaginiamo due scenari: uno in cui si si sceglie di tenere nel proprio wallet 1 BNB e 200 BUSD e uno in cui si decide di fornirli ad un pool di liquidità. Supponiamo che il prezzo di BNB sia 200 BUSD e che si possieda il 10% del pool. Pertanto, il pool conterrà 10 BNB e 2.000 BUSD. Supponiamo per semplicità che nessun altro fornitore di liquidità aggiunga o rimuova liquidità al pool.

Ora immaginiamo che il prezzo di BNB salga a 300 BUSD negli altri exchange. Ciò farebbe sì che i trader di arbitraggio acquistino rapidamente 2 BNB dal nostro pool per 200 BUSD ciascuno, portando il liquidity pool ad avere 8 BNB e 2.400 BUSD, in un rapporto di 300:1.

Ora supponiamo che si voglia ritirare le proprie criptovalute depositate. Si possiede il 10% del pool, quindi si otterrà il 10% degli 8 BNB e il 10% dei 2.400 BUSD. Quindi, si riceverà 0,8 BNB e 240 BUSD. Poiché BNB varrebbe 300 BUSD, il valore totale patrimonio investito sarebbe (0,8 * 300) + 240 = 480 BUSD.

Nello scenario in cui si avesse scelto di tenere le proprie criptovalute nel wallet, si avrebbero ancora 1 BNB (che ora varrebbe 300 BUSD) e 200 BUSD, per un totale di 500 BUSD.

Quindi, si avrebbe perso circa 20 BUSD di potenziali guadagni a causa del’impermanent loss dovuto alla decisione di depositare le crypto nel liquidity pool. Ovviamente, in questo esempio non abbiamo considerato gli interessi guadagnati dalle commissioni sulle transazioni effettuate dai trader, che fanno aumentare il patrimonio del pool e, teoricamente, dovrebbero far sì che, nel momento in cui si sceglie di ritirare le somme depositate, la quantità ritirata sarà maggiore a quella fornita in precedenza.