Un DEX (Decentralized Exchange) è un exchange decentralizzato che permette lo scambio di coin senza un intermediario.
Ho due tipologie di DEX, l’Automatic Market Maker (AMM) che funziona con i pool di liquidità (la maggioranza dei DEX funziona così) oppure i più moderni Order Book based che hanno le stesse caratteristiche fornite da un CEX, quindi limit order, stop loss e così via.
DEX AMM
I DEX AMM si basano su dei liquidity provider che forniscono liquidità e dei trader, che vogliono scambiare monete: per esempio voglio scambiare ETH con USDT o viceversa.
Per scambiare ETH con USDT ho bisogno che qualcuno abbia fornito sia ETH (qualora li voglia fornendo USDT) che USDT (qualora voglia quelli fornendo ETH) in rapporto 50 e 50 in base al loro prezzo. Il rapporto dei due token all’interno del pool è proporzionale al prezzo dell’uno rispetto all’altro: quindi se ETH vale 4000€, per aggiungere 1ETH al pool dovrò aggiungere anche 4000€ in USDT.
Queste coppie di monete sono fornite a quello che viene definito pool di liquidità. Utilizzandoli anche in combinazione uno con l’altro il trader può scambiare qualsiasi moneta in qualsiasi altra moneta (sulle stessa chain).
Il liquidity provider riceve parte delle commissioni che vengono fornite dai trader per lo scambio di monete. In verità questo non è del tutto vero: le fee vanno prima all’interno del pool in modo da farlo crescere in liquidità; una volta che io vado a ritirare non ho solo i token che ho fornito al pool ma anche le fee che mi spettano.
Analogamente alle piattaforme di lending, i DEX, per attrarre liquidità, possono fornire degli incentivi ai liquidity provider sotto forma dei token della piattaforma stessa (incentivo di liquidity mining).
Token LP
Quando fornisco liquidità ad un pool ricevo dei token chiamati Token LP (Liquidity Provider). Essi sono una sorta di certificato che indicano quale quota del pool totale ho fornito. Se ho pool ETH/USDC formato da 100 ETH e 400000 UDC e io fornisco 1 ETH e 4000 USDC otterrò un token LP del valore di 1%.
Chi possiede tale token ha diritto di riscatto di quella quota del pool fornendo il token LP e in cambio recupero un valore che è il rapporto tra il token LP che ho bruciato e la quantità totale di token LP.
Questi token sono normali token (per esempio ERC20) che possono quindi essere anche scambiati, messi in stake e così via. In particolare se metto il token LP in staking nella piattaforma ottengo come ricompensa il token della piattaforma stessa, a cui devo fare harvest per ottenerli.
Per fare compound il token della piattaforma lo converto nel token A e B del pool e vado ad aumentarne la liquidità, per ottenere più token LP e avanti così.
Impermanent loss

Fornendo liquidità a dei pool con due (o più) monete posso soffrire di impermanent loss, che è una perdita ipotetica che viene calcolata in percentuale rispetto all’holdare i due asset con la stessa proporzione (50/50).
La perdita è proporzionale alla volatilità ai due asset del pool tra loro, in particolare alla differenza in percentuale tra il prezzo dei due asset dal momento in cui metto liquidità al momento in cui la tolgo.
Per esempio se vado in un pool con due token, A e B. A vale 1 e B vale 100. Se quando ritiro la differenza tra i valori tra i 2 token è ancora 100 a 1 non ho impermanent loss. Per esempio se A vale 2 e B vale 200 e così via.
Qualora invece uno dei due token aumenti o diminuisca il suo prezzo mentre l’altro rimane costante ho impermanent loss.
Questo accade in quanto lo smart contract vuole avere sempre nel pool il 50% della moneta A e il 50% della moneta B, quindi in caso, per esempio, di un drastico aumento di prezzo del token A lo smart contract andrà automaticamente a venderlo per comprare il token B in modo che la proporzione sia sempre 50 e 50. Quando vado a ritirare i fondi lo smart contract mi fornirà sempre i token in proporzione 50 e 50, indipendentemente dalla loro variazione di valore.
Non ho impermanent loss con il lending, in quanto ho una sola moneta, oppure quando effettuo il pool di stablecoin, in quanto queste, per definizione, mantengono lo stesso valore nel tempo.
Un ulteriore modo per non avere impermanent loss sono i pool di token rappresentanti la stessa moneta, per esempio Luna con bLuna.
Ovviamente la perdita si realizza solo ed esclusivamente al momento del ritiro dei fondi, fino a quel momento la perdita è solo virtuale e non pratica.
Esistono vari siti che permettono di calcolare l’impermanent loss, uno di questi è: https://decentyields.com/impermanent-loss-calculator
Slippage
Lo slippage è la differenza tra il prezzo di mercato e il prezzo pagato dal compratore.
Il trader cercherà ovviamente di avere uno slippage minore possibile, idealmente a 0. Minore è la liquidità di un pool maggiore è lo slippage potenziale. In particolare questo dipende dal rapporto tra il numero di token richiesti e il numero massimo di token presenti nel pool.
Per esempio se noi consideriamo un pool con al suo interno 100 ETH e ne vogliamo ritirare 90, pagherò ETH un valore molto più alto del mercato in quanto il prezzo viene calcolato in base al rapporto tra le due coin.
Per limitare lo slippage posso impostare nel DEX un tetto massimo di slippage, o, in generale scegliere pool molto più liquidi della quantità che voglio scambiare.
Routing
Il routing è una operazione automatica che viene fatta dal DEX qualora io voglia scambiare due token di cui non esiste alcun pool, ma ne esistono utilizzando token intermedi.
Per esempio per scambiare il token A con C posso utilizzare il pool A-B concatenato con B-C.
Quando ho un routing posso avere più commissioni e più rischio di slippage se uno dei due pool è poco liquido.
Pancakeswap
PancakeSwap è il più famoso DEX su Ethereum.



Altri DEX famosi
VVS Finance è un DEX su Cronos, Terraswap per l’ecosistema Terra, Quickswap e SushiSwap su Polygon, UniSwap su BSC, Curve multichain,
DEX basati su Order Book
In questi DEX vi sono due ruoli fondamentali: il market maker e il market taker.
Il market maker (equivalgono ai liquidity provider) sono coloro che forniscono la liquidità all’order book. Questo ultimo deciderà il prezzo di mercato a cui verranno scambiate le monete richieste dal market taker. Il market maker riceverà una percentuale sulla fee ed eventuali token della piattaforma.
Il market taker è invece colui che compra o vende a mercato utilizzando la liquidità sull’order book. Paga una fee e riceverà eventualmente delle ricompense in token dalla piattaforma.
Gli Order Book based devono utilizzare una chain molto veloce, infatti sono stati introdotti con l’avvento di Solana, per esempio con Bonfida.