Appunti di DeFi: i FlashLoans

#FlashLoans#DeFi
TL;DR concedere un prestito dopo che ci è stato restituito.

Iniziamo dalla fine, letteralmente. Dalla cosa più lontana dalla finanza tradizionale. Supponiamo di aver trovato un’opportunità di arbitraggio fra due mercati separati e che ci sia una finestra temporale breve per approfittarne. Ad esempio abbiamo un mercato M1 in cui un asset ha il prezzo di 1$ ed un mercato M2 in cui lo stesso asset ha il prezzo di $1.50. Se solo potessi comprare in M1 e rivendere in M2 farei subito un profitto di 0.50 a unità, ma purtroppo la cosa richiede un capitale per comprare in M1, quindi qualcuno ci deve fare un prestito e noi dobbiamo mettere un collaterale a copertura.

I flash loan invece permettono di ottenere un prestito da una pool P, utilizzarlo per un ordine di acquisto in M1, fare un ordine di vendita in M2, restituire il prestito a P più una piccola fee e fare tutto in un’unica transazione #blockchain perciò non divisibile. Se una delle azioni di cui sopra fallisce allora falliscono tutte e si ripristina lo stato iniziale senza rischi per nessuno (gas a parte). Questa meraviglia non si potrebbe fare nel mondo “reale” a meno che tu non sia #DrWho e usi #Tardis per tornare indietro nel tempo se qualcosa fallisce.
(image by aussiegall CC-BY #timetravel)

Video Corso – Dagli Smart contract alle ICO

Fra i tanti corsi online, c’è anche questo eh..

SCARICA DA UDEMY 👈👈

Il corso fornisce una conoscenza ampia e pratica sul funzionamento delle criptovalute e degli smart contract inclusi: 
– Perché Bitcoin è un’invenzione che rivoluzionerà il concetto di denaro
– La crittografia e firme digitali come elementi abilitanti
– Come è possibile che le criptovalute funzionino senza le banche
– A cosa serve la blockchain
– Cosa sono gli smart contract
– Token, standard ERC20 e ICO

Al termine del corso gli allievi saranno in grado di analizzare le principali blockchain e comprendere le differenze, i pro e i contro di ogni soluzione. Saranno in grado di valutare meglio la bontà di un progetto basato su blockchain o di una ICO. Avranno essi stessi le basi per lanciare nuovi progetti nel campo delle criptovalute, degli smart contract e ICO e avranno un’idea molto chiara di quali altre competenze dovranno acquisire

Libro — Blockchain e smart contract

Condivido (anzi rubo) questo post di Massimo Simbula che ha scritto quello che avrei voluto scrivere io ma lo ha scritto meglio. Ringrazio lui e ringrazio Raffaele Battaglini e Marco Tullio Giordano per avermi invitato a contribuire a questo volume e tutti gli altri autori per il gran lavoro fatto insieme.

No photo description available.

Il 12 novembre verrà presentato a Milano il volume (di oltre 400 pagine) dal titolo “Blockchain e Smart Contract – Funzionamento, profili giuridici e internazionali, applicazioni pratiche”.

Il volume, curato dagli amici e colleghi Raffaele Battaglini e Marco Tullio Giordano, e con la prefazione dell’Avv. Giuseppe Vaciago, vede il contributo di molti appassionati della materia sia lato legale che tecnico.

Io ho curato la parte relativa alla normativa italiana in materia di blockchain e smart contract ed è stato un vero piacere partecipare insieme ad amici e stimati professionisti come Davide CarboniTamara BelardiPaolo Dal CheccoNicolino GentileNiccolò Travia e tanti altri.

Vale davvero la pena leggerlo per chi vuole approfondire la materia e affrontarla con approccio multi-disciplinare.

Piccola guida alle Stablecoins

Ci sono delle nuove star nel panorama della cripto finanza e queste star sono le stable coins. Come il nome suggerisce sono o dovrebbero essere delle valute digitali che godono di una proprietà non trascurabile, la stabilità del loro prezzo sui mercati di scambio. Di fatto le stable coin funzionano come delle rappresentazioni delle monete a corso legale ma dentro la blockchain. La frase “dentro la blockchain” è già di per sé ambigua dato che “non esiste la blockchain” ma ne esistono tante, ognuna con il suo protocollo di consenso per la validazione delle transazioni e le sue regole per codificare i dati e le transazioni.

Ed ecco che esistono stablecoin nelle varie blockchain, Bitcoin, Ethereum e Tron per limitarci ai casi di maggior interesse, senza peraltro voler accomunare queste blockchain per solidità, decentralizazzione e sicurezza, visto che le tre sono molto diverse e lo sono in aspetti fondamentali. Ma senza entrare nel merito di blockchain buona e blockchain cattiva ritorniamo alle stable coin.

Vediamo alcuni numeri perché cominciano ad essere interessanti:

capitalizzazione delle stablecoin: $10B

I volumi appaiono interessanti anche se sono fortemente concentrati in una singola stable coin, la USDT emessa da Tether.

Volumi di scambio in 24 ore. Fonte ( https://cryptoslate.com/cryptos/stablecoin/ )

Per intenderci in questo momento i volumi scambiati da USDT sono i maggiori di tutto il settore cripto, superiori a quelli dello stesso bitcoin

fonte https://coinmarketcap.com/

Ma il punto è: a cosa servono le stable coin e perché ce ne sono tante?

Ci sono varie valide ragioni per lo sviluppo delle stable coin. La prima è che ovviamente sono stabili nel prezzo e questo già le rende interessanti come monete transazionali. Ma possiamo approfondire ulteriormente.

Store of value temporaneo, sì sembra forse paradossale ma i trader sono come sportivi sotto stress, non sempre in grado di tenere gli asset rischiosi in portafoglio. Hanno bisogno di tirare il fiato, ragionare e de-investire riportando il valore dentro un asset più facilmente liquidabile: la moneta fiat. Ma dato che non tutti gli exchange sono in grado per ragioni legali di tenere fondi in valuta statale senza opportuna licenza o semplicemente perché nessuna banca gli permette di aprire un conto vista la rischiosità del settore cripto, ecco che le stable coin sono un perfetto proxy verso le fiat. Possono essere utilizzate come store of value temporaneo in momenti di volatilità e trasferite da un exchange all’altro senza mai uscire dai protocolli blockchain. Diventano una scorciatoia per scambio denominato in moneta statale senza passare dai rispettivi circuiti SEPA o SWIFT. Sembra poco? Non lo è.

Programmabilità. Un aspetto molto interessante è la programmabilità nativa che le criptovalute conferiscono alle stablecoin. Mi piace pensare che se definiamo fintech un software che gestisce il denaro, possiamo definire dualmente gli smart contract come il denaro che esegue il proprio software. La differenza è sostanziale e tante sono le possibilità che si aprono. Ad esempio un fondo pensione (pensavo all’INPS) potrebbe essere rimpiazzato da uno singolo smart contract (ed eventualmente da un customer care) con una funzione molto semplice: ricevere contributi dai lavoratori, aggiornare il loro status contributivo e versare prestazioni ai pensionati già aventi diritto. Questa è solo una delle applicazioni possibili (sperando che non si usi var pippo nel codice dello smart contract). Si possono in creare flussi pre-programmati per la pubblica amministrazione, ogni ministero potrebbe automatizzare direttamente la gestione del suo portafogli. Pensiamo ai sussidi alle imprese, alla Cassa Integrazione, ai contributi per ricerca e innovazione. Cosa impedisce di fatto l’utilizzo degli smart contract in applicazioni istituzionali? Sostanzialmente il fatto che sono “denominati” in bitcoin, ether, monero eccetera e chiaramente questo non ne permette la metabolizzazione nell’organismo statale. Ma se fossero denominati in euro e la loro liquidabilità fosse garantita? La cosa cambierebbe totalmente e le stable coin potrebbero rappresentare un perfetto mix di programmabilità e garanzia.

Unbanked, nel mondo ci sono quasi due miliardi di adulti “sbancati” o meglio unbanked, ovvero che non hanno accesso ad un conto bancario o di pagamento. Questo presuppone che gli stessi operino nell’economia del contante e quindi rinuncino alle opportunità dei pagamenti elettronici sia come consumatori di beni che come produttori. Le stablecoin hanno un’interessante caratteristica, esse vengono emesse o riscattate presso un’istituzione (ndr. non è sempre vero ma per semplicità evitiamo per ora di scendere nei dettagli) che quindi verifica e opera secondo tutti i dettami della normativa anti-riciclaggio. Tuttavia una volta trasformate in stablecoin queste possono essere trasmesse da un individuo all’altro in una modalità “al portatore” ma digitale, e quindi da remoto e senza identificazione.

Location of stablecoin teams worldwide from Blockchain‘s excellent stablecoin report

In quanti modi si può rendere stabile una stable coin?

TL;DR La risposta è: uno solo.

Ma arriviamoci per gradi. Ci sono almeno tre diversi modi in teoria:

  • token emesso a fronte di un collaterale in moneta fiat custodito da un ente fidato che fornisce garanzia di liquidazione, ad esempio USDT Tether, USDT di Circle, Stasis Euro.
  • token emesso da uno smart contract a fronte di un collaterale in criptomoneta che può essere liquidato programmaticamente, ad esempio DAI di MakerDAO.
  • senza collaterale e attraverso la creazione di un supply elastico basato sullo stesso principio delle banche centrali ma senza banche centrali, ad esempio le Seignorage Shares implementate nei progetto Basis e Carbon.
fonte https://hackernoon.com/stablecoins-designing-a-price-stable-cryptocurrency-6bf24e2689e5

Le stable coin con collaterale in moneta fiat

Le stable coin con collaterale in moneta fiat, o collaterale offchain, ovviamente richiedono un meccanismo di fiducia che garantisca che in qualsiasi momento un token possa essere riscattato e quindi liquidato. In pratica possiamo pensare esistano due operazioni fondamentali, l’emissione (o minting) ed il riscatto o liquidazione (redeem). Se io verso 1 euro dentro il fondo, che garantisce la stable coin, ricevo in cambio 1 token che da quel momento può essere scambiato utilizzando la blockchain ed i suoi protocolli. Tecnicamente non c’è niente di complicato, esiste un fondo salvadanaio che garantisce sempre di poter liquidare i token in euro o dollari all’occorrenza. Questo è di gran lunga il meccanismo più utilizzato. Resta poi da capire se l’ente che custodisce il salvadanaio sia o meno autorizzato ad utilizzare tali fondi di collaterale per scopi diversi oppure se si deve impegnare a tenerli bloccati senza altri utilizzi e fino alla richiesta di riscatto da parte dei portatori di token. Ci sono state molte polemiche in passato sulla regina delle stablecoin, il USD Tether, ma sarebbe troppo lungo entrare nei dettagli. Questo meccanismo è considerato “efficiente” in quanto nel caso peggiore il salvadanaio deve contenere tanti euro (o dollari) quanti sono i token in circolazione. Quindi 1:1. In realtà una banca potrebbe perfino operare come ente garante del salvadanaio ed utilizzare il meccanismo della riserva frazionaria emettendo più token di quelli “bloccati” nel conto salvadanaio, aumentando quindi l’efficienza del sistema se per efficienza intendiamo il rapporto tra fondi bloccati e token in circolazione.

La stablecoin con collaterale in cripto

La stablecoin con collaterale in cripto è implementabile con uno smart contract. Di fatto l’idea è quella di partire da una criptomoneta volatile e cederne il rischio dovuto alla volatilità a qualcuno disposto ad accollarselo. Ma perché dovremmo trovare qualcuno disposto ad accollarsi questo rischio? Perché la volatilità è bidirezionale, c’è un rischio ma anche un’opportunità di guadagno. Possiamo immaginare Alice e Bob dove la prima non vuole il rischio di volatilità e il secondo è disposto ad accettarlo. Alice e Bob creano uno smart contract ed entrambi mettono dentro 1 ether che supponiamo valga oggi $100. Il contratto quindi dispone di 2 eth, ovvero $200 di valore nozionale. In cambio Alice ottiene subito dal contratto 100 stable-token del valore di 1$ l’uno, mentre Bob ottiene 100 risky-token. La regola copre tre casi:

  1. se il giorno dopo eth è stabile (non ha cambiato prezzo) Alice potrà ottenere indietro esattamente il suo eth se vorrà liquidare tutti i 100 stable token, idem per Bob.

2. se il giorno dopo eth si apprezza, ad esempio passa da $100 a $200, Alice potrà liquidare i suoi 100 stable-token e ottenere l’equivalente di $100, ovvero 0.5 eth, mentre Bob potrà prendere tutto il resto, ovvero 1.5 eth ($300), per la precisione 0.015 eth per ogni risky-token che possiede, realizzando dunque un profitto, la giusta ricompensa per essersi accollato il rischio.

3. se invece il giorno dopo eth diminuisce di prezzo, ad esempio passa da $100 a $66, Alice potrà comunque liquidare i suoi 100 stable token e ottenere 1.5 eth (ancora $100). Per Bob purtroppo i suoi 100 risky token valgono 0.5 eth e il suo investimento si è dimezzato.

Nel caso estremo se eth passa da $100 a $50, Alice sarà ancora in grado di liquidare i suoi token ottenendo 2 eth ($100), mentre Bob vedrà i suoi risky token valere esattamente zero. Si deduce che la protezione che il contratto ha prodotto nei confronti di Alice è inefficace per un crollo superiore al 50%, questo perché il nostro contratto ha un collaterale pari al 200% della somma da stabilizzare. Per questa ragione le stablecoin con collaterale in cripto sono inefficienti dal punto di vista del capitale.

Questi meccanismi non sono nuovi e non sono altro che un modo di cedere il rischio, la cosa interessante è che non sono regolati da contratti scritti su un pezzo di carta e in forza di qualche legge, ma sono automaticamente eseguiti da uno smart contract la cui logica di esecuzione è trasparente alle parti e immodificabile.

Un caso esemplare di questa tipologia di smart contract è il MakerDAO. L’emissione di DAI avviene quando l’utente blocca un certo collaterale in dentro uno smart contract detto vault, il collaterale minimo è pari al 150% del valore emesso in DAI. Ma tale soglia è quella a cui la vault verrebbe messa in liquidazione, per cui è sempre auspicabile un collaterale pari al 200% e oltre. Quando parte la procedura di liquidazione il collaterale viene usato per comprare i DAI dal mercato secondario e “bruciarli” in modo da garantire che il circolante in DAI abbia sempre un collaterale.

Il collaterale delle vault DAI può essere ether, bitcoin e BAT. Bitcoin è incapsulato dentro un token erc20 attraverso un meccanismo di peg (ovvero un token emesso per ogni bitcoin “bloccato” in un determinato wallet, non molto diverso da quanto viene fatto per rappresentare un dollaro in un USDT Tether). Questo permette ai bitcoin di essere programmabili con gli smart contract di Ethereum.

Stable coin senza collaterale

Infine l’ultimo tipo di stable coin è quello ideato nelle Seignorage Shares. In questo modello lo smart contract si comporta come una banca centrale e di fatto non richiede nessun collaterale. Per la sua implementazione sono previsti almeno due tipi di coin: la stable coin di cui si vuole stabilizzare il prezzo ed un bond coin. In generale la stable coin ha un prezzo osservabile attraverso un meccanismo basato su oracoli decentralizzati e il suo obiettivo potrebbe essere il prezzo di un dollaro. La seconda coin invece è quella che “assorbe” la volatilità, essa può consistere in un titolo di credito o bond che può essere acquistato con la stablecoin e che alla scadenza da diritto ad 1 stablecoin. Quando il prezzo della stablecoin è in discesa ( ad esempio $0.9 ) questo indica un eccesso di circolante e per mitigare l’eccesso lo smart contract emette nuovi bond e li mette all’asta. Il fatto che il prezzo della stable sia inferiore a $1 e la promessa di un guadagno futuro spinge gli investitori a spendere gli stable per comprare i bond, gli stable verrebbero distrutti nella transazione diminuendo l’offerta di stable e riportando il prezzo vicino a $1. Nel caso contrario, se il prezzo della stable è in crescita (ad esempio $1.1) lo smart contract decide di creare extra stablecoin per acquisire bond dal mercato e distruggerli, aumentando l’offerta di stable che dovrebbe dunque abbassarne il prezzo.

Tra le implementazioni di questi protocolli di seignorage shares vanno citati i progetti Basis e Carbon. Interessante notare che il progetto Basis è stato sospeso dagli autori perché la SEC (autorità di vigilanza americana) ha posto la sua attenzione sul progetto e questo non è stato accolto come una normale procedura dagli autori ma come un’interferenza totalmente distruttiva convincendoli a chiudere completamente il progetto.

Libra e le altre, ovvero le criptovalute di stato

Infine vediamo le ultime protagoniste delle cronache. Fiumi di parole sono stati spesi su Libra e non crediamo di poter contribuire a spiegare meglio di tanti altri in cosa consista questo progetto e in cosa sia consistita la reazione delle autorità. L’unico aspetto che vogliamo cogliere è che Libra si basava su due ingredienti ad alto tasso di esplosione: l’enorme base di utenti potenzialmente pronti ad adottarla e la stabilizzazione basata su un paniere costituito da titoli di stato. Avere da un lato oltre un miliardo di utenti e dall’altro poter decidere quali titoli di stato sono “buoni” e quali no avrebbe dato a Libra e ai suoi mastermind la capacità di governare e controllare l’economia ad un livello di cui forse oggi non dispongono neanche le banche centrali. I BOT italiani non ci piacciono? non li mettiamo nel paniere. I titoli americani ci piacciono? li mettiamo nel paniere. Essere un cliente così importante nel mercato dei titoli di stato ti permetterebbe di influenzare prezzi e condizioni e quindi le sorti delle politiche economiche e fiscali di interi paesi.

E questo non credo piaccia ai governi!!

Che quindi si sono inventati le criptovalute di stato. Ma le parole sono importanti, “criptovaluta di stato”, anche a ripeterlo a voce alta non suona più convincente.

Ricapitoliamo un attimo qual è il modello di attacco per cui Bitcoin ha senso e con lui le monete basate su blockchain.

La blockchain e le criptovalute risolvono un problema semplice semplice: come trasferire un valore da un registro A ad un registro B rispettando delle regole condivise a priori e senza che ci sia qualcuno che decida arbitrariamente di cambiarle o di eluderle. Si chiamano cripto non perché siano criptate ma perché grazie alla crittografia è possibile firmare digitalmente l’equivalente di “assegni” e trasferire il valore da A a B senza che A e B si conoscano e senza che A e B siano noti o autorizzati da qualcuno. Basta che rispettino le regole del protocollo informatico.

Non mi pare una cosa molto compatibile con l’idea di criptovaluta di Stato.

Ma infatti non bisogna neppure pensare che gli stati vogliano fare delle criptovalute, piuttosto vogliono fare delle valute digitali totalmente centralizzate. Ma che vantaggi porterebbero?

  • inclusione: invece di avere il conto presso una banca commerciale ognuno di noi potrebbe avere il conto direttamente presso la BCE. Utile? Beh, almeno sembra semplice e alla portata di tutti.
  • efficienza: Non avremmo più bisogno delle clearing house, i pagamenti sarebbero immediatamente addebitati e accreditati in un unico registro centrale. In un colpo solo si farebbe fuori un business ipermiliardario.
  • legalità: grazie al monitoraggio delle attività illecite. Ogni transazione potrebbe essere monitorata direttamente. Non ci sarebbe bisogno di “seguire il denaro”, il denaro è lì a disposizione delle autorità in tutta la sua storia dalla culla alla tomba.

Per approfondire i vantaggi alcuni accademici americani hanno prodotto un paper nel quale evidenziano tutti i vantaggi di un dollaro digitale di Stato.

Sembra uno scenario idilliaco. Perché non adottarlo immediatamente? A dispetto di quello che molti pensano l’attuale sistema non è così centralizzato. Le banche commerciali “creano” denaro, le transazioni sono sparse fra vari conti di tesoreria e poi riconciliate e compensate nelle clearing house.

Si potrebbe obiettare che i primi tentativi di valuta digitale di stato siano goffi e mal riusciti, pensiamo subito al Petro del Venezuela, di fatto un tentativo di aggirare le sanzioni internazionali grazie ad una ICO di stato.

In realtà sgombrando il campo dall’ipotesi di una realizzazione naif quali sarebbero i problemi di una valuta digitale di stato?

  • Single point of failure, il sistema è vulnerabile dove concentra la sua funzione vitale. Un bel data leak a livello centrale colpirebbe tutti in modo generalizzato ed in un colpo solo. Per non parlare di un malfunzionamento che bloccherebbe di fatto l’economia intera.
  • Abuso della vigilanza, nessuna transazione passerebbe inosservata. Vogliamo davvero questo?
  • Corruzione del controllo, eliminare gli intermediari sembra bello ma vogliamo veramente che “uno” decida su tutto, come evidenziato da Massimo Simbula.

Conclusioni

Le stable coin sono utili. Quelle di cui abbiamo discusso qui sono prevalentemente legate alla crittografia e alla possibilità di “viaggiare” sui binari dei protocolli delle criptovalute. ma esistono anche le valute digitali di Stato e Libra. Queste sono cose totalmente diverse e dobbiamo stare attenti perché così come difendiamo a spada tratta il diritto di non usare l’app di contact tracing quella della moneta è una battaglia ancora più grande che riguarda il delicato equilibrio tra autorità dei governi e le libertà individuali.

Tornando alle stablecoin in blockchain abbiamo visto tre modi per realizzarle, con collaterale in moneta a corso legale, con collaterale in cripto e senza collaterale. Sfortunatamente se si vanno a vedere i numeri:

  • Collaterale in moneta a corso legale, USDT Tether e simili = $10B
  • Collaterale in cripto, DAI = $600M
  • Senza collaterale, Basis e Carbon ? (praticamente zero)

“Dai DAI!”, potrebbe essere un’inizio incoraggiante per la seconda categoria ma peccato che da qualche mese visto il mercato molto ribassista i meccanismi di stabilizzazione degli smart contract siano puntalmente falliti costringendo la community di MakerDAO a votare per introdurre USDC come ulteriore tipo di collaterale cercando dunque un’ancora di salvezza nella stabilità fornita in modo indiretto da un’altra stable coin (di quelle garantite da collaterale in fiat)

Sicurezza e audit degli smart contract

Spero di fare cosa gradita pubblicando la lecture che ho tenuto nel 2019 alla Scientific School on Blockchain and DLT sulla sicurezza e ispezione del codice degli smart contract. Il 2020 è un anno pieno di incognite, quale migliore occasione di usare la rete come veicolo di diffusione. Nell’attesa di confermare l’appuntamento per la School 2020 vi auguro buona lettura.

Aste decentralizzate per i nomi su Ethereum

Oggi ho comprato il dominio digitaldavide.eth. Non lo trovate su whois, non su quello tradizionale almeno, digitaldavide.eth è un dominio Ethereum : \

Questa è una di quelle cose oscure che forse fra 10 anni potrebbe però farci esclamare “ah, ne avevo sentito parlare, ma sai … non avevo tempo”. Nessuno può dirlo in realtà ma le pieghe e le curve del passato possono farci riflettere. Quanto saremmo stati furbi a comprare 20 anni fa un dominio internet come hotel.com, oppure music.com. Qualcuno ci aveva pensato, il nostro connazionale (mio concittadino) Nichi Grauso ad esempio comprò centinaia (o forse migliaia) di domini di tipo un po’ generalista tipo gelato.it, banane.com eccetera. Non credo che la cosa si sia tramutata in un grosso profitto per lui, comunque  da bravo imprenditore aveva fiutato che in qualche modo i domini avrebbero dominato il mondo e scusate il gioco di parole.

Dare i nomi alle cose è importante, perfino nella Bibbia, Adamo inizia la sua vita assegnando i nome alle cose che trova nel paradiso terrestre. E Internet se non è un paradiso è sicuramente un mondo complesso. Facciamo un passo indietro, cosa sono i name service e perché sono importanti? Ogni volta che scriviamo sul browser un indirizzo come facebook.com oppure spediamo una mail a paolorossi@gmail.com diamo per scontato che il messaggio arrivi a destinazione e che questi indirizzi siano localizzabili in rete. In realtà in una rete ogni computer non ha direttamente un indirizzo tipo digitaldavide.me. Quello che ha invece è un numero assegnato che comunemente è formato da 4 interi tipo 157.149.45.55 (sì caro esperto, sto parlando di IPv4 e ormai dovremmo parlare di IPv6, ma dammi tempo). Quindi dare un nome (es. digitaldavide.me) alle cose (esempio 156.144.4.33) avviene grazie ad un name service, che si chiama DNS ed è costituito da una vera e propria rete planetaria di computer che mantengono questa tabella gigantesca di indirizzi e numeri IP. Il fatto che sia una rete  e che il protocollo sia aperto consente a questo importante servizio di funzionare senza essere vincolato a qualche particolare azienda.

Quindi possiamo usare la parola magica? Possiamo dire che è DECENTRALIZZATO?

Lo è ma fino a un certo punto, esistono delle autorità, esistono dei server cosiddetti root ed il tutto è ricondotto appunto ad una gerarchia. La testa di questa enorme rete di gestione dei nomi su internet è ovviamente negli Stati Uniti dove ci sono la maggior parte dei root server.

Un dominio internet si compra da società specializzate come Godaddy o Namecheap, ma anche le italianissime Tiscali o Aruba. Quando si vuole comprare un dominio si verifica che nessuno lo abbia già comprato e si acquista tramite uno di questi provider che poi si occuperanno di diffondere questa informazione a tutte le macchine della rete DNS.

Sebbene questo servizio sia distribuito globalmente e regolato da accordi e protocolli esistono delle autorità e come tale un record DNS è censurabile. Ad esempio i famosi siti pirata di cinema online vengono regolarmente ostacolati grazie all’oscuramento del loro nome nella rete DNS. Questo significa che in realtà gli stessi siti sono sempre lì, raggiungibili tramite il numero IP. Comunque, tale pratica di oscuramento non porta molto lontano visto che i suddetti cambiano record DNS e ricominciano daccapo senza cambiare una virgola, o meglio cambiano solo una sillaba e passano da cinemagratis.it a cinemagratis.pink

Torniamo invece al mio nuovo dominio digitaldavide.eth. Prima di tutto dobbiamo chiarire che non serve a mappare il nome su un indirizzo internet, ma piuttosto un nome su un indirizzo ethereum, ovvero una stringona di 20 byte come questa

0x8387a9f497353af8a54269824f2272195c3c2a0f

Un indirizzo Ethereum è associato ad un account e permette di ricevere, spedire cripto-moneta e di interagire con gli smart contract. Anzi, gli smart contract stessi sono identificati da un indirizzo eth. Quindi il nome digitaldavide.eth è mappato su un indirizzo eth, il mio, o meglio uno dei miei. Che per inciso ho creato io dal mio wallet personale senza chiederlo a nessuno. Questo è il potere della decentralizzazione. Nessuna autorità è necessaria per fornirci un indirizzo eth.

Per mantenere una tabella che mappa ogni nome verso un indirizzo ETH ovviamente useremo uno smart contract, o meglio viene usato uno smart contract. Non c’è bisogno neanche di dirlo, ma l’esecuzione del DNS, o meglio dell’ENS, è praticamente un gioco da ragazzi in Ethereum dato che è una blockchain nata proprio con lo scopo di permettere la programmazione di sistemi decentralizzati.

Tuttavia, dotarci in  modo autonomo di indirizzi ETH è relativamente facile in quanto si tratta di una risorsa pressoché illimitata, infatti lo spazio degli indirizzi è costituito da 2^160 possibili elementi. Si tratta di quantità difficili da concepire con la nostra intuizione, diciamo che il numero di atomi di tutto l’universo è un numero molto piccolo in confronto.

Quando si tratta di nomi invece succede che solo un numero piccolo di combinazioni alfanumeriche ha un senso compiuto ed ovviamente un dominio come pizza.eth è molto più appetibile di sZZdf3dDfd.eth

La domanda quindi è “in assenza di un’autorità” chi permette la vendita e la registrazione dei domini? Ovviamente anche la soluzione è uno smart contract ed è precisamente un’asta decentralizzata.

Il tipo di asta implementato dallo smart contract di ENS è precisamente un’asta di Vickrey, ovvero un’asta con offerte segrete in cui vince l’offerente più alto ma paga il prezzo della seconda miglior offerta.

Il frequentatore assiduo di blockchain e dintorni avrà subito intuito una difficoltà nella creazione di un’asta con offerte segrete. Infatti Ethereum, così come Bitcoin, è un protocollo in cui i dati sono spediti in chiaro, non esiste la possibilità di creare transazioni e spedire dati a contratti senza che questi dati risultino visibili. Tutti vedrebbero la nostra offerta segreta, si fa per dire.

Per ovviare a questo inconveniente l’implementazione dell’asta Vickrey è divisa in due fasi: una fase di offerta detta appunto bidding, ed una fase di rivelazione, detta appunto reveal.

Nella fase di offerta, gli offerenti mandano una cifra allo smart contract che gestisce l’asta e insieme mandano una versione cifrata dell’offerta (sempre all’esperto, non è cifrata, tecnicamente è l’hash sha3 dell’offerta) che viene dunque salvata nello smart contract. In parole povere, per ogni offerente l’asta conserva un record fatto così

indirizzo ETH dell’offerente, soldi spediti, offerta cifrata

Notare che i soldi spediti non sono l’offerta, ma sono una sorta di cauzione in grado di coprire l’offerta se questa risulta vincente. Quindi se io spedisco 1 ETH, ma ne offro in realtà 0.3 ETH all’asta, un osservatore esterno vedrà una transazione in blockchain fatta più o meno così

0x<indirizzo di Davide>, 1 ETH, “daijoi99rjfijo=?ç”

dove l’ultimo pezzo incomprensibile è l’offerta vera e propria. Si potrebbe obiettare che di sicuro l’offerta è inferiore alla cauzione di 1 ETH, in realtà non è così scontato. Infatti in un asta Vickrey vince l’offerente che fa l’offerta più alta, ma paga il prezzo offerto dalla seconda offerta più alta. Quindi se io offro 3 ETH, ma verso 1 ETH di cauzione, in realtà se il secondo più alto ha offerto 0.9 ETH sono ancora dentro e posso concludere l’asta in modo vincente. Se invece la cauzione non basta, beh sono guai. Perdo la cauzione e anche l’asta.

Veniamo alla fase di reveal, dopo un certo numero di ore, lo smart contract smette di accettare nuove offerte e si mette appunto nello stato di reveal. A questo punto chi ha fatto un’offerta la deve spedire in chiaro allo smart contract che potrà verificarla (per l’esperto, in pratica lo smart contract fa sha3 dell’offerta rivelata in chiaro e verifica che il risultato sia uguale a quella stringa cifrata mandata in fase di bidding).

Anche la fase di reveal ha una durata limitata a 48 ore, dopo di che lo smart contract in pratica stabilisce chi è il vincitore. Per chiudere tutto poi l’utente deve fare una terza transazione di finalizzazione, o se preferite in italiano di liquidazione. Ovvero tutte le “cauzioni” spedite vengono restituire ai mittenti, e anche il vincitore pagherà con il prezzo del secondo arrivato e quindi probabilmente riceverà indietro la somma risultante in eccesso.

A questo punto digitaldavide.eth è in mio possesso, tuttavia non è finita qui. Bisogna infatti fare delle ulteriori transazioni per stabilire quale indirizzo ETH 0x… deve essere risolto dal nome digitaldavide.eth.

Tutto si fa attraverso un wallet ETH in grado di interagire con gli smart contract di ENS. Nessuno sito web intermediario in teoria sarebbe necessario.

In questo modo possiamo anche confermare che non solo dotarsi di un indirizzo ETH non necessità di nessuna entità centrale, ma anche dotarsi di un nome con il suffisso .eth avviene in modo totalmente decentralizzato attraverso uno smart contract.

 

 

 

 

 

 

 

 

 

 

 

 

Fare una ICO non è una passeggiata

Uno degli articoli più letti del mio blog è “Fare una ICO in pochi semplici passi“. Il titolo è sicuramente un po’ catchy ma sinceramente è nato come una specie di corso istantaneo sugli elementi fondamentali di una ICO e con una forte attenzione agli aspetti tecnici, in particolare agli smart contract.

La caratteristica più evidente delle ICO di qualche mese fa era la totale centralità dell’aspetto tecnico e la totale novità di creare un collettore di investimenti usando poche righe di codice sorgente in linguaggio Solidity.

Questa era la novità! Ovvero la conseguenza naturale delle criptovalute e degli smart contract si concretizzava nella raccolta di fondi erogati da anonimi, attraverso un codice che girava “serverless” a fronte di un white paper che somigliava più ad una tesina di uno studente che ad un business plan. Ed era un mondo bello! Un mondo affascinante e pericoloso dove i techies si aggiravano come rockstar o meglio come eroi e antieroi belli e ribelli pronti a rivoluzionare il mondo o a truffare qualche ingenuo coiner. Ma è un mondo che non esiste più. Sono infatti passati alcuni mesi.

Nell’era della blockchain pochi mesi rappresentano un passato remoto e gli anni sono epoche. Ciò che funzionava un anno fa non è detto che possa funzionare oggi. Negli ultimi due anni ho seguito con molto interesse diverse ICO, piccole e grandi. Ho incontrato decine di ICO proponents, molti curiosi e molti “wannabe investors” che hanno puntato su questo o quel progetto. Io stesso ho puntato qualche chip dove mi sembrava di vedere valore ma qualche volta semplicemente per FOMO. Ci sono una serie di caveats che ho imparato.

Tempo. Fare una ICO non è una cosa immediata. Non si fa in un mese e neanche in 3 mesi. Fare una ICO dall’idea alla raccolta potrebbe richiedere anche un anno.

Tecnica. Creare token è facile ma poi … Posso creare token ERC20 in cinque minuti con l’IDE remix senza neanche scaricarmi la blockchain. Eppure questo non fa di un token qualcosa che valga la pena essere comprato. Dare un senso ed un valore è molto più difficile.

Token? perché? Non è detto che al tuo progetto serva una ICO ed un token. O meglio, a che serve il tuo token? Può essere rimpiazzato da un coin nativo? Se sì allora cosa aggiunge? Io dico sempre a chi me lo chiede, se fai una ICO ed emetti un token allora devi costruire un nuovo ecosistema non un semplice prodotto. In un ecosistema tu potresti non essere il centro. E’ la decentralizazzione baby.

Esperti. Tutti sono esperti di blockchain e di ICO. Attaccarsi una medaglia di ICO advisor o ICO expert su linkedin non è così difficile. Ma cosa significa praticamente? In molti saltano sul carro del vincitore, ma bisogna guardare chi si occupa di blockchain da 1 anno e distinguerlo da chi se ne occupa da 3 mesi o da 5 anni.

Compliance. La compliance sta per soffocare o forse farei meglio a dire sta per trasformare il mondo ICO. Ormai il Know Your Customer sta diventanto preponderante. Questo significa che la meravigliosa semplicità di una ICO retta da soli due smart contract è sparita. Ora bisogna verificare identità, conservare dati personali, ottemperare alla GDPR (anche nota come “fine del mondo”).

Centralizzazione e FIAT. Ormai le ICO vendono i loro token con diverse valute, sia cripto che FIAT. Questo enfatizza ancora che lo schema semplice e bello di uno smart contract Ethereum che vende token in cambio di ETH non basta. Ma se non basta allora forse non serve. Nascono sempre più soluzioni “centralizzate” che gestiscono la vendita dei token.

Sicurezza. Non si deve mai risparmiare sulla sicurezza. Fare audit degli smart contract e di ogni porzione di codice che gestire il denaro non è una semplice prassi, dovrebbe essere un obbligo morale e professionale. I bug sono i malintesi tra l’uomo e la macchina e succedono sempre.

Marketing. Le ICO sono migliaia, quindi nessuno noterà la tua. Questo è un po’ quello che succede oggi. Oltre ad aver inventato un bel business decentralizzato e scritto del codice sicuro devi anche farti conoscere. Banale. Ma all’aumentare del numero di ICO aumenta il rumore e la competizione. Gli investimenti in marketing diventano una barriera di ingresso. Fare il post su BitcoinTalk e aprire un gruppo telegram sono senz’altro necessari ma non sufficienti. Facebook ha ormai bannato ogni tentativo di pubblicizzare ICO (ma persino libri su criptovalute). Quindi il marketing deve battere nuovi canali ogni volta. Post a pagamento, partecipazioni a convegni e fiere naturalmente. La vicinanza alle community che contano è sempre un plus. Non mi meraviglierei di vedere fra qualche mese le prime ICO con spot televisivi.

Legal. Naturalmente questo è un aspetto essenziale. Come si può fare una ICO e stare tranquilli? Ad esempio quante ICO italiane ci sono state? Poche direi. Me ne vengono in mente una o due. Il motivo? L’incertezza degli aspetti giuridici. Perché fare una ICO quando un pretore qualunque in cerca di notorietà potrebbe puntarvi la prora addosso e accusarvi di frode o vendita non autorizzata al pubblico di prodotti finanziari. Ma non è l’Italia il problema per gli ICOers. La SEC americana è forse il baluardo più ostico. Centinaia di inviti a comparire sono stati inviati negli ultimi mesi.

Utility Token Vs Security Token. Nel primo caso sei a posto, nel secondo la SEC ti viene a cercare. In realtà dire che il proprio token è utility scrivendolo cento volte nel white paper non significa niente. Quasi sempre gli utility token non sono utility per niente. Quasi sempre i prodotti proposti possono funzionare senza quei token. Come già detto se fai un prodotto non ti serve fare un utility token.

Good news. Ci sono anche buone notizie però. I security token non sono il male, anzi. Penso che il 2018 e 2019 vedranno l’ascesa dei token security o asset token capaci di rappresentare asset fisici o finanziari. Naturalmente questo potrà funzionare solo grazie a qualche marchingegno legale che permetta di usare i token in blockchain come elementi rappresentativi di diritti di proprietà o di utilizzo. Altre buone notizie, beh le ICO così come le criptovalute sono qui per restare. Sono anche loro una diretta conseguenza del paper di Satoshi.

 

 

 

Commenti sul BatchTransfer bug in ERC20 e i fantastiliardi di $$$

L’ultima mazzata alla credibilità di Ethereum viene da queste news di Aprile che descrivono come da una semplice transazione del BeautyToken BEC di non so quanti trilioni di trilioni di token ognuno con un controvalore di circa $0.32 sarebbe la più grande transazione commerciale della storia. Vedere per credere i massimi token holder al momento

https://etherscan.io/token/0xc5d105e63711398af9bbff092d4b6769c82f793d#balances

Purtroppo, pare che questo bug non sia limitato al solo BEC token ma una dozzina di altri token abbiano evidentemente copy/pasted lo stesso codice. Qui una lista di quelli noti

 

Ovviamente di tratta di glitch, bugs, exploit di qualche malfunzionamento del codice. Come risposta gli exchange hanno chiuso tutte le transazioni di token ERC20 (per chi non lo sapesse ERC20 sono le specifiche che descrivono come uno smart contract Ethereum deve essere fatto per funzionare come un token).

Sembra che tutto il problema derivi da questa funzione batchTransfer ( )

batchoverflow.jpg

che vorrebbe in pratica con una sola transazione spedire un po’ di token a diversi destinatari. Una specie di airdrop insomma.

Ma si sa, la programmazione è la diabolica arte di inserire bug nei programmi, oppure se preferite un programma è il codice che sembra funzionare tra un bug e l’altro. Insomma per farla breve questo codice presenta un problema di overflow.

2 + 2 = 0

se il vostro registro è fatto con soli due bit. Se i bit sono 256 il concetto non cambia.

A prima vista si direbbe che i devs fossero consapevoli dei problemi di overflow perché hanno utilizzato la SafeMath library (questo lo capiamo dal fatto che somme e sottrazioni sono nella forma .sub( ) e .add( )

Importare e usare queste librerie che sono scritte apposta per evitare gli overflow è una condizione necessaria ma non sufficiente. Soprattutto se da qualche parte ti dimentichi di usarla come avviene nella riga 257. Passando alla funzione batchTransfer( ) dei parametri opportunamente forgiati:

batchTransfer([addressA,addressB],0x8000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000)

avviene il fattaccio, ovvero che la variabile amount nella linea 257 diventa

uint256 amount = 2 * 0x8000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000

che è esattamente 0 a causa dell’overflow.

Quindi il successivo require alla linea 259 risulta rispettato e il codice successivo viene eseguito quando invece non dovrebbe.

Risultato finale: addressB e addressA ricevono dal nulla la modesta cifra di 0x8000<altri 60 zeri a seguire> token che significa 2^255 token a testa. Non male.

Di chi è la colpa?

Colpa di Ethereum!!!  colpa di Vitalik !!!  colpa dei token !!!.

Si è letto un po’ di tutto in giro. Soprattutto FUD. Ci sta che gli exchange sospendano le transazioni ERC20 per verificare quali di questi token tra le migliaia ormai listate possano soffrire della stessa vulnerabilità. Ma bisogna specificare che questo è un bug di chi ha scritto lo smart contract per questi token e non è un bug della piattaforma Ethereum.

Secondo punto, non è nemmeno qualcosa che deriva dallo standard ERC20 che non prevede la possibilità di fare questo batchTransfer( ).  Ricordiamo quali sono le funzioni previste per ERC20

Screenshot 2018-04-29 16.18.50.png

Quindi non è colpa di Vitalik se non nella misura in cui Ethereum è stato progettato per permettere a chiunque di mettere user code in blockchain. Ma questa in fondo è la più grande forza di Ethereum, senza di questa ci bastava Bitcoin (e per molti effettivamente è così).

 

 

 

 

Un pomeriggio con EtherDelta

EtherDelta l’ho conosciuto per caso. Un bel giorno che la rete ETH era veramente congestionata e il gas price stava a 100 Gwei mi sono chiesto che diavolo stesse succedendo, i soliti gattini?

Allora grazie ai potenti mezzi di Etherscan.io sono andato a vedere chi stava facendo tante transazioni. Poteva essere che qualche mega ICO mi fosse sfuggita? Sì, anche perché me ne sfuggono tante, per fortuna.

Invece non erano i gattini e neanche la mega ICO di turno, era tale EtherDelta. Come vedete sotto, EtherDelta fa il 5% di tutte le tx Ethereum.

Screenshot 2018-01-28 12.57.07

Ma cos’è questo EtherDelta? Di fatto è un’exchange decentralizzato per i token Ethereum. E non è decentralizzato semplicemente perché possiamo fare bonifici e spedirci token come avviene su LocalBitcoins o altre piattaforme che fanno incontrare la domanda con l’offerta e poi lasciano la gestione delle transazioni agli utenti, no. EtherDelta è uno smart contract Ethereum principalmente e quando scaricate l’interfaccia utente dentro il browser cerca immediatamente un provider Web3 per collegarsi ad un nodo Ethereum e necessita di firmare le transazioni con le quali gestirete il vostro trading.

L’interfaccia di EtherDelta è questa, è purtroppo è un po’ complicata, acerba e a tratti inquietante. Ma è probabilmente unico nel suo genere e merita attenzione e rispetto per la sfida che gli sviluppatori hanno voluto cogliere.

Screenshot 2018-01-28 13.03.12

 

Merita anche prudenza però. Se non sapete cosa state facendo vi spariscono i vostri ETH e non capite nemmeno dove. Si vola senza paracadute ed è meglio volare basso all’inizio. Non mi pare la piattaforma ideale per piazzare subito ordini da $10k. Io ho cominciato con una somma da $50 circa, e successivamente da $500 e mi è andata bene, ma nei vari passaggi ho sprecato diversi $$ a causa della mia scarsa comprensione iniziale dello strumento e di quali fossero le procedure da seguire.

Quello che colpisce di EtherDelta è che ogni azione, ogni click di mouse è potenzialmente una transazione Ethereum.

Sposto gli ETH dal conto metamask al conto trading= transazione.

Creo un’ordine=transazione

Cancello un’ordine=transazione

Il fatto è che le transazioni si pagano. Al momento del mio piccolo esperimento il gas price era di soli 4Gwei (oggi incredibilmente è 1Gwei) ma ci sono stati momenti di particolare congestione e volatilità delle fee con gas price a 100 Gwei nelle settimane appena trascorse.

Ad esempio, nel mio caso non avendo capito subito che avevo un balance trading ed uno corrente separati, mi incaponivo a fare ordini che poi andavano a buon fine ma ottenevo 0.0 token in cambio. Salvo che pagavo le fee di transazione (il gas) ogni volta. Credendo fosse un problema di timing (qualcuno più veloce di me che mi soffiava gli affari sotto il naso) l’ho ripetuto N volte e via.

Alla fine però l’idea mi di EtherDelta mi piace, l’implementazione può migliorare molto ma sono sulla buona strada. E’ sicuramente un prodotto molto innovativo.

La domanda a questo punto è: ma a cosa serve? Perché non usare un classico exchange? Si potrebbe discutere per ore sulla filosofia dei sistemi centralizzati Vs. sistemi decentralizzati, di come gli exchange possono giocare sporco etc. etc. ma in realtà io sono finito su EtherDelta per una ragione molto più pratica e materiale.

Volendo acquistare i token di Pillar (ottimo progetto IMHO) ho trovato che potevo farlo su HitBTC, exchange sul quale avevo già un account. Easy peasy dunque … se non fosse che appena ho visto le fee di prelievo degli PLR mi sono veramente spaventato, in pratica la fee base per prelevare i PLR è di 150 PLR, considerato che 1 PLR = 1$ al momento in cui ho fatto questa operazione capite bene che mi sono scoraggiato.

Su EtherDelta ho speso molto meno, forse un $10-$15 ma in gran parte dovuti alla mia inesperienza nell’uso del mezzo. Senza fare nessuno degli errori che ho commesso, andando dritto nella sequenza di azioni di: deposito, spostamento su conto trading, ordine, prelievo; me la sarei cavata con 4-5 tx ETH e circa $1-$2 di fee complessive. Alla faccia degli exchange centralizzati.

PS: dopo due giorni i PLR hanno fatto un +20% 🙂

PPS: se googlate a dovere trovate diverse guide step by step su come usare EtherDelta, per lo più in inglese. Io non me la sento di scrivere una vera guida.

 

 

 

 

 

 

 

Cagliari Ethereum Lab Token

CEL Token, Cagliari Ethereum Lab … o in generale Crypto Economy Lab. Insomma il nostro meetup di Cagliari è se non il primo, tra i primi a dotarsi di un token ERC20, quelli che si gestiscono con i wallet Ethereum.

A cosa serve? Beh a incentivare la partecipazione. Come? Questo è il bello di avere un meetup in cui deciderlo.
https://www.meetup.com/Cagliari-Ethereum-Lab/

Si chiama CEL, e ce ne sono appena 9999.
https://ethplorer.io/…/0x662ba51f62591830cd380a7a9beb232dbd…

Sono pochi? Forse. Ma in realtà hanno 18 cifre decimali, e poi la scarsità crea interesse. Sì, ma ancora … a cosa servono? Per ora l’idea è quella di “minare”, o meglio, “sbloccare” 1 CEL per ogni evento e magari 2-3 CEL per eventi più importanti. I partecipanti riceveranno via airdrop una porzione del token “sbloccato”.

La prima conseguenza è quella di creare un sistema stile gioco di ruolo simile a quello dei forum BB. Più token hai, più sali di livello e sblocchi funzionalità … che però devono essere ancora definite. Chi acquisisce un intero CEL diventa un Full Member, con 2 CEL si diventa Champion e così via …la gestione delle RSVP e delle waiting list potrebbe essere un primo caso d’uso.

E’ un esperimento e non si limiterà al solo meetup di Cagliari. Abbiamo già un meetup di Londra pronto ad adottarlo. Potrebbe diventare il token dei meetup 🙂

Seguiranno presto aggiornamenti.