Cos’è la Blockchain? Fondamenti e sistemi informatici centralizzati, decentralizzati e distribuiti (Parte 1)

La Blockchain è un sistema informatico distribuito di tipo DLT (Distributed Ledger Technologies) che consente la condivisione e la gestione di un registro distribuito particolare, detto “blockchain” (catena di blocchi), in cui vengono trascritte le transazioni scambiate tra gli individui che fanno uso della medesima tecnologia

Il registro “blockchainha una struttura a blocchi in cui ogni blocco è concatenato al precedente: la struttura del registro ha dato il nome alla tecnologia che viene sempre citata con l’iniziale in maiuscolo.

La Blockchain garantisce la sicurezza delle transazioni e del registro, con tecniche di crittografia, di consenso e condivisione avanzate.

La Blockchain è stata definita come una tecnologia disruptive (dirompente) le cui potenzialità  sono emerse grazie alla diffusione delle criptovalute, soprattutto tramite Bitcoin ridefinendo i concetti di transazione, in particolare per le transazioni di asset a cui è associato un valore, sia esso:

  • Monetario (cripto valute);
  • Proprietà (contratti);
  • Intellettuale (copyright);
  • Espressione di un diritto (voto);

garantendo e certificando il trasferimento di proprietà del “bene digitale” o asset oggetto della transazione. Tali caratteristiche decretano il passaggio dall’Internet 1.0 (Internet delle informazioni) all’internet 2.0 (Internet of value). 

Questa introduzione potrebbe risultare ostica per molti lettori, per questo motivo inauguriamo la rubrica Crypto*Tech curata da Tommaso Coppola e Davide Lo Pilato.

Blockchain, concetti e fondamenti di base

Inizieremo un percorso didattico, per esperti e meno esperti volto a fornire in modo semplice alcune nozioni fondamentali di informatica, che consentiranno al lettore di avere una visione più chiara di che cosa sia una Blockchain, su quali componenti tecnologiche si basi e come funzioni.

Inizieremo con il descrivere cos’è un sistema informatico e quali sono le sue componenti fondamentali, ovvero:

  • Client 
  • Server

Questi sono gli elementi essenziali per la realizzazione di un sistema informatico.

Approfondiremo le definizioni ed il funzionamento delle diverse tipologie di sistemi informatici, ovvero:

  • Centralizzato
  • Decentralizzato
  • Distribuito

in questo modo il lettore avrà un quadro completo delle componenti e delle tecnologie necessarie per la realizzazione di una DLT (Distributed Ledger Technology) e di una Blockchain.

In informatica, è possibile definire un sistema informatico come un sistema in grado di effettuare delle elaborazioni su dei dati per fornire dei risultati in modo automatico. Un personal computer è un sistema informatico, ma anche un insieme di personal computer interconnessi tra loro realizzano un sistema informatico (es. una rete LAN domestica o la rete internet), nel secondo caso è di fondamentale importanza distinguere il metodo e la struttura architetturale con cui si realizzano le interconnessioni tra i diversi computer del sistema, la più diffusa è detta client-server.

Esempio tipico di un’architettura client server è rappresentata da:

  • Client: il vostro computer o device (dispositivo, tablet, smartphone, etc.) magari lo stesso con cui state leggendo questo articolo
  • Server: il computer sul quale risiedono le pagine web che contengono questo articolo del sito cryptorivista.com
  • La rete Internet: l’infrastruttura con cui è possibile interconnettere i due dispositivi.

Il client, il server e l’infrastruttura di rete con cui si realizza un tale sistema rappresentano la sua parte hardware. La distinzione fondamentale tra i due attori principali di questo sistema è evidente: 

  • il client può solo effettuare richieste al server.
  • il server è predisposto ad assolvere ad ogni richiesta pervenuta dal client.

Altri attori che giocano un ruolo fondamentale in questa architettura sono i “Software”, che rappresentano la parte logica del sistema.

Con i software (ultimamente si utilizza il termine APP più generico) presenti sul nostro client siamo in grado di inviare delle richieste al server; ad esempio il vostro browser internet (Google Chrome, Mozilla Firefox, Brave, Safari, Opera, Internet Explorer o Microsoft Edge) è un software con una interfaccia grafica (GUI – Graphic User Interface) che consente l’invio di richieste ai server, per la visualizzazione di pagine web, la richiesta consiste nell’invio di un link o indirizzo web della pagina che si desidera visualizzare. 

