Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2013/2014 1
AbstractProposta nel 2008 da Satoshi Nakamoto, Bitcoin e nota come la prima valuta elettronica che non richieda
lappoggio o mediazione di alcuna istituzione finanziaria per condurre transazioni e produrre nuove monete.
Tutto questo e possibile sfruttando unarchitettura peer-to-peer totalmente decentralizzata, basata su principi di
crittografia asimmetrica e schemi proof-of-work per gestire lo scambio e creazione di moneta, garantendo protezione
contro tentativi di contraffazione delle transazioni effettuate e attacchi double-spending.
Questo documento si propone di fornire una descrizione di Bitcoin da un punto di vista architetturale, strutturandosi
come segue.
Dopo averne introdotto i principi operativi, sara descritto il contesto di utilizzo di Bitcoin e i principali casi duso,
discutendo quindi le proprieta di maggiore interesse (prime fra tutte la sicurezza, mantenimento di privacy e anonimato
e scalabilita del sistema).
Prendendo in analisi un prototipo di software client (loriginale, concepito come proof of concept del sistema), sara
descritta la sua struttura, con componenti principali e relative funzioni e interazioni, rappresentando in maniera piu
dettagliata il comportamento del sistema; verranno anche descritte alcune derivazioni del modello di client peer-to-peer
originale, piu vicine ad uno stile client-server.
Sara quindi discusso il razionale che sta dietro alla progettazione di una tale architettura, mostrando il risultato di analisi
svolte su alcuni dei suoi punti critici e presentando note alternative a Bitcoin o sue estensioni, fra i sistemi di valuta
elettronica (tra i quali spiccano Ripple ed Ethereum).
2 P RINCIPI OPERATIVI
laccettazione: in un certo senso, le monete
Al fine di eliminare il requisito di trust di possedute da ogni utente sono mantenute da
un utente in altre entita, Bitcoin fonda i suoi tutti gli altri.
principi operativi sulluso di crittografia asim- In ogni caso sara solo Q a poter fare riferi-
metrica per firme digitali e funzioni di hashing mento alla specifica transazione a suo beneficio,
one-way (a senso unico, non invertibili); que- nellatto di trasferire bitcoins ad altri utenti,
sto ne fa la prima criptovaluta effettivamente mediante uso della sua chiave privata e quindi
implementata. firma digitale, verificabile grazie alla corrispet-
Nella rete Bitcoin ogni utente P puo possedere tiva chiave pubblica precedentemente allegata
una o piu identita (o account), definite come da P alla transazione.
coppie (kpub , kpriv ) di chiavi pubbliche e private In sostanza, lunico riferimento ai bitcoins pos-
per crittografia asimmetrica: se da kpub viene seduti da Q e la somma degli importi del-
derivato lindirizzo Bitcoin pubblico di P , kpriv le transazioni a lui destinate e non ancora
e conservata nel suo portafoglio virtuale (wal- utilizzate come input da altre.
let) ed e utilizzata da P per spendere i bitcoins Resta il problema di evitare che P conduca
ricevuti. quasi simultaneamente una seconda transazio-
Una moneta e definita come il risultato di una ne diretta a R, facendo riferimento alle stesse
catena di transazioni, firmate digitalmente da transazioni precedenti (stessi inputs) usate per
chi le emette, tra i diversi partecipanti alla rete Q.
peer-to-peer. Questo attacco e una falla di molti siste-
Ogni nuova transazione da P a Q fa riferi- mi di moneta elettronica, ed e denominato
mento ad una o piu transazioni precedenti, double-spending.
contenenti il quantitativo di bitcoins preceden- Un tipico mezzo di protezione consiste nel-
temente trasferiti a P da altri utenti e conser- lintrodurre unautorita certificata che attesti
vate localmente da ogni partecipante alla rete la validita di ogni transazione controllando
peer-to-peer. che non faccia riferimento ai medesimi inputs
Un messaggio contenente i riferimenti in que- di unaltra, ma naturalmente questo vanifiche-
stione (inputs), lammontare di bitcoins da tra- rebbe lintero paradigma di decentralizzazione
sferire e il digest della chiave pubblica (indi- adottato da Bitcoin.
rizzo) di Q (output), viene emesso in broadcast La soluzione utilizzata consiste invece nella
sulla rete e propagato dai nodi; e opportuno sopracitata disponibilita pubblica di tutte le
menzionare che lunita atomica in cui e possi- transazioni e in un meccanismo che permetta ai
bile scomporre un bitcoin e il satoshi, tale che nodi della rete di concordare (eventualmente)
1 BT C = 100, 000, 000 satoshi. su quale delle due transazioni sia effettiva.
Tutte le transazioni da/a P sono conservate da Tale meccanismo risiede in un timestamp ser-
tutti i nodi della rete, permettendo a Q di vali- ver distribuito che possa gestire una catena
dare pubblicamente quella ricevuta attraverso di blocchi di transazioni, tali che ogni bloc-
un consenso collettivo e a P di osservarne co k conservi nella propria intestazione un
ARCHITETTURE SOFTWARE, A.A. 2013/2014 3
Per quanto riguarda le prime, basti pensare al transazioni, ma daltro canto non tutela
concetto di proprieta popolare della moneta: lo contro compratori disonesti.
scambio di bitcoins non puo essere regolamen- Non e necessario fornire alcuna informa-
tato o tassato in maniera effettiva, poiche non zione personale, per effettuare pagamenti.
esiste un sistema di produzione centrale o un Le monete sono prodotte dagli utenti stes-
operatore di rete attraverso il quale transitino si, i quali investono tempo di calcolo dei
le transazioni. loro processori e corrente elettrica nel pro-
Venendo alle ragioni pratiche, sicuramente Bit- cedimento; la ricompensa monetaria e de-
coin non costituisce lunica alternativa, fra i terminata dal sistema ed e utilizzata co-
sistemi che permettono lutilizzo di valute elet- me incentivo al contributo individuale al
troniche (la descrizione di alcune di esse, com- mantenimento della coerenza globale.
prensiva di vantaggi, problemi e differenze E privo di inflazione: il protocollo specifica
con Bitcoin, e rimandata alla sezione 5), ma che il numero di bitcoins prodotti dalla
la ragione che ha portato al suo successo e creazione di un blocco diminuiranno fino
diffusione, come precedentemente menzionato, a lasciare le sole transaction fees come
e il fatto che funzioni correttamente ormai da guadagno per i miners, nel 2140.
piu di 5 anni, fornendo ad un utente medio Tuttal piu vi e rischio di deflazione,
numerose motivazioni per il suo utilizzo: quando questo limite sara raggiunto.
Garantisce una forma di anonimato (mag-
Creare un account consiste nella sempli- giori dettagli a riguardo nella sezione 3.2.2)
ce installazione di un software. per gli utenti.
Permette di effettuare pagamenti con ra- Ultimo ma non meno importante: non ri-
pidita: dal momento in cui la transazione chiede alcuna forma di trust in entita inter-
e emessa, piu nodi saranno impegnati a medie (banche, societa di carte di credito)
lavorare sulla sua validazione, cos che e laccount di ogni utente (inteso come
possa essere inserita nella block chain, in coppie di chiavi) e conservato unicamente
un procedimento che e stimato durare 10 da lui stesso.
minuti circa.
Esistono anche le cosiddette transazio- Il diagramma in figura 4 mostra i normali casi
ni zero-confirmation: accettate istantanea- duso per Bitcoin; ogni nodo della rete puo
mente dal ricevente, senza attenderne essere un miner, sebbene ultimamente questa
linserimento definitivo nella block chain. distinzione con lutente normale (il quale si
In entrambi i casi e meno tempo di quanto limita ad effettuare transazioni) sia piu netta
richieda un qualunque trasferimento fra (vedi 3.3.5).
banche. La creazione di nuove identita, intese co-
E economico: non e necessario pagare per me coppie di chiavi e relativo indirizzo Bit-
il privilegio di avere transazioni istantanee coin, e spesso condotta in maniera del tutto
(come con quelle via carta di credito) e le trasparente dal software client utilizzato.
transaction fees sono minime o nulle. Esistono anche alcuni providers di servizi re-
E impossibile che un qualunque gover- lativi a Bitcoin (i piu famosi sono MyBitcoin
no possa attaccarlo, impedirne lutilizzo o e Mt.Gox), i quali conducono transazioni per
cancellare le transazioni, in modo simile conto di piu utenti, sollevandoli dalla gestione
a quanto accade con altre risorse condi- delle proprie chiavi private e utilizzo di risor-
vise attraverso la rete (accesso ai record se computazionali; le implicazioni nellutilizzo
DNS, per esempio), poiche il sistema e di questi servizi sara discusso nelle sezioni
totalmente decentralizzato. successive.
Non si possono annullare le transazioni, Nonostante i fattori che promuovono lutilizzo
ovvero non esiste lo storno di addebito. di Bitcoin allinterno del mercato, ne esistono
Questo impedisce ai venditori di pratica- numerosi detrattori, specialmente in merito al-
re truffe richiedendo lannullamento delle lultimo punto della lista precedente, quindi
ARCHITETTURE SOFTWARE, A.A. 2013/2014 6
questioni relative allimpossibilita per una isti- qualunque operazione, dalla creazione di una
tuzione finanziaria di esercitarvi alcuna forma nuova identita (coppia di chiavi) allemissione
di controllo. di una transazione, con estrema semplicita.
E infatti proprio per merito della sua natura de- Molti di questi software godono di portabilita
centralizzata e garanzie di anonimato che Bit- multi-piattaforma, grazie allutilizzo di librerie
coin rappresenta il mezzo ideale per acquistare specializzate (Boost e Qt per il client originale
droga o riciclare denaro la cui provenienza e Bitcoin Core, scritto in C++) o esecuzione su
illecita. Java Virtual Machine (Bitcoinj).
Citando le parole dello scrittore Charlie Stross, Il tempo medio necessario a portare a termine
noto detrattore di Bitcoin, in un post online: una transazione, ossia a vederla confermata dal
Bitcoin sembra progettato come unarma destinata sistema, rappresenta il tempo di risposta del
a colpire le banche centrali che emettono moneta, sistema per il caso duso principale; questo puo
in omaggio a obiettivi politici ispirati allultra- essere quantificato mediante osservazione della
liberismo: lo scopo e limitare la capacita degli Stati block chain: si rimanda alla sezione 4.
di riscuotere le tasse e monitorare le transizioni Una proprieta piu critica e la scalabilita. Ci si
finanziarie dei loro cittadini [14]. potrebbe chiedere se in futuro, con un notevole
aumento nella frequenza delle transazioni e
blocchi in transito, nonche con un ulteriore
3.2 Proprieta aumento nelle dimensioni della block chain, ri-
manga possibile gestire il carico del protocollo
Segue unanalisi piu approfondita delle pro- per dispositivi personal computer.
prieta rilevanti del sistema Bitcoin, alcune delle Purtroppo unulteriore aggravante e data dai
quali gia menzionate in 3.1. cosiddetti dormant coins: output di transazio-
Laffidabilita del sistema e garantita dalla sua ni nella chain non spesi e non spendibili, in
natura peer-to-peer decentralizzata: fintanto quanto i loro possessori hanno perso le chiavi
che rimarra attiva una porzione della rete Bit- private o sono morti; non ce modo di eliminare
coin (stimata a piu di 3,342,922 nodi da block- questo potenzialmente enorme peso morto
chain.info) sara possibile condurre transazioni dai dati che i milioni di nodi della rete Bitcoin
e vederle confermate. processano quotidianamente.
Lusabilita dei software disponibili per inter- Ad oggi ci sono numerose proposte per mi-
facciarsi con il sistema consente di condurre gliorare questa situazione: congelare parte della
ARCHITETTURE SOFTWARE, A.A. 2013/2014 7
block chain, utilizzare metodi semplificati per velando nuove vulnerabilita (basti pensare al
la verifica del pagamento (vedi 3.3.2) o sem- caso Heartbleed): questo rappresenta, in un
plicemente rimuovere tutte le transazioni con certo senso, un limite intrinseco dei sistemi
output gia spesi. di sicurezza informatica che si affidano a tali
meccanismi.
3.2.1 Sicurezza Un altro aspetto di sicurezza puo risiedere nel
come il sistema riesca a tutelare gli utenti da
La sicurezza nella gestione dei propri soldi venditori o acquirenti disonesti. Non e possi-
costituisce sicuramente il requisito non fun- bile annullare transazioni e da cio ne deriva
zionale piu importante, nellarchitettura di un che una volta effettuato un pagamento, in caso
sistema per valute virtuali. di dispute fra le due parti non sia possibile
Come precedentemente menzionato, in Bitcoin risolverle, non avendo un ente centralizzato al
ogni utente conserva i soldi di ogni altro utente, quale rivolgersi.
in quanto questi sono rappresentati dalle tran- Tuttavia grazie al meccanismo di transazioni
sazioni con output non spesi, conservate allin- multi-signature e possibile introdurre un broker
terno della block chain e mantenute dallintera intermediario e suddividere lacquisto in due
rete. fasi:
Cio che consente ad uno specifico utente di 1) Una transazione dallacquirente a due
reclamare il possesso di un determinato quan- indirizzi: se stesso ed il broker.
titativo di bitcoins, spendendoli nellemissione 2) Una seconda transazione emessa a partire
di nuove transazioni, e una firma digitale per dalla prima, sfruttando firme di acquiren-
mezzo della sua chiave privata. te e broker, destinata al venditore.
Poiche lalterazione di una o piu transazioni
Operando questa suddivisione e possibile bloc-
di un utente risulterebbe impossibile per un
care i bitcoins trasferiti in un limbo fra le due
eventuale attaccante, grazie a quanto appena
transazioni, in attesa che il broker (nel quale
detto e al meccanismo di proof-of-work, ne
entrambe le parti devono riporre fiducia) possa
deriva che lunica potenziale falla di sicurezza
effettuare un controllo sui beni venduti prima
risieda unicamente nella gestione delle chiavi
di partecipare allinoltro del pagamento verso
private.
il venditore.
Tale gestione e stata notevolmente migliorata
Se una delle tre parti tenta di violare laccordo,
negli ultimi anni, al punto di implementare
i bitcoins trasferiti rimarranno semplicemente
tecniche piu sofisticate di manipolazione del
inaccessibili ad ognuno di essi e in attesa di
wallet (vedi 3.4.2).
almeno 2 firme digitali.
Inoltre, Bitcoin prevede la possibilita di ef-
fettuare transazioni che richiedano piu firme
(multi-signature) per poter essere poi utilizzate 3.2.2 Privacy
dai beneficiari.
Un utente potrebbe conservare le proprie n Una delle proprieta piu rilevanti e controver-
chiavi private su diversi dispositivi, in modo se, nellambito delle architetture di sistemi per
tale che se solo n 1 sono compromesse non valute virtuali, e la garanzia di anonimato agli
sia possibile spendere i suoi bitcoins. Natu- utenti che effettuano transazioni: la difficolta (o
ralmente cio presenta un costo aggiunto di impossibilita) nellassociare queste ultime alle
complessita per gestire lo scambio delle firme identita reali (intese come generalita, indiriz-
tra i dispositivi. zi IP e quindi posizioni geografiche o altri dati)
Maggiori dettagli sulle modalita di utilizzo del- degli utenti coinvolti.
le transazioni da parte dei beneficiari saranno Il meccanismo con cui Bitcoin garantisce que-
forniti in 3.5.3. sta proprieta e molto analizzato in letteratura:
A parte questo, rimane la possibilita che uno a partire da alcuni cenni nel paper originale
o piu degli schemi crittografici o funzioni di ([Nak08]), fino a studi piu recenti ([RH13],
hashing utilizzate sia infranto in futuro, ri- [AKR+ 13], [OKH13]).
ARCHITETTURE SOFTWARE, A.A. 2013/2014 8
I nomi utilizzati per i componenti principali aspetto li fa gravare sul sistema che li esegue,
rappresentati in figura 6 esprimono in maniera in quanto consumano una notevole quantita di
piuttosto intuitiva le funzioni svolte da questi, bandwidth, tempo di calcolo e spazio su disco.
in accordo con la terminologia utilizzata prece- Il diagramma dei componenti in figura 6
dentemente: il Core coordina le operazioni degli mostra la struttura di un client completo.
altri componenti, il Wallet gestisce le transa- Alcuni clients di questo tipo sono Bitcoin Core,
zioni emesse dallutente o a lui destinate, la Armory e Libbitcoin.
Chain memorizza lintera block chain e strut-
ture dati annesse, il Miner svolge le funzioni di 3.3.2 Headers-only
mining, il Node gestisce la comunicazione con
Questi clients memorizzano lintera block
gli altri nodi della rete Bitcoin e la GUI consiste
chain, ma comprensiva dei soli headers di cia-
nellinterfaccia grafica esposta allutente.
scun blocco (quindi escludendo le transazioni
Nella sezione 3.4 saranno descritte con mag-
contenute in esso).
giori dettagli le funzioni svolte da ciascun
Questo ha lindubbio vantaggio di ridurre dra-
componente.
sticamente il consumo di memoria (un totale 22
Il principale connettore e rappresentato dal
MB circa, attualmente), ma impedisce ai nodi di
protocollo Bitcoin stesso, atto a realizzare
confrontare le transazioni ricevute con quelle
comunicazione fra diversi clients; altri so-
contenute allinterno dei blocchi della chain,
no HTTP (per le varianti client-server) e
per verificare che siano valide (quindi che non
JSON-RPC.
siano tentativi di double-spending o presentino
Segue una overview delle tipologie di client
un importo mal calcolato).
Bitcoin e relative differenze strutturali [Sku12].
Nonostante cio, in [Nak08] viene suggerita la
possibilita di utilizzare i soli headers dei bloc-
3.3.1 Full chi per verificare la validita di una transazio-
ne (Simplified Payment Verification), determinan-
I cosiddetti full clients sono quelli che
do in quale blocco della chain sia contenuta
implementano lintero protocollo Bitcoin e
la transazione e osservando un numero suf-
possiedono una copia completa della block
ficiente di blocchi concatenati ad esso; mag-
chain.
giori dettagli su come ottenere un link alla
Questi clients sono in grado di scoprire nuovi
transazione allinterno di un blocco in 3.5.4.
nodi e comunicare con essi, inviare e ricevere
Un client di questo tipo e Multibit.
transazioni e blocchi, memorizzare i blocchi
validi su storage locale, verificare tutte le tran- 3.3.3 Signing-only
sazioni ricevute ed emettere in broadcast ad
altri nodi quelle valide. I clients di questo tipo non memorizzano alcu-
Molti clients di questo tipo offrono servizi na informazione relativa alla block chain e ad
addizionali allutente, cioe non strettamente altri peers: si occupano unicamente di creare
connessi alla partecipazione alla rete Bitcoin: transazioni ed inviarle ad un nodo designato,
memorizzare le proprie transazioni nel wallet e il quale le propaghera verso la rete Bitcoin.
criptarlo, fornire uninterfaccia grafica o a linea Alternativamente, possono ricevere il push di
di comando per facilitare linterazione utente e transazioni di interesse (per esempio destinate
altro. a loro, o altri indirizzi Bitcoin).
Fino alla versione 0.3.22, il client originale pos- La differenza sostanziale fra questa tipologia
sedeva anche le funzionalita necessarie a fare di client e le precedenti risiede nel fatto che sia
mining di bitcoins, rimosse in seguito per dare basata su un modello Client-Server: il nodo de-
spazio a clients specializzati (vedi 3.3.5). signato per inviare e ricevere transazioni funge
I clients di questo tipo sono quelli che contri- da unico intermediario verso il resto della rete
buiscono al mantenimento della coerenza glo- Bitcoin.
bale della rete Bitcoin, propagando blocchi e Nella maggior parte dei casi questi providers
transazioni dopo un accurato controllo; questo forniscono accesso ai loro servizi tramite in-
ARCHITETTURE SOFTWARE, A.A. 2013/2014 10
terfacce RESTful e le richieste sono inviate gli importi. Questo attacco e tuttavia inutile in
utilizzando il protocollo HTTP. quanto il server non potra invece contraffare
le transazioni uscenti, le quali necessitano di
firma digitale dal dispositivo client.
Nel diagramma dei componenti in figura 7
e mostrata la ripartizione dei componenti di
un full client tra le due entita client e server
(per alleggerire la rappresentazione sono mo-
strati solo i componenti concettualmente piu
rilevanti, al fine di evidenziare la distinzione).
Figura 7. Signing-only client
Il pregio principale di questi clients e il
consumo di bandwidth e memoria note- 3.3.4 Thin
volmente ridotto, permettendone lesecuzio-
ne su dispositivi desktop (Electrum) e mobili I thin clients, anche denominati eWallets, por-
(BitcoinSpinner). tano ad un livello successivo i signing-only
Esiste anche una web application (Block- clients: si privano non solo della block chain
Chain.info) che fornisce un client di questo e degli indirizzi di altri peers, ma anche
tipo, permettendo linvio di transazioni da bro- del wallet (quindi chiavi private), affidandosi
wser; in questo caso le chiavi private sono crip- completamente ad un server esterno.
tate con librerie Javascript dal dispositivo client Questi nodi si limitano ad inviare richieste
e memorizzate successivamente dal server. al server, il quale assume una funzione di
Lo svantaggio consiste nella necessita di far banca: gestisce chiavi private, firma ed emette
transitare le transazioni dirette allutente attra- transazioni per conto loro, mostra il bilancio
verso un server, il quale potrebbe falsificarne attuale e li notifica di eventuali accrediti; le
ARCHITETTURE SOFTWARE, A.A. 2013/2014 11
dal client, da cui deriva che una perdita o ed eliminano tutta la computazione e I/O
furto di bitcoins graverebbe anche sui clients non necessari.
interessati. Application specific integrated circuit (ASIC):
Un esempio di fiducia mal risposta in uno di circuiti integrati specific purpose, dedica-
questi provider e MyBitcoin, il quale divenne ti unicamente alla computazione di SHA-
inaccessibile il 29 Luglio del 2011 e, tornando 256. Esistono numerosi prodotti di questo
operativo, annuncio il furto da parte di ignoti tipo in commercio, alcuni dei quali (es.:
di meta dei bitcoins posseduti dagli utenti. CoinTerra) raggiungono una frequenza di
Piu recente e lepisodio di Mt.Gox, provider di 2 TH/s (2,000,000,000,000 computazioni di
trading giapponese andato in bancarotta a ini- hash al secondo).
zio del Marzo 2014, dichiarando la scomparsa Poiche, anche utilizzando una GPU, il mining
di piu di 850,000 bitcoins e ricevendo numerose risulta essere troppo lento per un singolo client
cause legali dai propri clienti. (anche in base al valore attuale del target), e
Questi clients sono quelli che maggiormente nata lidea del pooled mining: combinare lo sfor-
stravolgono la natura decentralizzata di bit- zo computazionale di piu miners per risolvere
coin, annullando lo scopo primario del sistema lhashing di un unico blocco (con diverse po-
di evitare il requisito di trust in unentita gestita litiche di divisione del lavoro, ossia dei nonce
da terze parti. da provare).
Questa divisione del lavoro produce ricompen-
3.3.5 Mining se piu piccole (ripartite fra i miners che parte-
cipano alla pool), ma piu frequenti, risultando
I mining clients non inviano o ricevono transa- in una notevole popolarita del sistema.
zioni, ma utilizzano tutte le loro risorse com-
putazionali per costruire blocchi validi da ag-
giungere alla block chain: si limitano ad iterare 3.4 Funzioni
applicazioni di SHA-256 per trovare il non-
ce corretto e soddisfare la proof-of-work del Saranno descritte adesso le funzioni svol-
blocco attuale. te da ognuno degli elementi principali che
ARCHITETTURE SOFTWARE, A.A. 2013/2014 12
3.5.1 Boot
nuova transazione che le indica come input. Il Merkle Root e ricavato mediante costruzione
di un Hash tree (o Merkle tree).
3.5.4 Mining Il tree e costruito applicando la funzione di
hashing a tutte le transazioni nel blocco (foglie
Il mining e il processo che consente di vali- dellalbero) e ripetendo ricorsivamente il pro-
dare le transazioni emesse, costituendo il pi- cedimento sui nodi intermedi, ottenuti come
lastro alla base dellaffidabilita di Bitcoin ed il digest della concatenazione dei due figli.
meccanismo di creazione di nuove monete. Il processo termina restituendo il valore del-
Nei full clients come Bitcoin Core e un compo- la radice (Root), che date n transazioni viene
nente specializzato, il Miner, che svolge questo calcolata con un numero di applicazioni della
procedimento su uno o piu threads separati. funzione di hashing pari alla somma parziale
Plog n
Nella sezione 2 sono stati introdotti i principi n-esima sn = k=02 2k di una serie geometrica.
alla base di questa attivita, segue adesso una Nel caso di un numero dispari di transazioni e
descrizione piu accurata di come un blocco sia sufficiente che ad una di esse sia applicata due
prodotto, inserito nella block chain e diffuso volte la funzione di hashing.
nella rete. Calcolare un digest derivato da tutte le transa-
Un blocco include una o piu transazioni allin- zioni nel blocco consente di salvare spazio su
terno del suo body e un header composto da disco, mantenendo un indice dellintegrita del
diversi campi: blocco al solo costo (in termini di spazio, me-
Un numero di versione a 4 bits, costante moria) di 80 bytes, ossia la dimensione totale
per tutti i blocchi. di un header.
Digest a 256 bits dellheader del blocco Al fine di costruire un blocco ritenuto valido
precedente. dallo schema proof-of-work impiegato da Bit-
Merkle Root a 256 bits, ricavato da tutte le coin, il miner calcola ripetutamente il digest
transazioni nel blocco. dellheader del blocco, applicando SHA-256;
Un timestamp UTC. se la rappresentazione esadecimale del digest
Il target a 256 bits attuale. ottenuto e minore del target (ossia se ha un
Il nonce a 32 bits attualmente considerato prefisso composto da un certo numero di bits
dal miner, nel processo di trovare la proof- 0) il blocco e pronto per essere inviato alla
of work necessaria alla validazione del rete, altrimenti il nonce viene incrementato e
blocco. il processo reiterato.
ARCHITETTURE SOFTWARE, A.A. 2013/2014 20
Il risultato dellhashing, grazie alle proprieta proprio indirizzo Bitcoin e che rappresenta il
di funzioni one-way, e del tutto imprevedibile: premio per la scoperta della proof-of-work;
un qualunque numero compreso tra 0 e 2256 ; poiche questa transazione altera il Merkle Root
piu piccolo e il target, maggiore e la diffi- e quindi lheader del blocco, nessun miner fa
colta (difficulty) nel trovare una delle soluzioni hashing della medesima sequenza di valori.
accettabili. Limporto della coinbase e costante (25 BTC, al
La difficulty e calcolata come il rapporto fra il tempo della stesura di questo documento) ed e
massimo valore che il target puo assumere e dimezzato automaticamente dai nodi della rete
quello indicato dallheader del blocco. ogni 210,000 blocchi, al fine di evitare unecces-
Il target di riferimento per il mining viene siva produzione di bitcoins (3.1) e conseguente
modificato indipendentemente da ogni nodo inflazione.
della rete Bitcoin ogni 2016 blocchi ricevuti. Nel caso in cui la somma totale degli inputs
A ricezione dellultimo blocco, un client con- di una transazione nel blocco superi il valo-
fronta il tempo totale impiegato per produrre re emesso dagli outputs (determinando una
gli ultimi 2016 (calcolato come differenza fra il transaction fee), la differenza viene aggiunta
timestamp dellultimo e quello del primo) con allimporto della coinbase dal miner.
quello ideale di 2 settimane, ottenuto conside- Parametri quali il target attuale e la parte
rando una media di un blocco ogni 10 minuti: costante dellimporto della coinbase, nonche
il target viene modificato in base alla differenza la logica di controllo delle transazioni ricevu-
percentuale fra di essi. te, sono incorporate nel componente Core del
Da notare come aggiungere altre transazioni client.
al blocco durante il procedimento, ricalcolando Rimane da spiegare come viene propagato
quindi la Merkle Root e modificando lheader un blocco, una volta che la proof-of-work e
del blocco, invaliderebbe il calcolo dei digest completata.
precedenti (uno dei nonce gia usati potrebbe Il meccanismo di invio di un blocco da P a Q
adesso portare al risultato). e analogo a quello utilizzato per le transazioni.
Per questa ragione, una volta iniziata la ricer- P invia un messaggio di tipo inv, contenente
ca della proof-of-work il miner non inserisce il digest del blocco, a Q. Se Q non possiede
ulteriori transazioni allinterno del blocco. il blocco localmente risponde con un getdata,
Il compromesso fra il dedicare piu tempo a al quale P replica inviando il blocco vero e
cercare la proof-of-work o raccogliere il mag- proprio, in un messaggio block.
gior numero di transazioni allinterno del bloc- Anche in questo caso il vantaggio e dato dalla
co prima di iniziare, cos da massimizzare la riduzione della bandwidth utilizzata (un mes-
somma delle transaction fees, resta una scelta saggio di tipo block puo avere una dimensione
a discrezione del miner; esiste la possibilita di di svariati MBs).
creare blocchi ad una sola transazione. Alla ricezione segue la verifica che un blocco
Generalmente il Miner estrae il maggior nume- sia valido: il digest del suo header sia minore
ro possibile di transizioni conservate nella lista del target dichiarato, tutte le transazioni allin-
ordinata per transaction fees mantenuta dalla terno del body siano valide e non duplicate
Chain, cos da massimizzare il guadagno. (gia contenute in un blocco nella block chain),
Ci si potrebbe domandare come possa un ela- via sia una sola coinbase e presenti il corretto
boratore poco potente competere con un mi- importo.
ning rig (3.3.5), ipotizzando che abbiano rac- Se il blocco e valido e non duplicato, viene
colto le stesse transazioni nel blocco e conside- aggiunto alla block chain. Sono previsti tre casi:
rando il fatto che il nonce viene incrementato
allo stesso modo da entrambi: otterrebbero i 1) Il digest del blocco precedente corrispon-
medesimi digests. de a quello attualmente in cima alla block
In realta non e cos, in quanto ogni miner chain. Rappresenta il caso ottimale: tutte
aggiunge al blocco una transazione speciale le transazioni nel blocco sono memorizza-
(detta coinbase), il cui output e destinato al te nella hash map che le associa ad esso
ARCHITETTURE SOFTWARE, A.A. 2013/2014 21
super nodi; tuttal piu vi sono dei nodi consi- clients). I signing-only rinunciano alla possibi-
derati affidabili, in termini di presenza sulla re- lita di controllare lo stato delle proprie ope-
te, i cui indirizzi sono hardcoded allinterno del razioni, conservando il solo accesso ai propri
client originale e che possono essere contattati bitcoins mediante possesso del wallet. I thin
al primo avvio di un nodo. clients rappresentano una migrazione completa
Come gia discusso in 3.1 e 3.2, le ragioni dietro verso unarchitettura client-server centralizza-
alladozione di questo stile sono tanto ideologi- ta: non possiedono wallet o block chain, ma si
che (nessuna istituzione finanziaria o governo limitano ad avere uno scorcio della rete Bitcoin
a cui rispondere e nessuna esigenza di trust attraverso linterfaccia che un server mette loro
in organizzazioni gestite da terze parti) quanto a disposizione.
pratiche. Questi ultimi rinunciano completamente alla
In particolar modo e possibile ragionare su loro indipendenza, con conseguenze talvolta
queste ultime in termini di compromessi (trade catastrofiche (si pensi ai gia citati episodi dei
offs) raggiunti, valutando le possibili alternati- providers MyBitcoin e Mt.Gox).
ve: spiccano affidabilita e indipendenza (inte- Per concludere questa analisi, e possibile affer-
sa, in questa sezione, come assenza di necessita mare che la comunita di sviluppatori Bitcoin
di trust in terzi), a scapito dellefficienza. potrebbe dover rilassare la decentralizzazione
La possibilita di poter scaricare porzioni del- dellarchitettura, istituendo magari un gruppo
la block chain da qualunque nodo connesso di super nodi che svolgano parte delle funzio-
alla rete Bitcoin, cos come di poter ricevere ni dei full clients, al fine di ridurre il carico
conferma delle proprie transazioni connetten- complessivo e favorire la scalabilita del sistema.
dosi ad una minima frazione della rete, grazie
al meccanismo di disseminazione utilizzato, 4 A SPETTI ANALITICI
rappresenta una forte garanzia di affidabilita.
La disseminazione delle informazioni tra i In aggiunta alla costruzione del grafo del-
peers, salvo lutilizzo di messaggi preliminari le transazioni menzionato in 3.2.2, gli aspetti
(inv e getdata) al fine di ridurre la mole di maggiormente valutati nellanalisi dellarchi-
dati trasferiti, consiste in un puro e semplice tettura Bitcoin, nonche punti critici del siste-
flooding. ma, consistono probabilmente nel tempo medio
Il prezzo da pagare risiede nel consumo di necessario alla conferma di una transazione
memoria e bandwidth estremamente alto di ed il guadagno medio, per transazione, di un
cui soffrono i full clients; consumo che, col miner che impiega risorse computazionali per
tempo e lintensificarsi della frequenza di tran- aggregarle in un blocco valido.
sazioni effettuate, andra crescendo, minando la Questi parametri sono indicativi della bonta
scalabilita del sistema. del sistema e costituiscono le ragioni principali
Possibili soluzioni che non compromettano la del suo utilizzo: il tempo necessario alla confer-
decentralizzazione del sistema sono gia state ma non deve essere troppo alto e il guadagno
accennate in 3.2. dei miners proporzionale allo sforzo compiuto.
Per migliorare le performance delle operazio- I grafici che seguono mostrano il variare dei
ni sono stati introdotti nuovi tipi di clients: sopracitati parametri in un periodo che va da
headers-only (3.3.2), signing-only (3.3.3) e thin Aprile 2013 ad Aprile 2014 e sono costruiti a
(3.3.4). partire da dati in formato CSV estratti da http:
Nellordine in cui sono stati elencati, questi //blockchain.info/stats.
derivati del client originale rappresentano una Lultima stima effettuata (20 Aprile 2014) mo-
progressiva rinuncia degli utenti ai primi due stra un tempo medio di 8 minuti; la media
requisiti (affidabilita e indipendenza) verso un dellultimo anno e pari a 10 minuti, con pic-
goal di maggiore efficienza. chi minimi e massimi di circa 5 e 15 minuti,
Gli headers-only rinunciano ad un controllo rispettivamente.
completo di blocchi e transazioni, ponendo una Il tempo medio necessario alla conferma di una
maggiore fiducia negli altri nodi (supposti full transazione rappresenta un punto critico del
ARCHITETTURE SOFTWARE, A.A. 2013/2014 23
15.0
75
Tempo di conferma transazioni (minuti)
12.5
7.5 25
5.0
lug 2013 ott 2013 gen 2014 apr 2014 lug 2013 ott 2013 gen 2014 apr 2014
Figura 19. Tempo medio necessario a confer- Figura 20. Guadagno medio di un miner, per
mare una transazione transazione
5.1 Ripple
5.2 Ethereum
ping, discovery di altri peers, gestione delle [GR] Patrick Griffin and Philip Rapoport.
transazioni e mining. Ripple: A Primer.
Per concludere lanalisi dellarchitettura ne e [Nak08] Satoshi Nakamoto. Bitcoin: A
stato discusso il razionale ed e stato fatto cenno peer-to-peer electronic cash system.
ad alcuni aspetti analitici. Consulted, 1:2012, 2008.
Infine, sono state presentati alcuni sistemi di [OKH13] Micha Ober, Stefan Katzenbeisser,
valute elettroniche alternative e maggiormente and Kay Hamacher. Structure and
diffuse: Ripple ed Ethereum. anonymity of the bitcoin transaction
E possibile quindi affermare che levoluzione graph. Future Internet, 5(2):237250,
di Bitcoin, al fine di continuare a permetterne 2013.
lutilizzo a singoli utenti e senza lappoggio [RH13] Fergal Reid and Martin Harrigan.
di servizi esterni per la gestione dei wallets, An analysis of anonymity in the bit-
presentera numerose sfide: prima fra tutte la coin system. In Security and Privacy
necessita di trovare un compromesso piu ade- in Social Networks, pages 197223.
guato fra efficienza operativa e mantenimento Springer, 2013.
della decentralizzazione che lo ha reso cos [Sku12] Rostislav Skudnov. Bitcoin clien-
popolare. ts. B.s. thesis, Turku University of
Applied Sciences, 2012.
10 maggio 2014.
S ITOGRAFIA
B IBLIOGRAFIA [12] Bitcoin wiki. https://en.bitcoin.it/wiki,
+
[AKR 13] Elli Androulaki, Ghassan O Kara- 2014. [Online; accessed 14-April-2014].
me, Marc Roeschlin, Tobias Scherer, [13] Ken Shirriff. Bitcoins the hard
and Srdjan Capkun. Evaluating user way: using the raw bitcoin protocol.
privacy in bitcoin. In Financial Cryp- http://www.righto.com/2014/02/
tography and Data Security, pages bitcoins-hard-way-using-raw-bitcoin.
3451. Springer, 2013. html, 2014. [Online; accessed
[Ara14] Giulia Aranguena. Bitcoin. Lal- 22-April-2014].
tra faccia della moneta, volume 8. [14] Charlie Stross. Why i want bitcoin to
goWare, 2014. die in a fire. http://www.antipope.
[But13] Vitalik Buterin. [English] White Pa- org/charlie/blog-static/2013/12/
per: A Next-Generation Smart Con- why-i-want-bitcoin-to-die-in-a.html,
tract and Decentralized Application 2013. [Online; accessed 12-April-2014].
Platform. ethereum / wiki on [15] Wikipedia. Bitcoin wikipedia,
GitHub (Self-published), 2013. the free encyclopedia. http:
[DPSHJ] Joan Antoni Donet Donet, Cristi- //en.wikipedia.org/w/index.php?title=
na Perez-Sola, and Jordi Herrera- Bitcoin&oldid=606742319, 2014. [Online;
Joancomart. The Bitcoin P2P accessed 10-April-2014].
network.
[DW13] Christian Decker and Roger Watte-
nhofer. Information propagation in
the bitcoin network. In Peer-to-Peer
Computing (P2P), 2013 IEEE Thir-
teenth International Conference on,
pages 110. IEEE, 2013.
[GKCC] Arthur Gervais, Ghassan Karame,
Srdjan Capkun, and Vedran Ca-
pkun. Is Bitcoin a Decentralized
Currency?