Una Blockchain è un registro dati decentralizzato rappresentato da una sequenza espandibile di blocchi di dati che memorizzano le informazioni in una sequenza temporale immutabile.
Una Blockchain cresce con il passare del tempo senza che sia possibile modificare le informazioni già memorizzate. L'utilizzo della tecnologia si estende a tutti i processi nei quali i dati debbano essere resi sicuri, autenticati e suddivisi.
Un settore di utilizzo centrale della Blockchain è la documentazione delle transazioni. Un semplice esempio può far comprendere meglio il contesto in cui essa si inserisce:
- Mario in passato ha comprato una giacca che ha utilizzato poche volte, decide quindi di metterla in vendita su un sito di annunci.
- Aldo, in cerca di una giacca, nota l'annuncio di Mario ed è interessato all'acquisto.
- Mario ed Aldo si accordano sul prezzo.
- A questo punto una terza parte(servizio di pagamento online) che faccia da garante per la transazione è necessaria affinchè ci sia la certezza che Mario riceva i soldi di Aldo e Aldo la giacca di Mario.
La Blockchain offre un'alternativa ai cosiddetti trusted third party. Le transazioni nella rete Blockchain non vengono verificate da terze parti ma eseguite attraverso
un sistema di contabilità rendicontato e al riparo da manomissioni denominato Distributed Ledger.
Bitcoin ed ethereum sono esempi di applicazioni Blockchain che supportano transazioni come quelle tra Mario ed Aldo. Per poterle utilizzare è necessario che Mario e Aldo entrino a far parte del sistema. In genere è sufficiente scaricare il software client e installarlo sul proprio computer. I computer di Mario e di Aldo, diventeranno in questo modo dei nodi di una rete Blockchain.
Architettura di una Blockchain
Ogni partecipante ad una rete Blockchain mantiene una copia della catena dei blocchi sul proprio computer. Il primo blocco di una catena viene chiamato blocco genesi.I blocchi sono concatenati attraverso codice hash come mostrato in Figura 1.
È interessante notare come il collegamento con valori hash renda la manipolazione di una Blockchain praticamente impossibile. Per comprendere questo aspetto, iniziamo con l'evidenziare che i valori hash che vengono utilizzati nelle applicazioni Blockchain non vengono calcolati solo a partire dai dati transazionali di un utente.
Oltre ai dati di transazione da memorizzare nel blocco dati, il calcolo del valore hash di un nuovo blocco dati include sia il valore hash del blocco precedente che un cosiddetto valore nonce. Un nuovo utente che vuole aggiungere un proprio blocco di dati alla Blockchain deve conoscere il valore hash del blocco precedente. Il valore nonce permette di intervenire nel risultato del calcolo del valore hash.
Questo meccanismo è utilizzato nel contesto di una procedura di consenso nota come proof-of-work. L'hash di un nuovo blocco viene quindi calcolato considerando il numero di blocco, il nonce, i dati transazionali e l'hash del blocco precedente. Nell'immagine che segue viene mostrato un esempio di sviluppo di una Blockchain partendo da un primo blocco nel quale un utente ottiene bitcoin attraverso il sistema Coinbase.
Si può intuire come un tentativo di cambiamento dei dati di un blocco invalidi la catena dal quel blocco in avanti richiedendo un pesante lavoro computazionale per l'aggiornamento. Questa è la resistenza offerta da una Blockchain al cambiamento dei dati esistenti.
Se un partecipante facesse circolare una copia falsa della Blockchain contenente blocchi modificati, questo tentativo verrebbe identificato dall'incompatibilità dei valori hash. Il falsificatore dovrebbe ricalcolare i valori hash di tutti i blocchi successivi con il valore iniziale contraffatto, operazione che richiederebbe un'immensa potenza di calcolo. Ma se anche l'attaccante riuscisse in questa impresa la frode verrebbe scoperta non appena gli altri partecipanti della rete confrontassero tale catena con la propria copia.
Se la maggioranza degli utenti trovasse delle contraddizioni la falsa catena di blocchi verrebbe automaticamente respinta.
Smart Contracts
Lo sviluppo di tecnologie Blockchain è alimentato dall'insoddisfazione per la crescente centralizzazione della rete. La Blockchain può sostituire i fornitori di servizi centralizzati.
Un esempio di decentralizzazione sono gli Smart Contracts (contratti intelligenti), che permettono la stipula di un contratto su Internet senza dover ricorrere a intermediari.
Gli Smart Contracts sono adatti a diversi utilizzi tra cui:
- accesso a proprietà o veicoli noleggiati attraverso l'utilizzo di chiavi (ad esempio per auto a noleggio);
- prova del diritto d'autore;
- atti notarili senza notaio (ad esempio per la proprietà fondiaria, diritti d'uso);
- la concessione diretta di prestiti, la locazione di appartamenti, l'erogazione di servizi.
Conclusioni
In questo articolo si è introdotta la tecnologia Blockchain al fine di comprendere il suo funzionamento e le motivazioni che sono alla base del suo utilizzo. Nei successivi articoli introdurremo il framework Hotmoka per la simulazione di una Blockchain e il modulo Takamaka per la definizionedi Smart Contracts.