Uniswap, un importante e utilizzatissimo exchange di criptovalute decentralizzato (DEX), è stato vittima di un attacco di phishing che ha causato il furto di 7,500 ETH per un valore di circa 8 milioni di dollari a un liquidity provider della piattaforma.

PeckShield, una società di sicurezza degli smart contract, ha rilasciato una dichiarazione a The Block spiegando come il fornitore di liquidità sia stato vittima di un attacco coordinato di phishing. Il bottino che l’hacker è riuscito a incassare sarebbe di ben otto milioni di dollari in ether.

Uniswap phishing attacco
Adobe

Prima dell’incidente, l’hacker ha preso di mira la vittima utilizzando un falso token airdrop Uniswap come esca per il suo phishing. Quando la vittima ha fatto il claim el token, ha interagito con uno smart contract malevolo che ha concesso all’hacker il pieno controllo del portafoglio della vittima. Inutile descrivere quanto accaduto dopo, una volta che il ladro ha preso il controllo del wallet dello sfortunato utente.

Cos’è Uniswap

Uniswap è un exchange completamente decentralizzato, il che significa che non è di proprietà e gestito da una singola entità, ma viene governato dai detentori del suo token di governance. Grazie a questi token cioè i membri della community possono avanzare proposte e dare il proprio voto. Uniswap utilizza una metodologia relativamente nuova di modello di trading, chiamato protocollo di liquidità automatizzato.

La piattaforma Uniswap è realizzata e opera direttamente sulla blockchain di Ethereum, il che la rende compatibile con tutti i token ERC-20 e gli strumenti come i servizi di wallet MetaMask e MyEtherWallet. Il lancio ufficiale al pubblico della piattaforma è stato nel 2018 e da allora Uniswap ha conquistato quote di mercato sempre più importanti. Fino a diventare un vero e proprio punto di riferimento per l’intero mercato DeFi, posizionandosi come uno dei più riforniti e utilizzati exchange decentralizzati sul panorama.

Piattaforma opensource e listing gratuito dei token per gli utenti

Uniswap è anche completamente open source. Ciò vuol dire che qualsiasi utente può copiare il codice e utilizzarlo per apportare modifice e personalizzazioni così da creare i propri exchange decentralizzati. Oltre a questo, Uniswap permette persino agli utenti di listare gratuitamente i token sull’exchange.

I normali exchange centralizzati sono in genere orientati principalmente al profitto e addebitano commissioni molto elevate per il listing di nuovi token, oltre che “mettere il naso” quando si tratta di valutare la validità o meno di un asset. Andando in queto modo a ridurre la libertà degli utenti e degli investitori.

Quindi già solo il fatto che questo venisse offerto gratuitamente, è stato da solo è una differenza di notevole spessore e uno dei fattori che hanno contribuito alla crescita esponenziale della piattafora. Poiché Uniswap è uno exchange decentralizzato (DEX) non custodial, gli utenti mantengono il controllo dei propri fondi in ogni momento. Al contrario, exchange centralizzato richiede a trader e investitori di rinunciare al controllo delle proprie chiavi private in modo che gli ordini possano essere registrati su un database interno piuttosto di essere eseguito su una blockchain. Operazione che in ogni caso richiede più tempo e denaro. 

Mantenendo il controllo delle chiavi private, si elimina il rischio di perdere risorse in caso di violazione del’exchange. Secondo gli ultimi dati, Uniswap è al momento piattaforma di finanza decentralizzata (DeFi) al quarto posto in classifica e ha oltre 4.8 miliardi di dollari di TVL, ossia di asset crittografici bloccati sul suo protocollo

Come funziona Uniswap

Uniswap funziona essenzialmente grazie a due smart contract: un contratto di “Exchange” e un contratto di “Farm”. Si tratta cioè di programmi automatici progettati per eseguire funzioni specifiche quando vengono soddisfatte determinate condizioni. In questo caso, lo smart contract di Farm viene usato per aggiungere nuovi token alla piattaforma e il contratto di exchange facilita tutti gli scambi di token, o “Trade”. 

Qualsiasi token basato su ERC20 può essere scambiato con un altro sulla piattaforma Uniswap v.2 aggiornata.

Protocollo di liquidità automatizzato

La maniera in cui Uniswap risolve il problema di liquidità degli exchange centralizzati è tramite un protocollo di liquidità automatizzato. Questo funziona incentivando le persone che fanno trading a diventare Liquidità Provider, ossia fornitori di liquidità (LP) per la piattaforma. Gli utenti di Uniswap mettono quindi assieme i loro asset crittografici in un pool, per creare un fondo che viene usato per eseguire tutte le operazioni che sono necessarie e vengono richieste sulla piattaforma dagli utenti. 

Qualsiasi token disponibile su Uniswap ha il proprio liquidity pool, cioè pool di liquidità, a cui gli utenti possono partecipare con le proprie criptovalute. Le quotazioni di mercato per ciascun token vengono calcolati usando un algoritmo matematico eseguito da un calcoaltore, che vedremo a breve.

Con questo sistema, un compratore o colui che è intenzionato a vendere i propri asset crittografici, non deve aspettare che una parte opposta sia presente per ultimare l’operazione di scambio. Al contrario, gli utenti possono eseguire qualsiasi operazione in pochi secondi, a un prezzo già noto in partenza. Il tutto naturalmente a patto che ci sia abbastanza liquidità nel particolare pool di quella coppia di criptovalute.

