• Non ci sono risultati.

Bancor Protocol è un protocollo open-source per la determinazone automatica dei

prezzi e che permette il funzionamento di un meccanismo autonomo di liquidità, il

14In programmazione, un callback (o, in italiano, richiamo) è, in genere, una funzione, o un "blocco

di codice" che viene passata come parametro ad un’altra funzione. In particolare, quando ci si riferisce alla callback richiamata da una funzione, la callback viene passata come argomento ad un parametro della funzione chiamante. In questo modo la funzione chiamante può realizzare un compito specifico (quello svolto dalla callback) che non è, molto spesso, noto al momento della scrittura del codice.

15In informatica, con il termine promise ci si riferisce a un particolare costrutto usato nella sincronizza-

zione dell’esecuzione dei programmi scritti con alcuni linguaggi di programmazione di tipo concorrente. Questo costrutto fa uso di una sorta di segnaposto, un oggetto che prende il posto di un valore che è in attesa di essere restituito da un’operazione asincrona. Su questo oggetto vengono definite delle operazioni da effettuare quando l’operazione asincrona sarà stata completata.

4.4. Mercati decentralizzati (DExs) utilizzati 97

quale consente di poter convertire costantemente i vari tokens presenti nel network,

ad un prezzo calcolato tramite un algoritmo. Bancor non permette lo scambio peer-to-

peer fra gli utenti della piattaforma, ma piuttosto permette agli utenti di convertire i

propri fondi in tokens che comunicano direttamente con lo smart contract di Bancor,

con la possibilità di convertirli a loro volta in altri token in ogni momento con un

prezzo calcolato istantaneamente [40]. Lo smart contract monitora le riserve disponibili

di tokens e funge da controparte per ogni trade. Il contratto di Bancor si occupa anche di aggiornare automaticamente le informazioni riguardanti i tokens, come il

prezzo e la quantità disponibile in tutto il network, basandosi su un algoritmo pubblico.

Nello specifico, Bancor permette ai suoi utenti di convertire ether o tokens ERC-20 in

altri tokens utilizzando il meccanismo degli Smart Tokens: questi particolari tokens

sono convertibili in altri tokens del network ad un prezzo calcolato algoritmicamente

utilizzando le riseve di tokens disponibili [41].

L’algoritmo permette di prevenire la manipolazione dei prezzi e dei volumi, pratica

comune nei tradizionali sistemi di matching degli ordini [42]. Dalla prospettiva degli

utenti, scambiare un asset con uno smart contract è funzionalmente uguale a scambiare

un asset con un altro utente. Uno Smart Token permette, ad esempio, di convertire

il token base di Bancor (BNT) con qualsiasi altro token denetuto dallo smart token (utilizzeremo ETH per l’esempio). L’utente dovrà semplicemente inviare BNT (o ETH)

allo smart contract e riceverà ETH (o BNT) ad un tasso di conversione che permette allo

Smart Token di mantenere un rapporto predeterminato fra le riserve dei due tokens

coinvolti nello scambio. Nel caso in cui lo smart token sia configurato per mantenere un

rapporto del 10% BNT:ETH, quando gli utenti spediranno dei BNT allo smart contract

per ottenere in cambio degli ETH, il prezzo di BNT in termini di ETH verrà aggiustato

dinamicamente per mantere questo rapporto fra le due pool di liquidità.

Per un’analisi più approfondita di Bancor Protocol, del suo ecosistema e dei suoi

4.4.2 Uniswap

Uniswap è un protocollo open-source per lo scambio automatizzato di token su

Ethereum. È stato progettato attorno ad una serie di principi base:

• facilità d’utilizzo;

• efficienza in termini di costo del gas (costo delle commissioni).

Tale protocollo può essere utilizzato sia da trader, per scambiare tokens, che da smart

contracts, per automatizzare delle operazioni che necessitano una fonte di liquidità

on-chain, come per l’arbitraggio.

Gli smart contracts di Uniswap contengono riserve di liquidità di vari token e

le negoziazioni sono eseguite direttamente contro queste riserve. I prezzi vengono

determinati automaticamente utilizzando il cosiddetto meccanismo del constant market

maker (x × y = k) [43], che mantiene le riserve complessive di tokens in un equilibrio relativo; le riserve vengono formate inizialmente da una rete di fornitori di liquidità che

forniscono tokens al sistema in cambio di una quota proporzionale delle commissioni sulle transazioni.

Una caratteristica importante di Uniswap è l’utilizzo di un contratto intermedio (factory/registry contract), il quale implementa uno smart contract separato per ciascun token ERC20. Questi contratti contengono contengono le riserve di ETH e del relativo token ERC20. Ciò consente di scambiare le due valute sulla base dell’offerta relativa disponibile. I vari smart contract specifici sono collegati fra di loro tramite il contratto

intermedio, consentendo scambi diretti tra ERC20 e ERC20 o tra qualsiasi altro token

che utilizza ETH come un intermediario [43].

4.4.3 EtherDelta

EtherDelta è un DEx che permette ai suoi utenti di scambiare token ERC20, utilizzan-

4.4. Mercati decentralizzati (DExs) utilizzati 99

"tradizionale" che permette la visualizzazione dei migliori 500 ordini di acquito e di

vendita per ogni asset quotato, ordinati per prezzo e dimensione.

Gli utenti interagiscono con EtherDelta sia come maker che come taker; i primi

inseriscono limit orders per comprare o vendere un token specificandone sia il prezzo

che la quantità, con la possibiltà di stabilire anche una scadenza temporale per l’ordine,

dopo la quale esso verrà cancellato. Quando un maker firma e inserisce una transazione

nella piattaforma, l’ordine viene aggiunto nell’orderbook di EtherDelta, ospitato in uno dei server centralizzati e pubblicamente visibile nel sito web della piattaforma. Per

quanto riguarda i takers invece, non fanno altro che eseguire gli ordini già esistenti nel

orderbook selezionandone uno fra i primi 500 ordini inseriti dai makers. Attualmente,

EtherDelta non supporta gli ordini a mercato.

La piattaforma in sé, infatti, non performa il matching degli ordini; invece, i takers

devono selezionare degli ordini specifici presenti nell’ordebook; una volta individuato

l’ordine desiderato, la piattaforma invia sia l’ordine maker che l’ordine taker allo smart

contract di EtherDelta per la loro validazione e la conseguente esecuzione, per poi essere

inseriti nella blockchain Ethereum. Una volta ottenuta la conferma di questo inserimen- to, che avviene on-chain, l’orderbook di EtherDelta viene aggiornato; i tokens relativi

all’operazione appena conclusa fra il maker e il taker vengono trasferiti direttamente