Il software lato server invece, rappresenta la parte logica del sistema che in qualsiasi istante è pronto a ricevere le richieste dai client, interpretarle, elabolarle e restituirne i risultati.
Nel nostro esempio, il software lato server riceve dal client la richiesta di visualizzazione di una particolare pagina web, interpreta quindi il link o l’indirizzo della pagina web, lo elabora e costruisce i contenuti della pagina restituendo il risultato al client in una forma non ambigua al browser che a sua volta ne interpreta il contenuto e visualizzandone il risultato.

Nell’immaginario collettivo permane l’immagine dei server, (Figura 1. The IBM 704) come quegli enormi computer del secolo scorso, che riempivano intere stanze e che sembravano poter fare di tutto.

Da quanto detto finora dovrebbe essere chiaro che il concetto di server ha un significato molto più ampio e che non si limita al solo hardware, ma a qualsiasi cosa che si occupi di “servire” informazioni all’interno di un sistema informatico. 


Figura 1. Primo computer commerciale IBM704 – Occupava lo spazio di un’intera stanza 

A dimostrazione di ciò, affermiamo che può essere un server anche un semplice computer come il vostro notebook o un mini computer come i recenti Raspberry pi (Figura 2. Raspberry Pi ).


Figura 2 – Raspberry pi: un computer a tutti gli effetti, nel palmo di una mano

Classificazione dei sistemi informatici 

I sistemi informatici con architettura client-server possono essere classificati come segue:

Sistema Informatico Centralizzato

Un sistema avente un solo server centrale (o nodo di rete), che assolve a tutte le richieste dei client connessi alla stessa rete. Tale sistema accentra su di un solo computer (o nodo) sia servizi che dati da fornire ai client.

Un esempio tipico di un sistema centralizzato può essere quello di una piccola realtà aziendale, i cui client siano rappresentati dai computer in dotazione ai dipendenti ed un unico server sul quale sia installato un software ERP (Enterprise resource planning) per la gestione delle attività commerciali quotidiane, come ad esempio contabilità, procurement, project management, gestione del rischio e compliance e operations per la supply chain.

  Sistema Informatico Decentralizzato

Un sistema avente molti server (o nodi di rete), collegati tra di loro, ognuno dei quali è dedito a fornire particolari servizi e/o dati, realizzando quindi una diversa architettura di rete rispetto al sistema centralizzato, ed una diversa logica di elaborazione delle richieste. In questo sistema, più server collaborano per fornire la risposta ai client connessi alla stessa rete. I nodi, non sono autonomi, ma necessitano della collaborazione di tutti o di alcuni dei server presenti, poiché singolarmente non in grado di fornire gli stessi servizi e/o dati.

In pratica, se si riflette sulla definizione precedente, in un sistema decentralizzato un server può comportarsi anche da client, chiedendo ad alcuni server della rete di collaborare alla risoluzione di una particolare operazione che da solo non potrebbe risolvere, ottenendo così il risultato richiesto, grazie alla cooperazione dei diversi servizi e/o dati presenti sugli altri nodi server della rete.
La posta elettronica o le reti di chat sono esempi di sistemi decentralizzati, questo modello è perfetto per organizzazioni che possono mantenere le proprie infrastrutture di comunicazione e preferiscono avere un controllo completo su di esse. 

  Sistema Informatico Distribuito

È un sistema decentralizzato particolare: in questo tipo di sistema, infatti, ogni server (o nodo) è autonomo ed autosufficiente e non esiste un server dedicato a particolari servizi. Ogni singolo nodo della rete fornisce i medesimi servizi e contiene le medesime informazioni o dati. Si distingue dal sistema decentralizzato anche perché i nodi sono connessi fra loro grazie ad un software particolare, detto anche rete middleware, che permette il coordinamento delle attività e la condivisione dei servizi e dei dati in modo che gli utenti percepiscano il sistema come un unico servizio integrato (tale modello è anche detto rete peer to peer – P2P).

Esempi di sistemi informatici distribuiti tipici sono rappresentati dalle architetture di rete e dai sistemi Skype o Bit torrent.

Per adesso ci fermiamo qui, abbiamo già introdotto concetti tanto fondamentali quanto complessi, pertanto vi lasciamo nel mezzo dell’introduzione alla tecnologia blockchain con cui proseguiremo la nostra spiegazione durante il prossimo articolo il 2 agosto… restate connessi!