In cambio della fornitura delle proprie risorse, ogni LP riceve un token che rappresenta il deposito lasciato al pool di liquidità. Ad esempio, se hai parteciapto con 10.000 dollari di controvalore in un pool di liquidità che deteneva 100.000 dollari in totale, verrà rilasciato un token (che corrisponde a una sorta di “certificato di deposito” per riscattarli in futuro) per il 10% di quel pool.

Le comissioni

Uniswap fa pagare agli utenti una commissione fissata allo 0,30% per ogni transazione che avviene sul dex e la invia in automatico a una riserva di liquidità del protocollo.

Ogni volta che un fornitore di liquidità decide di voler riscattare il deposito, questo riceve una parte delle ricompense totali maturate dalla riserva relativa all’importo depositato in quel pool. Il token che hanno ricevuto che tiene traccia della percentuale che gli spetta viene quindi bruciato.

In seguito all’aggiornamento di Uniswap v.2, è stata introdotta una nuova fee di protocollo che potrà essere confermata o annullata per messo un voto della community con potere di governance. Questa modifica introduce un cambiamento che va ad inviare lo 0,05% di ogni fee di transazione dello 0,30% a un fondo Uniswap per finanziare gli sviluppi futuri che saranno via via necessari. Attualmente, questa opzione di commissione non è ancora mai stata messa in prativa. Tuttavia, se mai lo fosse in futuro, ciò comporterà che gli LP andranno a maturare lo 0,25% delle fee di trading del pool, anzichè lo 0,30% attuale.

Come viene determinato il prezzo del token

Un altro fattore degno di nota di questo protocollo è il modo in cui stabilisce il prezzo di ogni token negoziabile. Invece di un sistema classico basato su order book (come vediamo abitualmente negli exchange centralizzati), in cui il prezzo di ogni asset è determinato dall’offerta di acquisto più alto e dall’ordine di vendita più basso, Uniswap utilizza un sistema di market maker automatizzato (AMM). 

Questa metodologia alternativoa per adeguare il prezzo di un bene in base alla sua domanda e offerta utilizza un’equazione matematica di vecchia data. Funziona incrementando e diminuendo la quotaione di un asset a seconda del rapporto tra quanti token di un tipo o di unaltro ci sono nel rispettivo pool di liquidità.

È importante notare che ogni qual volta un utente va ad aggiungere un nuovo token ERC-20 a Uniswap, quella persona deve depositare una certa quantità del token ERC-20 scelto e una quantità pari di un altro token ERC-20 per dare il via al pool di liquidità.

La formula dei liquidity pool

L’equazione per calcolare il prezzo di ciascun token è x*y=k, dove la quantità di token A è x e la quantità di token B è y. K è un valore costante, ovvero un numero che non cambia.

Ad esempio, un utente X vuole scambiare chainlink (LINK) con ETH usando il pool Uniswap LINK/ETH. L’utente X deposita un gran numero di LINK al pool che aumenta il rapporto tra LINK nel pool ed ETH. Dal momento che il valore K deve rimanere il medesimo, vuol dire che il prezzo degli ETH aumenta mentre la quotazione di mercato dei LINK nel pool diminuisce. Di conseguenza più LINK l’utente X deposita nel pool, meno ETH gli ritornano in cambio, dal momento che il prezzo di questi aumenta a contempo.

La dimensione del pool di liquidità andrà a determinare anche quanto cambierà il prezzo dei token durante uno scambio. Più fondi, quindi liquidità, ci sono in un pool, più facile è fare operazioni e scabi di maggiore entità senza modificare troppo il prezzo. Il meccanismo che vede cambiare le quotazioni dei token durante lo scambio per questo meccanismo di liquidità è definito slippage. Ne abbiamo parlato ampiamente in QUESTO ARTICOLO.

L’attacco di phishing costato 8 milioni al Liquidity Provider

Al momento dell’attacco di ieri (lunedì 11 luglio), il wallet dell’utente vittima dell’hacker forniva 8 milioni di dollari a un pool di liquidità WBTC/USDC su Uniswap versione 3, rendendolo quindi un fornitore di liquidità, o LP.

Dopo aver ottenuto un accesso illegittimo al portafoglio, l’hacker è uscito dalla posizione di liquidità dell’utente, ha scambiato le risorse e le ha trasferite. Facendone perdere le tracce. Mentre compiva l’operazione, l’hacker ha instradato i fondi attraverso Tornado Cash, un mixer di transazioni sulla rete Ethereum. Utilizzando un mixer di questo tipo, l’hacker ha potuto spostare i fondi senza che sia più possibile rintracciare i wallet di destinazione, essendo le transazioni appunto “mischiate” con quelli degli altri utenti da Tornado Cash

Il CEO di Binance Changpeng ‘CZ’ Zhao è stato il primo a segnalare l’incidente. In un post su Twitter, ha inizialmente affermato che c’era un potenziale exploit nel protocollo stesso. Poco dopo ha provveduto a rilasciare un aggiornamento che ha specificato che non si trattava di un exploit della piattaforma, bensì solo di un attacco di phishing.

Il fondatore di Uniswap Hayden Adams è d’accordo, affermando che l’attacco di phishing era “totalmente separato dal protocollo”.