Tutte le promesse che Bitcoin deve mantenere nel 2019
Molti parlano di bitcoin ma pochi li usano. Sono davvero l’inizio di una nuova economia o solo l’ultimo oggetto di una bolla speculativa? Pubblichiamo un estratto dal libro di Massimo Amato e Luca Fantacci Per un Pugno di Bitcoin. Rischi e opportunità delle monete virtuali (UBE-Università Bocconi editore).
Alcuni indicatori possono bastare per dare le dimensioni del fenomeno: una «capitalizzazione» di oltre 100 miliardi di dollari, 200.000 transazioni giornaliere, per un controvalore intorno a 500 milioni di dollari al giorno (blokchain.info, dati aggiornati al 10 settembre 2018), fra 3 e 6 milioni di utenti attivi stimati e circa 100.000 esercenti che accettano pagamenti in bitcoin (Mauro, 2015;
Hileman, Rauchs, 2017).
Tuttavia, per valutare il successo di bitcoin, non bastano le statistiche. I numeri ci dicono quanto fa, ma non come lo fa.
Sul piano strettamente quantitativo può sembrare plausibile la sfida lanciata da bitcoin al monopolio delle valute ufficiali: infatti, nel 2015 la «capitalizzazione» di bitcoin era meno di un millesimo della quantità di moneta in euro e circa pari alla quantità di moneta boliviana (BCE, 2015, p. 16).
Dopo soli due anni, il valore complessivo dei bitcoin in circolazione è fra un ventesimo e un decimo dell’offerta monetaria delle principali valute in banconote e monete.
È bene precisare che, per effettuare un confronto più significativo, il valore dei bitcoin va
paragonato non alla misura più ristretta di moneta, M0, che comprende solo banconote e monete metalliche, bensì all’aggregato statistico più ampio M1, che comprende anche i depositi, ossia la moneta tradizionale nella forma di moneta elettronica.
Si scopre allora che il valore complessivo dei bitcoin rappresenta un più modesto 2,7 per cento della massa monetaria globale. E ciò senza considerare aggregati monetari ancora più ampi che
comprendono altre forme di moneta immateriale tradizionale.
Tuttavia, per poter valutare se il bitcoin sia una buona moneta, o se anche soltanto meriti il nome di moneta, non bisogna guardare alla sua quantità ma se e come assolve alle funzioni monetarie.
Quanto vale bitcoin
Una caratteristica essenziale per una moneta è la stabilità del potere d’acquisto. Se una moneta ambisce a essere usata diffusamente come mezzo di pagamento, occorre che il suo valore sia relativamente stabile in termini della quantità di beni e di servizi che permette di acquistare.
Se si vuole che un numero crescente di persone e di imprese siano disposte ad accettare bitcoin in cambio delle loro prestazioni, bisogna che quelle persone siano ragionevolmente sicure di poter cedere a loro volta i bitcoin ricevuti in cambio di prestazioni più o meno equivalenti.
Una «capitalizzazione» di oltre 100 miliardi
di dollari, 200.000 transazioni giornaliere,
per un controvalore intorno a 500 milioni di
dollari al giorno, fra 3 e 6 milioni di utenti
attivi stimati e circa 100.000 esercenti che
accettano pagamenti in bitcoin
Una moneta che sia soggetta a cambiamenti di valore violenti e imprevedibili non è una buona moneta. Producendo guadagni e perdite immeritate, non costituisce un mezzo di scambio affidabile.
Misurare il potere d’acquisto di una moneta non è un’operazione univoca. Comporta
l’identificazione, in una certa misura arbitraria, di un paniere di beni e servizi di riferimento.
Così è costruito, per esempio, l’indice dei prezzi al consumo (IPC), utilizzato dall’Istat per misurare l’inflazione.
Non esistono misure analoghe per bitcoin. Il motivo è molto semplice: non esistono, a oggi, listini prezzi fissati in bitcoin.
Anche le imprese che accettano bitcoin in pagamento fissano i prezzi nella valuta che utilizzano prevalentemente e nella quale sono denominati gran parte dei loro costi, e aggiornano
continuamente i prezzi in bitcoin per tenere conto delle variazioni del tasso di cambio di bitcoin.
Finché un’impresa non sostiene la maggioranza dei propri costi in bitcoin non può permettersi di parametrare i prezzi dei propri prodotti, e quindi i propri ricavi, in bitcoin. Altrimenti si esporrebbe a un rischio di cambio eccessivo.
A oggi, l’unico lavoro retribuito in termini di una quantità prefissata di bitcoin è quello dei minatori.
E con un rischio enorme anche per loro, poiché anche i loro costi (di affitto, macchinari, elettricità, tasse) sono denominati, e devono in gran parte essere pagati, in moneta ufficiale.
L’assenza di dati relativi al potere d’acquisto del bitcoin è già un indizio della sua volatilità rispetto a quello delle valute ufficiali che, a differenza del bitcoin, sono utilizzate correntemente per
denominare i prezzi e per stipulare i contratti.
L’andamento del tasso di cambio fra bitcoin e una moneta legale, come per esempio il dollaro, può servire come buona approssimazione della variabilità del suo potere d’acquisto.
Quando il primo bitcoin è creato, il 3 gennaio 2009, non ha alcun valore. Il tasso di cambio di una valuta, come ogni prezzo di mercato, dipende dalla domanda e dall’offerta. Siccome non è vero che l’offerta crea la propria domanda, tantomeno quando si tratta di moneta, la mera creazione di bitcoin non è sufficiente perché il suo prezzo assuma un valore positivo.
Il cambio dollaro/bitcoin rimane pari a zero finché qualcuno non è disposto a pagare una somma superiore a zero dollari per acquistare un bitcoin. Ciò avviene per la prima volta un anno e mezzo dopo la creazione del primo bitcoin, il 17 agosto 2010, quando un bitcoin è venduto per 7,69 centesimi di dollaro.
Il prezzo del bitcoin rimane nell’ordine di qualche centesimo di dollaro per altri sei mesi, fino al febbraio del 2011, quando supera la soglia psicologica di un dollaro.
Dopo aver oscillato intorno al valore di un dollaro per un paio di mesi, il bitcoin ha il suo primo exploit fra aprile e giugno 2011, quando raggiunge in poche settimane il valore di 35 dollari. Ma la corsa al rialzo è interrotta dall’incertezza seguita alla chiusura della più grande piattaforma di trading, Mt.Gox, in seguito all’attacco di un hacker (BCE, 2012, p. 26).
Nel giro di una settimana, dal 10 al 18 giugno, il valore si dimezza. Ad agosto è già tornato sotto i 10 dollari e lì rimane per un anno fino all’agosto del 2012, quando comincia nuovamente a risalire.
Dapprima gradualmente, mese dopo mese, fino a raggiungere i 20 dollari nel febbraio del 2013. Lì inizia un’ascesa vertiginosa: il cambio raddoppia nel giro di un mese, portandosi a 40 dollari all’inizio di marzo.
Di fatto, il prezzo di bitcoin sembra
dipendere dall’attenzione mediatica più che da qualunque altro fattore
È solo l’inizio: prima della fine del mese, è già raddoppiato di nuovo, superando gli 80 dollari. Il raddoppio successivo avviene in una sola settimana: il 7 aprile il bitcoin vale già più di 160 dollari e il 9 tocca un massimo relativo a 237 dollari.
Sono i mesi della crisi di Cipro e, con l’imposizione di controlli sui capitali, cresce la domanda di bitcoin come strumento per aggirarli (Aranguena et al., 2014, pos. 368). Ma anche questa volta l’euforia non dura: bastano tre giorni per riportare il prezzo a 76 dollari.
Si mantiene intorno ai 100 dollari per altri sei mesi. A ottobre 2013 comincia un altro rally: il cambio del bitcoin passa da 100 a 200 dollari prima della fine del mese. Raddoppia nuovamente in altre due settimane e, prima della fine di novembre, rompe la soglia di 1000 dollari, toccando un massimo relativo a 1151 il 4 dicembre 2013.
Ancora una volta, però, non regge: altre due settimane e il valore si dimezza di nuovo, tornando sotto i 600 dollari. In questo caso, il crollo è apparentemente connesso con la decisione della Banca centrale cinese di vietare le transazioni in bitcoin (BCE, 2015, p. 31).
Dopo altre violente oscillazioni, il cambio si mantiene intorno ai 5-600 dollari fino ad agosto 2014, quando inizia un lento trend decrescente che porta il bitcoin nuovamente sotto i 200 dollari a inizio 2015. Per gran parte del 2015 il valore rimane fra i 200 e i 300 dollari, forse non a caso attorno al suo costo di produzione di allora (Capoti, Colacchi, Maggioni 2015, pos. 1184).
Poi, a distanza di tre anni dalla precedente, inizia una nuova impennata, meno repentina ma più marcata. Il prezzo di bitcoin raddoppia una prima volta, da 250 a 500 dollari, in sette mesi, da fine ottobre 2015 a fine maggio 2016. In altri sette mesi, il prezzo raddoppia di nuovo, sfondando quota 1000 nei primi giorni del 2017. Ma è solo l’inizio. Nel corso del 2017 il prezzo di bitcoin aumenta di venti volte, arrivando a sfiorare quello che resta ad oggi il massimo storico a 20.000 dollari a metà dicembre
Alla base di questo nuovo incremento ci sono alcuni fattori concreti. L’adozione di un regime normativo e fiscale favorevole alle criptovalute in alcuni paesi (come il Giappone e l’Australia) ne agevola la diffusione.
L’instabilità economica e valutaria in altri paesi (come il Venezuela sull’orlo della guerra civile e l’India colpita dalla demonetizzazione improvvisa delle banconote di grosso taglio) provoca la fuga dalle monete tradizionali e fa apparire bitcoin come un possibile rifugio dagli arbìtri (o anche semplicemente dalle tentazioni inflative) delle banche centrali.
Nel frattempo, la parziale chiarificazione del quadro normativo e la decisione della borsa di Chicago di quotare titoli a termine (futures) sui bitcoin contribuiscono a incentivare l’afflusso di investitori istituzionali su quello che viene visto sempre più come un mercato emergente in piena espansione
(Fantacci, 2017).
Tuttavia, al di là di questi fattori contingenti, la spinta principale all’ascesa del prezzo di bitcoin viene da un meccanismo tipico delle dinamiche speculative: le aspettative che si autorealizzano. In sostanza, se ci si attende un rialzo dei prezzi si corre ad acquistare e, così facendo, si contribuisce a generare il rialzo atteso.
L’effetto è tanto più forte nel caso del bitcoin, giacché l’offerta è fissa e non ha alcuna possibilità di adeguarsi all’incremento della domanda.
Di fatto, il prezzo di bitcoin sembra dipendere dall’attenzione mediatica più che da qualunque altro fattore. Recenti autorevoli ricerche suggeriscono che si tratta di un rapporto statisticamente significativo (Liu, Tsyvinski, 2018). A far salire il prezzo di bitcoin, più di qualunque sua virtù intrinseca, è il fatto stesso che se ne parli.
Leggi anche:
Ridare il controllo agli artisti: la blockchain e il futuro di ogni cosa di Michael J. Casey e Paul Vigna,
Come creare una criptomoneta di Frater Turing-Lovecraft
Che cos’è ‘Commoncoin’, la moneta digitale per un’economia collaborativa di Marco Sachy
Immagine di copertina: ph. Pawel Janiak da Unsplash
Come creare una criptomoneta
Tutti parlano in questi giorni parlano di criptomonete. Per chi volesse essere “apprendista stregone”
presentiamo di seguito una breve guida su come creare una propria valuta virtuale. Per ragioni di
semplicità, questo articolo descriverà come effettuare la procedura sul sistema operativo Mac OS X, dovrebbe essere possibile replicare il processo senza difficoltà su qualsiasi altro sistema operativo (in particolare su Linux). In ogni caso, più che alle tecniche di ogni singolo passo (l’accumularsi di prove ed errori rappresenta l’assoluta norma) conviene invece focalizzarsi più sul senso di quello che stiamo facendo. L’idea di questo articolo non è di trasformare i lettori in sviluppatori nel giro di poche pagine, quanto nel capire cosa stiamo facendo e perché lo stiamo facendo. A tale proposito abbiamo deciso di modificare non direttamente il codice di Bitcoin, ma di un suo fork (derivato dalle medesime librerie di base) Litecoin. La scelta ha esclusivamente ragioni di comodità, la differenza principale rispetto a Bitcoin è che questo sistema per effettuare l’hashing non utilizza la funzione SHA-256, ma un’altra nota come Scrypt, una funzione di derivazione di chiave basata su password.
Ora interroghiamoci su quali potrebbero essere le caratteristiche di questa nuova valuta.
Quasi a esorcizzare la potenza terribile contenuta nel denaro, la maggior parte delle valute
presentano dei simboli sacri, o comunque sembrano fare riferimento a un universo soprannaturale.
Decidiamo di pagare il nostro personale omaggio a questa tradizione rivolgendoci anche noi al soprannaturale, dedicando la moneta a una divinità che ci ha sempre aiutato nei momenti di difficoltà, Cthulhu.
Fonte: Cthulhu Offerings http://cthulhu.tk Cthulhu Offerings è un altro progetto che fonde la tecnologia delle criptomonete con le ispirazioni tratte dalla mitologia creata da Howard Phillips Lovecraft. L’iniziativa non ha alcuna relazione con il CthulhuCoin qui descritto.
Con il cuore colmo di devozione per i grandi antichi, andiamo quindi sulla pagina del progetto Litecoin (https://github. com/litecoin-project/litecoin), e cloniamo in locale il codice sorgente sul nostro desktop. In alternativa, possiamo anche scaricare tutto il pacchetto come un unico file zip. I tasti sul browser sono i seguenti:
Chiamiamo la directory in cui andiamo a clonare il progetto rinominandolo CthulhuCoin.
Teoricamente, dovremmo creare un fork sul GitHub del progetto Litecoin chiamandolo CthulhuCoin, e poi lavorare direttamente lì sopra. Tuttavia ai fini della nostra piccola panoramica questi passaggi non sono strettamente necessari.
In alternativa, è possibile procedere anche da riga di comando. Vi sarà sufficiente creare una directory di nome CthulhuCoin con questo comando:
mkdir CthulhuCoin
E lanciare quindi il seguente comando:
git clone https://github.com/litecoin-project/ litecoin.git CthulhuCoin/
Il processo di download porterà via qualche minuto. Se non lo avete già, installate brew, che vi aiuterà nella gestione dei pacchetti con le dipendenze (Nota: non c’è garanzia che queste istruzioni restino valide anche in futuro. Potrebbero cambiare nomi e indirizzi):
ruby -e “$(curl -fsSL https://raw. githubusercontent.com/Homebrew/install/master/ install)”
Una volta superato questo passaggio, diamo il seguente comando per installare le librerie necessarie a rendere Litecoin compilabile.
brew install autoconf automake libtool boost miniupnpc openssl pkg-config protobuf qt ora spostatevi nella directory CthulhuCoin dove il sorgente è stato scaricato e date il seguente comando
./autogen.sh
Qualora il file autogen non risulti eseguibile date il seguente comando:
chmod +x autogen.sh.
Questo renderà il file configurabile. Adesso lanciate questo comando, prestando attenzione al doppio trattino davanti sia a with-gui che a enable-debug:
./configure –with-gui –enable-debug
Per una questione di OpenSSL impiegate dal sistema operativo, la procedura su Mac OS X potrebbe fallire, allora date i seguenti comandi e rilanciate il passo di configure:
export LDFLAGS=-L/usr/local/opt/openssl/lib export CPPFLAGS=- I/usr/local/opt/openssl/include
Fate anche attenzione alle librerie qt che avete installate, potrebbero creare un conflitto di versione:
brew info qt.
Adesso rimpiazziamo tutte le occorrenze di “litecoin” con il nome della nostra nuova valuta. Il risultato finale così sarà sicuramente più gradito al nostro oscuro signore.
Prestate attenzione che il comando configure sia stato completato correttamente senza errori. Se dovesse fallire con un messaggio del tipo:
checking for Berkeley DB C++ headers… no configure: error: libdb_cxx headers missing Allora installate la seguente dipendenza mancante:
brew install berkeley-db4
Da riga di comando, spostiamoci nella cartella /src del nostro progetto e diamo i seguenti tre comandi da terminale.
Nel caso il find/replace fallisca, con un errore del tipo sed: RE error: illegal byte sequence provare a ripetere dando prima il comando export LC_ALL=C.
Dopo aver dato il comando make, il nostro client si chiamerà cthulhucoind e cthulhucoin-qt.
Sull’isola di R’lyeh l’oscuro signore ne sarà sicuramente felice! Allo stesso modo è possibile sostituire nel codice il logo di Litecoin con uno a vostra scelta modificando le immagini sotto le cartelle src/qt/res/icons e in src/qt/res/images. Vi consiglio di sostituire le immagini con altre equivalenti per nomi, formato e dimensioni. Per esempio, sappiamo già che lo splash screen (l’immagine di quando l’applicazione viene caricata) si chiama splash.png e misura 480×320 pixel (da sostituire in src/qt/res/images) mentre le icone (bitcoin. png e bitcoin.ico) devono andare sotto src/qt/res/icons. Noi abbiamo usato la banconota di Cthulhu che avete appena visto.
Dopo aver verificato che il pacchetto scaricato sia compilabile, possiamo aprire e modificare il file con un ambiente di sviluppo. Negli esempi che seguono abbiamo provato con il QT Editor. Tenete presente che è solo uno degli ambienti di sviluppo possibili, e che lo stiamo usando per ragioni storiche e quasi sentimentali: infatti la primissima versione del client Bitcoin si chiamava appunto Bitcoin-QT. Voi potete usare qualsiasi ambiente di sviluppo, ma se non avete intenzione di distribuire commercialmente il vostro codice e vi impegnate a rispettare la licenza LGPL, potete scaricare gratuitamente una versione gratuita del software qui: www.qt.io/download-open-source.
Una volta terminata la lunghissima procedura di installazione, possiamo aprire il nostro nuovo ambiente di sviluppo.
Non preoccupatevi, potrebbe forse sembrarvi ostico, ma non lo è. Ora procediamo con
l’importazione del progetto. Aperto l’IDE clicchiamo tasto destro sullo spazio bianco a sinistra, “New Project”.
Nella finestra successiva scegliamo l’opzione “Import Project”:
Come ultimo passo, importiamo tutti i file sotto la cartella Src
E così il nostro progetto, casa dei futuri grandi antichi, è importato!
CthulhuCoin
Innanzitutto dobbiamo decidere una sigla per la nostra cripto-moneta. Tutte le valute infatti hanno una sigla di tre caratteri che le caratterizzano (Eur, Usd, Chf, Gbp e così via). Noi non saremo certo da meno! Decidiamo di chiamare la nostra Cthul-huCoin con la sigla CTH. Andiamo nel menu
“Advanced find”, e sostituiamo tutte le occorrenze della vecchia sigla della valuta LTC (Litecoin) con la sigla CTH (CthulhuCoin).
Quindi clicchiamo “Replace”, tenendo sempre impostato il flag “Preserve case”. Occhio a effettuare una ricerca “case sensitive”, altrimenti si rischia di modificare parti che non andrebbero toccate.
In questo modo la nuova valuta ha avuto il proprio battesimo! Se finora abbiamo giocato con le proprietà “cosmetiche”, adesso andiamo finalmente a modificare le variabili “monetarie” della nostra nuova moneta dedicata al dio oscuro, prima tra tutte, la quantità totale di denaro circolante.
Ora apriamo il file amount.h e troviamo il valore massimo preimpostato per Litecoin, 84 milioni di Litecoin circolanti. Se avessimo aperto il codice originale di Bitcoin sarebbero stati 21 milioni.
/** No amount larger than this (in satoshi) is valid */
static const CAmount MAX_MONEY = 84000000 * COIN;
Poiché vogliamo che l’oscuro signore rechi il suo messaggio di morte a più persone possibile,
aumentiamo di due cifre la già considerevole massa monetaria. Speriamo che il dio Cthulhu apprezzi anche l’inflazione, visti gli oltre 8 miliardi di monete che abbiamo appena messo in circolazione con la sua indescrivibile effigie.
Adesso apriamo il file main.cpp e andiamo nel metodo get-BlockValue. Verifichiamo la presenza di un campo nSubsidy.
CAmount nSubsidy = 50 * COIN;
Questa è la ricompensa elargita a chi è in grado di effettuare il mining del blocco. Inizialmente il valore è di 50 e si ridurrà con il tempo. Poiché i grandi antichi sanno ricompensare generosamente la lealtà dei propri malvagi e poco longevi devoti, portiamo questo valore a 200.
CAmount nSubsidy = 200 * COIN;
Questo è il valore iniziale della ricompensa. Già che ci siamo, notiamo immediatamente sotto il meccanismo che dimezza la ricompensa con il passare del tempo.
int halvings = nHeight / Params().
SubsidyHalvingInterval();
Adesso cerchiamo di modificare l’intervallo di tempo nel quale un nuovo blocco dovrebbe essere generato. Apriamo il file chainparams.cpp e vediamo alcuni tra i parametri più interessanti della nostra nuova creatura.
Il primo è il parametro nTargetSpacing, che calcola il tempo medio nel quale dovrebbe essere possibile risolvere il problema computazionale di un nuovo blocco di transazioni. Il parametro nTargetTimespan invece regola l’intervallo di tempo durante il quale dovrebbe essere ricalcolata e aggiustata la difficoltà del problema che genera la proof-of-work.
Poiché Cthulhu sa ricompensare con generosità divina i malvagi adoratori, abbassiamo ulteriormente questo già basso valore a un minuto mezzo (nel codice originale di Bitcoin è 10
minuti). Tuttavia, considerando che l’oscura divinità cefalopode ha dormito per eoni e eoni potrebbe non essere pronta per riconsiderare così spesso la difficoltà dei problemi computazionali che
sottopone ai suoi fanatici discepoli. Quindi alziamo questo valore a dieci giorni nella classe CChainParams, lasciando il TargetSpacing inalterato. Troviamo gli stessi parametri anche per la TestNet( CTestNetParams) e il Regression Testing (CRegTestParams). Se intendiamo usare Testnet, conviene modificare i parametri anche lì.
nTargetTimespan = 10 * 24 * 60 * 60; // 10
giorni espressi in secondi
nTargetSpacing = 2.5 * 60; // 150 secondi
In pratica il ricalcolo della difficoltà avverrà d’ora in poi ogni nTargetTimespan diviso nTargetSpacing, ovvero ogni 96 minuti (o 5760 secondi che dir si voglia).
Appena sotto questi parametri troviamo la porta di default su cui il nostro client sarà in ascolto per stabilire connessioni. Cambiamo questo valore a 1890: anche se è una well known port (ovvero una porta in un range tale per cui probabilmente qualche altro client la starà usando come default) ci permetterà almeno di rendere omaggio all’anno di nascita di Lovecraft. Anche questo valore ricorre come nella nota precedente negli stessi insiemi di parametri (più nell’Unit Testing, in questo caso).
nDefaultPort = 1890;
Una curiosità: avrete sicuramente notato un valore vAler-tPubKey.
vAlertPubKey = ParseHex(“045337216002ca6a71d63 edf062895417610a723d453e722bf4728996c58661cdac
3d4dec5cecd449b9086e9602b35cc726a9e0163e1a4d40 f521fbdaebb674658”);
Nel codice Bitcoin originario questa è la chiave pubblica dedicata alle comunicazioni di servizio che devono raggiungere tutti i nodi del network. Chi fosse in possesso della chiave privata associata a quella pubblica, sarebbe in grado di mandare un messaggio a tutti quanti i nodi connessi alla rete Bitcoin (o Litecoin, come in questo caso, o CthulhuCoin). Nel codice originario di Bitcoin, questa chiave privata fu condivisa da Satoshi Nakamoto con il nuovo lead developer Gavin Andresen prima
di ritirarsi dalla gestione attiva del codice.
Adesso aprite il file primitives/block.h e osservate questa dichiarazione:
/** The maximum allowed size for a serialized block, in bytes (network rule) */
static const unsigned int MAX_BLOCK_SIZE = 1000000;
Questo valore imposta il limite massimo di un blocco di bitcoin a 1 megabyte. Provate ad aggiungere uno 0 in fondo, e portare così il limite a 10. Complimenti, avete appena replicato quella sorta di scisma della comunità Bitcoin che è stata la proposta BIP101. Ovviamente, i problemi nella comunità Bitcoin nascono non certo dal modificare questo parametro, ma da come introdurre la modifica mantenendo la retrocompatibilità con la rete esistente. Noi qui abbiamo la fortuna di non avere una rete esistente a cui continuare a garantire servizio.
Nel file main.h troviamo l’indicatore coinbase maturity. Indica dopo quante transazioni consolidate possiamo spendere i nostri soldi di ricompensa. Poiché Cthulhu è uno che non va di fretta e si prende i suoi tempi (solitamente interi eoni) per fare le sue cose, alziamo questo limite da 10 a 200.
/** Coinbase transaction outputs can only be spent after this number of new blocks (network rule) */
static const int COINBASE_MATURITY = 200;
Ora la parte cruciale: il genesis block. A partire da questo primo blocco, tutte le altre transazioni che seguiranno risulteranno corrette.
La definizione si trova in chainsparam.cpp.
Notiamo che il messaggio iniziale di Litecoin è diverso da quello di Bitcoin:
Quello impostato inizialmente da Satoshi Nakamoto infatti recitava: “The Times, 03/Jan/2009:
‘Chancellor on brink of second bailout for banks’”. Adesso scegliamo qualcosa di meno fighetto e più in linea con la nostra vera religione e modifichiamo le seguenti tre proprietà
const char* pszTimestamp = “Ph’nglui mglw’nafh Cthulhu R’lyeh wgah’nagl fhtagn”;
txNew.vout[0].nValue = 200 * COIN;
genesis.nTime = 1447282346;
Il nuovo valore di genesis.nTime è stato ottenuto prendendo un unix time stamp, ovvero il numero di secondi passato dal 1° gennaio 1970. Una semplice ricerca su Internet permetterà sicuramente di ottenere il valore aggiornato. Il valore nValue è stato semplicemente posto al valore della
ricompensa “minato” per ogni blocco che abbiamo definito.
Adesso salviamo tutti i file aperti (save all), chiudiamo l’edi-tor grafico e torniamo alla riga comandi.
Proviamo a lanciare i comandi:
./autogen.sh
./configure –with-gui=qt4 make
Dopo qualche minuto, la compilazione terminerà e finalmente avrete un file eseguibile. Dentro la cartella Src, troverete un file cthulhucoind, potete provare a lanciarlo con il comando
./cthulhucoind. In alterantiva una versione grafica del vostro client è disponibile sotto src/qt/cthulhucoin-qt.
Ora eseguite ./cthulhucoin-qt
Se le vostre librerie grafiche qt sono corrette il client do-vrebbe partire senza problemi. Se avete Segmentation Fault e altre amenità, controllate il livello delle vostre librerie QT (brew info qt), e nel caso rilanciate un ./configure –with-gui=qt4 o –with-gui=qt5 a seconda di quale versione avete installata, prima di rilanciare il processo di build.
Occhio che se installate con qt5 le proprietà da esportare potrebbero essere leggermente diverse a causa di brew:
export CPPFLAGS=”-I/usr/local/opt/openssl/include -I/ usr/local/opt/qt5/include”
export LDFLAGS=”-L/usr/local/opt/openssl/lib -L/usr/
local/opt/qt5/lib”
Dalla cartella CthulhuCoin:
./autogen.sh
./configure –with-gui=qt4 ( oppure ./configure –with-gui=qt5) Make
Alcuni warning saranno comunque mostrati durante quest’ultimo passaggio e possono essere ignorati.
A questo punto è inutile incrociare le dita: la prima esecuzione di CthulhuCoin fallirà miseramente per un problema di assert.
Non temete! Come il sonno lungo eoni di Cthulhu, anche questo era stato previsto!
Aprite il file debug.log che trovate nella cartella dati. La cartella dati dovrebbe essere:
/Users/<vostro_utente>/Library/ Application Support/Cthulhucoin.
Qui troverete il seguente file:
LoadBlockIndexDB(): hashBestChain=12a765e31f
fd4059bada1e25190f6e98c99d9714d334efa41a195a 7e7e04bfe2 height=0 date=2011-10-07 07:31:05 progress=0.000000
Tornate nel codice, sotto chainParams.cpp. Troverete diverse di queste assertion, che fanno riferimento al vecchio valore di hash del genesis block.
assert(hashGenesisBlock == uint256(“0x12a765e3
1ffd4059bada1e25190f6e98c99d9714d334efa41a195a 7e7e04bfe2”));
Queste assert verificano che il valore del genesis block sia congruo, e che quindi il codice non presente problemi, altrimenti fallisce l’esecuzione senza procedere oltre.
Potete o commentare direttamente tutte queste assert (premettendo alla riga i caratteri // ) o sostituire l’hash con il nuovo valore di hash del genesis block, che dovrebbe apparire fuori nel file debug.log che il client crea all’avvio. Tenete presente che nel file chainParams.cpp queste assert sono presenti in tre classi: CMainParams, CTestNetParams e CRegTestParams, con timestamp e nonce diversi, quindi valori di hash differenti. Vanno commentati o sistemati in tutti e tre questi scenari. In alternativa potete impostare appena prima delle assert la stampa di questi valori, sempre nel file chainParams.cpp:
printf(“CthulhuCoin hashGenesisBlock:%s \n”, hashGenesisBlock.ToString().c_str());
printf(“CthulhuCoin hashMerkleRoot:%s \n”, genesis.hashMerkleRoot.ToString().c_str());
Questo farà sì che appena prima di chiudersi l’applicazione vi segnali quali siano i valori di hash del blocco:
CthulhuCoin hashGenesisBlock:
da554b67a4e70285085ce249b09fa44411100ef24cee236656e6e18b09eee 08a CthulhuCoin hashMerkleRoot:
99a7eda105300e1e0df f7b295596f61f3ea935304658ee5052226e9782a656f6 Ora potete semplicemente copiare e incollarli (premettendo 0x a essi) nelle due assert assert(hashGenesisBlock == uint256( “0xda
554b67a4e70285085ce249b09fa44411100ef24cee-236656e6e18b09eee08a” ));
assert(genesis.hashMerkleRoot==uint256(
“0x99a7eda105300e1e0dff7b295596f61f3ea-935304658ee5052226e9782a656f6”));
Ricompilate tramite i comandi: autogen.sh, configure –with-gui=qt4 o qt5 a seconda degli ambienti, make., e verificate di riuscire ad avviare il client.
Stanchi? Speriamo proprio di no, perché questo non era nemmeno l’inizio dell’avventura. Lo scopo di questo breve giro turistico, basato su materiali già presenti in rete, era semplicemente quello di farvi capire quali leve avete a disposizione. I problemi, quando ci si avventura dentro il codice possono essere innumerevoli e imprevedibili, ma è solo grazie al fatto che qualcuno ha perso del tempo per risolverli e per condividere la soluzione che adesso ci possiamo godere un’autentica meraviglia tecnologica come il Bitcoin. In fondo non è questo il senso di una comunità open source? E ora andate là fuori e utilizzate il vostro cyber-grimorio!
Immagine di copertina: ph. Kevin da Unsplash
Oltre la blockchain. Distopia e utopia finanziaria
Tra i concetti dell’area Bitcoin 2.0, legati alle tecnologie di decentralizzazione, merita una menzione particolare il concetto di cryptoequity, vale a dire la creazione di “gettoni di valore” sicuri, basati su network distribuiti e in grado di assicurare titoli di proprietà/accesso su beni fisici o digitali. Nella forma attuale questo concetto si traduce principalmente in quote di proprietà “scritte” sulla blockchain, che in questo modo trasmette valore al di là della mera applicazione monetaria.
La “criptoproprietà” su reti decentralizzate può avere numerose declinazioni tecniche e implica un impatto significativo in termini di regolazione, dato che basa interamente la sua validità sulla robustezza algoritmica ed è relativamente indipendente dai sistemi giuridici.
I quattro significati fondamentali di cryptoequity sono:
Quote di società: il cryptoequity inteso in senso stringente e affine al concetto di “azione”, che consente quindi di avere diritto di voto sulle decisioni di un’organizzazione ed
eventuale partecipazione agli utili. Un esempio è il caso di Bitshares.
Gettoni di proprietà: token digitali che rappresentano forme di proprietà non relative a organizzazioni o a proprietà intellettuale. Un esempio è CommonAccord.
Gettoni relativi a prodotti: token digitali scambiabili con prodotti materiali o immateriali.
Gettoni di accesso: token digitali che offrono l’accesso a reti specifiche o a gruppi ad ammissione ristretta.
Tra i “mattoni” che potenzialmente consentono la costruzione di sistemi di cryptoequity ricordiamo la possibilità di utilizzare smart contract, vale a dire accordi tra parti fissati a livello algoritmico e con caratteristiche di auto-eseguibilità e controllo, indipendenti dall’intervento di terze parti e dall’adesione a un sistema giuridico e normativo esistente. L’altro elemento costituente è il concetto di organizzazione autonoma decentralizzata, in grado di distribuire diritti e doveri tramite un set di regole basate su reti peer-to-peer e robustezza crittografica. Un modo semplice per costruire cryptoequity è l’abbinamento tra una criptomoneta con smart contract e un’organizzazione decentralizzata.
Pubblichiamo un estratto da Hacking Finance (Agenzia X)
Tra le piattaforme che hanno tentato di operare in questo spazio ricordiamo Bitshares, Koinify e Swarm, progetto ora fallito ma il cui potenziale teorico rimane interessante. Swarm, da non confondere con l’omonima app legata a Foursquare, era un sito di crowdfunding che consentiva a organizzazioni e startup di fare fundraising in modo indipendente dai tradizionali canali di
finanziamento. Koinify e BitShares consentono invece di costruire organizzazioni decentralizzate e, nel caso della seconda, di lavorare con una serie diversificata di cryptotoken legati ad altri beni diversi dall’equity tradizionale. Attualmente purtroppo solo BitShares risulta ancora operativa, a riprova dell’alta mortalità delle startup di questo settore
Esistono poi progetti che operano come piattaforma (Mastercoin o Counterparty) consentendo di creare transazioni finanziarie sulla blockchain. Counterparty è la piattaforma che ha abilitato la creazione di iniziative come Swarm e Koinifiy. Infine ci sono progetti, come i già discussi Ethereum e colored coin, che permettono di costruire cryptoasset in senso più generale.
Il primo beneficio che possiamo identificare per il cryptoequity è la presenza di bassi costi di
transazione e di funzionamento: i diritti di proprietà su reti decentralizzate potrebbero essere gestiti con meno spese, in modo più veloce ed efficiente, poca burocrazia, una complessità limitata e una migliore protezione della privacy. Dall’altro lato, è prevedibile che, quando questo settore
raggiungerà una certa dimensione, una qualche forma di regolazione sarà imposta dal legislatore.
Un altro tipo di benefici riguarda la trasparenza: nel caso del crowdfunding di Swarm è possibile applicare una due diligence (ovvero una valutazione e analisi) di natura collettiva sui progetti e si può applicare anche al monitoring e ad altre funzioni. Ciò implica che gatekeeper tradizionali, come i venture capitalist, si ritroverebbero ad avere molto meno potere a disposizione. Si tratta di un processo simile a quello accaduto anni fa con AngelList per quanto riguarda l’investimento in startup.
Un altro elemento di favore per il cryptoequity è la flessibilità: diritti/doveri potrebbero essere ripartiti tra i vari attori in maniera dinamica direttamente dall’algoritmo, cosa molto più difficile e farraginosa da ottenere con i vecchi contratti “manuali”. Gli accordi sarebbero anche più veloci e potenzialmente personalizzabili di quelli ottenuti con i sistemi legali attuali.
Inoltre ci sarebbe un importante vantaggio in termini di accesso: la flessibilità della tipologia di accordi possibili consentirebbe di costruire organizzazioni di natura inedita e permetterebbe di investire a categorie di soggetti finora escluse da questo processo.
Tra le applicazioni potenziali del cryptoequity, a parte la costituzione stessa di società e
organizzazioni, possiamo citare sistemi per il crowdfunding, IPO/aste, sistemi di scambio per asset digitali, mercati secondari e forme di proprietà collettiva e commons.
Tra le critiche vediamo invece alcuni temi ricorrenti, in parti- colare il fatto che le quote di proprietà fondate sulla blockchain non sono legalmente riconosciute in senso ufficiale e che quindi non si tratta di “vere azioni”. È un problema fondamentale che riguarda gli asset digitali in generale e in cui c’è un interessante lavoro di analisi in corso. Un altro quesito riguarda il fatto che la creazione di una moltitudine di progetti di cryptoequity distoglie risorse dal miglioramento della rete Bitcoin ed espone il sistema, nel breve termine, a ulteriori ritorsioni legislative da parte dei regolatori pubblici.
Possiamo notare come alcuni degli esperimenti recenti abbiano dimostrato elevati livelli di vulnerabilità: ricordiamo il progetto The DAO, iniziativa di incredibilie popolarità che a metà del 2016 aveva raccolto oltre 160 milioni di dollari da privati e piccoli investitori, ha subito un cyberattacco devastante che ha messo in pericolo le risorse di molti degli utenti.
Dal punto di vista giuridico le criticità sono molteplici, a partire dal fatto che le quote di proprietà digitale non sono azioni emesse in modo regolare, fino all’ambiguità tra “bene” e “titolo” che caratterizza i token digitali, per non parlare della loro natura radicalmente transnazionale, il tema del riciclaggio di denaro, l’identificazione dei partecipanti e la tracciabilità delle transazioni, i problemi di tassazione e così via.
Per quanto riguarda la definizione giuridica dei bitcoin e dei cryptoasset ci sono diverse scuole di pensiero e non si è ancora giunti a un reale punto d’accordo. In vari contesti regolamentari i bitcoin possono essere infatti considerati come beni, quindi tassabili con l’Iva in caso di compravendita, come asset finanziari, più raramente come monete.
Ci vorrà ancora del tempo per giungere a una convergenza tra normative e sistemi di tassazione, nel frattempo si vive in un contesto dove l’incertezza giuridica è elevata e i riferimenti mutano
rapidamente nel tempo. Anche i casi più illuminati di tentativi di regolamentazione, come la
Bitlicense nello stato di New York, stanno portando comunque a un esodo di startup dalla zona, vista l’incompatibilità tra gli elevati costi di compliance in quanto legati a una regolazione stringente e all’innovazione tecnologica, che per sua natura necessita della libertà di sperimentare a basso costo.
Le tecnologie blockchain si posizionano al di fuori degli steccati tradizionali del diritto ed è quindi decisamente complesso trovare forme di armonizzazione legislativa compatibili con gli ordinamenti attuali e che allo stesso non vadano a snaturare il potenziale delle innovazioni legate alla
decentralizzazione. Sarà questo il vero banco di prova per gli innovatori e i legislatori dei prossimi anni
Costruire le cryptocommons
Un’evoluzione importante del concetto di cryptoequity, ovvero criptoproprietà, è quello di
cryptocommons traducibile come “cripto beni comuni”. Queste sono le applicazione delle tecnologie legate alla blockchain, delle reti decentralizzate, delle Dao (Decentralized Autonomous
Organizations) e delle Dac (Decentralized Autononomous Corporations) per la libera condivisione di risorse tra pari. Nelle cryptocommons le risorse sono monitorate, gestite e distribuite a livello algoritmico, su reti peer-to-peer e tramite software open source.
Perché costruire insieme le cryptocommons? Innanzitutto per superare i limiti delle commons tradizionali, ovvero da una parte il problema del free rider, vale a dire il fatto che singoli individui possono sfruttare in modo eccessivo le risorse comuni a scapito della collettivià, e dall’altro la cosiddetta “tragedia del comune”, vale a dire il fatto che nelle proprietà collettive c’è minore incentivo individuale a preservare la risorsa comune.
A questi si aggiungono i problemi ricorrenti della robustezza delle strutture decentralizzate
impiegate per la distribuzione di risorse e la loro vulnerabilità a forme di appropriazione indebita e creazione di enclosures, ovvero recinti privati nello spazio comune. La blockchain consentirebbe invece di concepire delle cryptocommons o smart commons in grado di evolvere, essere
democratiche e decentralizzate allo stesso tempo, immuni ad attacchi di free rider, capaci di preservare le loro risorse nel lungo periodo tramite regole fissate a livello algoritmico.
Le cryptocommons avrebbero la possibilità di una governance decentralizzata, basata
sull’intelligenza della rete. Le semplici reti peer-to-peer non sono sufficienti, la blockchain consente invece di aggiungere alla rete caratteristiche di sicurezza, stabilità, capacità di gestire asset di valore, coordinamento e “intelligenza” (tramite strumenti come gli smart contract).
Inoltre si invertirebbe il problema tradizionale delle risorse condivise: le commons, ovvero i beni comuni, hanno una difficoltà di gestione proporzionale al numero degli utenti, che storicamente implica l’utilizzo di strutture centralizzate (come lo stato) per gestirne lo sviluppo e la
redistribuzione su larga scala. Le cryptocommons invece possono funzionare in modo opposto: ogni nodo che si aggiunge aumenta anziché diminuire l’intelligenza collettiva della rete, di conseguenza le cryptocommons che crescono possono diventare più efficaci.
Possiamo pensare almeno a quattro implementazioni delle cryptocommons, con alcune tecniche potenzialmente sovrapponibili tra loro:
Basate sulla proprietà: cryptocommons sull’implementazione di una cryptoequity condivisa.
Basate sui contratti: tramite smart contract su partecipazione collettiva oppure smart contract con diritti e doveri di coordinamento collettivo.
Basate su gettoni: cryptoasset, gettoni e cryptocoin che rappresentino quote di proprietà o diritto di accesso alle risorse comuni.
Basate su applicazioni software: applicazioni decentralizzate focalizzate sulla gestione di risorse comuni.
La costruzione di sistemi per la condivisione in rete, tramite l’ausilio della blockchain, è una delle linee di ricerca più promettenti. È anche una delle modalità con cui sarà possibile massimizzare il potenziale democratico delle tecnologie distribuite, rendendole uno strumento per il pieno sviluppo umano e non soltanto un motore per costruire più rapidamente profitti. Uno dei progetti che operano in questo spazio è Backfeed, una piattaforma creata per lanciare in modo semplice ed efficace
progetti di collaborazione decentralizzata. L’iniziativa punta a divenire un protocollo o piattaforma universale da montare sopra la blockchain, da considerarsi come i browser o il protocollo http per internet. Un’altra iniziativa degna di nota è Freecoin, iniziativa creata da Denis Rojo detto “Jaromil”
e supportata dalla rete europea D-cent. Il progetto favorisce la creazione di monete digitali “sociali”
e di meccanismi di remunerazione/incentivazione per organizzazioni orizzontali e democratiche.
[…] Giunti al termine di questo breve viaggio, possiamo cercare di ricapitolare alcuni punti fermi e a
ipotizzare uno schema di tre possibili scenari futuri:
Distopia / Teocrazia finanziaria
I grandi player della finanza riescono a comprendere le nuove onde tecnologiche, adattarsi a loro e alla fine dominarle. In questo scenario gli aspetti peggiori di rigidità, controllo, assenza di privacy sono enfatizzati: le AI (intelligenze artificiali) controllate dalle banche d’investimento riescono a espropriare anche le minime frazioni di valore generato dal lavoro fisico e cognitivo in ogni parte della terra, controllando le persone tramite una rete di contratti di debito ineliminabili, il tutto con il beneplacito di istituzioni e governi. Sostanzialmente si tratta dello Skynet della tecnofinanza.
Utopia
Il potenziale di decentralizzazione delle reti porta alla creazione dell’utopica network society
teorizzata da molti, dove i sistemi peer-to-peer, la democrazia e la trasparenza riescono a erodere le posizioni di potere arbitrario costruite dalle grandi corporation e dai governi. Infatti, i vecchi attori si dimostrano troppo lenti nell’adattarsi al cambiamento e sono soppiantati da una moltitudine eterogenea e interconnessa che riesce a costruire reti autonome per tutelare la propria vita economica, sociale e culturale. È talmente bello che potrebbe anche essere vero.
Scenario misto
Come è accaduto per l’avvento di Internet, si creano nuovi spazi di libertà, alcuni vecchi attori crollano e altri nuovi attori li sostituiscono imponendo nuove forme di controllo e centralizzazione.
La misura in cui questo scenario, crediamo il più probabile, possa avvicinarsi alla realtà dipende da scelte collettive che travalicano la mera questione tecnologica.
Sarà necessario progettare le nuove reti facendo attenzione alle conseguenze sistemiche e, allo stesso tempo, progettare forme di regolamentazione non invasiva e aperta al cambiamento tecnologico.
L’obiettivo è di far coesistere in modo armonico l’evoluzione delle nuove reti con l’erosione progressiva o la reinvenzione radicale del ruolo delle vecchie istituzioni, il tutto evitando shock sistemici e contraccolpi luddisti. Come ha sempre fatto, la realtà saprà improvvisare.
Non ci è dato sapere quale di questi scenari si realizzerà, tuttavia possiamo impegnarci per orientare le nostre scelte collettive, indirizzando standard, protocolli e tecnologie verso una maggiore distribuzione del potere invece che verso una sua ulteriore concentrazione.
Immagine di copertina: ph. Juan Álvarez Ajamil da Unsplash