Corso Blockchain Fundamentals

Conoscere e comprendere le caratteristiche della tecnologia Blockchain dalle basi

La Blockchain negli ultimi tempi si è guadagnata l’attenzione dei media, oltre che degli addetti ai lavori, in relazione alle possibilità che tale tecnologia sembrerebbe promettere, al punto che molti già parlano di una prossima “rivoluzione” digitale, sulla stessa falsariga (se non addirittura superiore) alla rivoluzione rappresentata dalla diffusione di internet.

Nata a supporto dei bitcoin, e con essa assurta alla ribalta delle cronache, la Blockchain costituirebbe a detta di molti la soluzione a diversi annosi problemi che hanno a che fare con il concetto di “fiducia”, intesa come elemento necessario a garantire non soltanto l’affidabilità delle transazioni finanziarie, ma in generale la garanzia della fede pubblica in ogni relazione tra parti contrapposte.

Innumerevoli sono quindi gli scenari e i possibili impieghi della Blockchain, a detta dei suoi entusiasti sostenitori, dalla tracciatura della filiera agro-alimentare, fino a ricomprendere il contrasto delle Fake News.

Quante di queste altisonanti promesse costituiscono scenari e casi d’uso reali per i quali la Blockchain può effettivamente costituire un punto di svolta, e quanto invece influisce il marketing nella scelta di adottare tale tecnologia?

Per avere un quadro complessivo, che consenta di valutare in maniera consapevole gli effettivi vantaggi ritraibili dalla Blockchain, è necessario comprenderne i meccanismi e il funzionamento di tale tecnologia.

Malgrado molti dei dettagli implementativi della Blockchain assumano un aspetto esoterico, comprensibile solo dagli “iniziati”, al punto da intimidire i “profani”, in realtà le logiche di fondo su cui essa si basa possono essere comprese anche da chi non abbia conoscenze tecniche di programmazione.

Corso “Blockchain Fundamentals”

Il Corso “Blockchain Fundamentals” si rivolge a tutti coloro (Aziende, Enti, liberi Professionisti, Studenti) i quali siano interessati a conoscere e comprendere dalle basi le caratteristiche della tecnologia blockchain.

I contenuti proposti sono fruibili anche da un pubblico che non dispone di specifiche competenze tecniche, nè è richiesta una precedente esperienza in ambito blockchain.

Info e Iscrizioni Corso Online

Per richiedere informazioni dettagliate su costi e calendario del Corso Online in modalità Web-Conference con il Docente, compilare il form sottostante:

Info e Iscrizioni Corso Online

    Per ulteriori informazioni sui costi e sul calendario dell'evento, compilare il form sottostante:


    Inserire eventuali note aggiuntive

    Introduzione – Che cosa è la Blockchain

    Essenzialmente, la Blockchain è un

    • archivio distribuito

    • basato su reti peer-to-peer

    • implementato mediante crittografia

    In qualità di archivio distribuito e decentralizzato, finalizzato alla gestione dei trasferimenti di assets digitali, la Blockchain consente agli utenti di scambiarsi reciprocamente valori digitali sotto forma di transazioni.

    In questo modo non è necessario ricorrere a terze parti in funzioni di garanzia delle transazioni.

    Obiettivi della Blockchain

    La tecnologia Blockchain è stata originariamente introdotta a supporto di Bitcoin.

    Il fine principale era quello di prevenire il fenomeno del double spending delle criptovalute, vale a dire la possibilità di spendere più volte la stessa moneta.

    Tuttavia, il ruolo della Blockchain non è limitato al settore delle transazioni finanziarie.

    In generale, ogni transazione di valori digitali può essere oggetto di registrazione all’interno di un ledger distribuito.

    La Blockchain come tecnologia

    La tecnologia Blockchain può assumere forme e implementazioni differenti.

    Pertanto, essa rappresenta più un concetto di natura architetturale, che una tecnologia specifica e ben definita.

    Ogni implementazione differente è inoltre in grado di fornire caratteristiche e funzionalità specifiche, come ad esempio l’esecuzione di smart contracts.

    Elementi essenziali della Blockchain sono:

    • le transazioni;

    • i blocchi;

    • il ledger;

    Vediamone adesso nel dettaglio le caratteristiche.

    Le Transazioni

    Lo scambio di valori tra le controparti all’interno della Blockchain avviene mediante la realizzazione di transazioni.

    Le transazioni vengono validate dalla rete dei nodi della blockchain, prima di essere inserite all’interno del ledger.

    Una volta accodate alle transazioni preesistenti all’interno del ledger, esse divengono inalterabili e immodificabili.

    I blocchi della Blockchain

    Per sua natura, la Blockchain non è altro che una catena di blocchi.

    Ogni blocco al suo interno contiene una o più transazioni.

    L’aggiunta di nuovi blocchi alla Blockchain avviene sulla base di prefissate frequenze temporali.

    In questo modo, è possibile mantenere lo storico delle transazioni tracciando la sequenza delle registrazioni effettuate sui blocchi.

    Il ledger distribuito

    Contabilmente, la blockchain può essere considerata un libro mastro distribuito e decentralizzato, noto appunto come ledger distribuito.

    La gestione del ledger avviene mediante l’impiego di consensus protocols, che sono progettati per conseguire il consenso della rete sulle transazioni registrate all’interno del ledger.

    I consensus protocols sono molteplici, e caratterizzano le differenti implementazioni della blockchain.

    Tra i consensus protocols più comuni possiamo ricordare il Proof of Work (PoW), il Proof of Stake (PoS) e il Proof of Authority (PoA).

    Blockchain – I principi basilari

    Introduciamo adesso i principi basilari su cui si fonda la tecnologia blockchain.

    Archiviazione Distribuita

    La possibilità di archiviare i dati all’interno di un database distribuito permette ad ogni partecipante di accedere alla cronologia completa delle transazioni.

    Inoltre l’archiviazione distribuita impedisce che una singola entità possa assumere pieno controllo sulle informazioni archiviate.

    L’archiviazione distribuita consente ai singoli nodi la possibilità di verificare direttamente e in autonomia l’integrità delle informazioni archiviate.

    Non è quindi necessario ricorrere ad intermediari per effettuare la verifica.

    La verifica dell’integrità delle informazioni viene infatti implementata mediante le funzioni di hashing.

    Reti di comunicazione Peer-to-Peer

    Per implementare l’archiviazione distribuita la blockchain fa ricorso alle reti peer to peer.

    In questa tipologia di reti nessun nodo assume il ruolo di server centrale.

    Al contrario, in una rete P2P ogni nodo assume di volta in volta il ruolo di client e di server.
    P2P network
    P2P network (image credits: wikipedia)


    L’archiviazione distribuita consente di conseguire la trasparenza nonchè la irreversibilità delle transazioni.

    Trasparenza delle transazioni

    Ogni transazione e il valore ad essa associata sono visibili pubblicamente a tutti i partecipanti alla rete.

    Le controparti di una transazione sono individuati dai loro rispettivi indirizzi, costituiti da sequenze alfanumeriche.

    Ogni transazione viene sottoposta ad un numero di conferme da parte dei nodi miners, prima di essere validata ed essere inserita all’interno del ledger.

    Irreversibilità delle transazioni

    Ecco alcune delle caratteristiche che determinano l’irreversibilità delle transazioni nella Blockchain:

    • dopo essere state inserite all’interno di un blocco e aggiunte nella blockchain, le transazioni non sono più modificabili;

    • tale risultato è ottenuto proprio concatenando tra di loro i diversi blocchi che compongono la blockchain;

    • una eventuale modifica alle transazioni già archiviate comporterebbe infatti l’alterazione degli hash calcolati in precedenza.

    Tale alterazione sarebbe immediatamente evidente a tutti i nodi della rete che ne impedirebbero la conferma.

    Reti centralizzate e decentralizzate

    Come abbiamo visto, uno dei principi basilari della Blockchain prevede l’utilizzo di un protocollo di comunicazione di rete Peer-to-peer, al fine di conseguire l’archiviazione decentralizzata delle informazioni.

    Per comprendere i vantaggi associati alle reti decentralizzate, introdurremo prima le tradizionali reti centralizzate, analizzandone le caratteristiche principali, per poi confrontarle con le reti decentralizzate peer-to-peer.

    Reti centralizzate (Client-Server)

    Nell’immagine che segue, mostriamo un tipico esempio di rete centralizzata:

    centralized network
    Centralized network (image credits: wikipedia)


    La caratteristica principale di tali tipologie di rete è costituita dalla presenza di un nodo centrale, che ricopre il ruolo di server.

    I nodi client possono connettersi esclusivamente al server centrale per ottenere le informazioni di cui hanno bisogno.

    Vediamo adesso alcuni esempi di reti centralizzate, analizzandone i rispettivi limiti che rendono indispensabile l’adozione del modello di rete decentralizzato (Peer-to-peer) nell’implementazione delle funzionalità della Blockchain.

    Reti centralizzate: esempi

    Un tipico esempio di rete centralizzata è reppresentato dalle tradizionali connessioni client-server del web.

    Il vantaggio principale di una rete centralizzata è rappresentato dalla semplicità di implementazione, mantenimento e aggiornamento di tale modello architetturale.

    Le informazioni necessarie vengono archiviate e aggiornate in un unico nodo centrale (il server) che le mette a disposizione dei client.

    Reti centralizzate: limiti

    Il limite fondamentale delle reti centralizzate è rappresentato dal fatto che in caso di malfunzionamento o di compromissione del nodo centrale (a seguito ad esempio di attacchi informatici), le informazioni in esso contenute non sono più disponbili e accessibili da parte della intera rete.

    Inoltre, nelle reti centralizzate il nodo server assume il ruolo di autorità di controllo esclusivo sulle informazioni.

    A causa di questi limiti, la Blockchain adotta un protocollo di comunicazione di rete di tipo decentralizzato per realizzare le proprie funzionalità.

    Reti decentralizzate (Peer-to-peer)

    In una rete decentralizzata per definizione non esiste un nodo centrale che assume il ruolo di autorità di controllo e di condivisione autoritativa delle informazioni.

    Al contrario, in un protocollo di rete peer to peer ogni singolo nodo è in grado di svolgere tale ruolo.

    Il modello decentralizzato consente quindi ad ogni nodo della rete di contribuire alla condivisione e alla verifica delle informazioni.

    Decentralized network (peer to peer)
    Decentralized network (peer to peer) (image credits: wikipedia)


    Tale modello rende pertanto superflua la presenza di una autorità centrale di controllo sulle informazioni.

    Reti decentralizzate e Blockchain

    Le caratteristiche delle reti decentralizzate sono essenziali per realizzare le funzionalità della blockchain.

    Uno dei vantaggi chiave della blockchain è costituito infatti dal decentramento decisionale sulla verifica, la validazione e l’inserimento delle transazioni all’interno della blockchain.

    Tali decisioni vengono poi condensate all’interno dei blocchi, che costituiscono gli elementi costitutivi della blockchain.

    I blocchi – Gli elementi costitutivi della Blockchain

    La Blockchain non è altro che una catena di blocchi.

    L’unità più semplice di una blockchain è infatti costituita dal blocco.

    Ogni blocco contiene al suo interno un certo numero di transazioni che rappresentano i trasferimenti di valori tra le controparti, realizzate all’interno della blockchain.

    I blocchi e le transazioni

    Ogni blocco contiene lotti di transazioni con i relativi hash.

    Il numero di transazioni contenute in un blocco dipende dalla dimensione del blocco.

    La dimensione media di un blocco è di circa 1 MB, ma può raggiungere anche dimensioni superiori, come nel caso di Ethereum.

    In Bitcoin un blocco contiene in media più di 500 transazioni.

    Blockchain block time

    Ogni blockchain ha un suo tempo di blocco caratteristico, vale a dire la quantità approssimativa di tempo richiesta per aggiungere un nuovo blocco alla Blockchain.

    Il block time influenza il numero di transazioni che vengono inserite all’interno del singolo blocco.

    Se ad esempio la blockchain avesse un tempo di blocco di cinque minuti, e ci fossero solo quattro transazioni portate a termine durante quei cinque minuti, il blocco conterrà di conseguenza soltanto quelle quattro transazioni.

    Vediamo adesso come vengono gestite le transazioni sulla base del block time e della struttura dei blocchi.

    Block time e numero di transazioni

    Nel caso in cui ci fossero troppe transazioni rispetto a quante il blocco ne possa ospitare, sulla base della sua dimensione, in questo caso le transazioni dovrebbero attendere di essere inserite all’interno di un blocco ancora aperto, che abbia spazio rimanente a sufficienza per ospitarle.

    Sempre nel caso di Bitcoin, il tempo di blocco è pari a 10 minuti, e deriva dai limiti prefissati nel codice sorgente di Bitcoin.

    Tali limiti a loro volta derivano dall’obiettivo di emettere non più di 21 milioni di bitcoins nel periodo tra il 2009 e il 2024, con remunerazioni per i miners che si riducono della metà ogni quattro anni.

    La struttura dei blocchi

    Ogni blocco è costituito da una intestazione, detta header, e da una lista di transazioni.

    Ogni blocco include l’hash del blocco precedente, e in questo modo i blocchi nel loro insieme vanno a costituire una catena (blockchain appunto) che collega tutti i blocchi tra loro.

    Il primo blocco della Blockchain si chiama “genesis block”.

    Block header

    La struttura dei blocchi è rappresentata dal block header, ovvero intestazione del blocco.

    Block header structure
    Block header structure (image credits: wikipedia)


    Tale struttura dati contiene una serie di informazioni relative ai blocchi, informazioni anche dette metadata.

    • Hash del blocco precedente: tale valore è richiesto per computare il corrispondente hash del nuovo blocco da aggiungere alla blockchain;

    • Merkle root: è il valore hash associato al nodo radice dell’albero delle transazioni, che funge da controllo della validità del blocco;

    • Timestamp: marcatura temporale assegnata al blocco;

    • Nonce: valore arbitrario che viene utilizzato in fase di mining del blocco.

    I blocchi sono memorizzati in una struttura ad albero, nota come Merkle tree.

    Blockchain transactions – Natura e caratteristiche delle transazioni

    Una transazione rappresenta un trasferimento di valore da un indirizzo nella blockchain a un altro indirizzo.

    In Bitcoin, mediante una transazione si trasferiscono Bitcoin da un indirizzo a un altro indirizzo.

    Tutte le transazioni realizzate all’interno della blockchain vengono registrate nel ledger in sequenza, a partire dalla prima fino a quella più recente, e il ledger delle transazioni viene condiviso all’interno della rete P2P.

    In Bitcoin, la transazione è confermata dai miners, che vengono ricompensati economicamente per il loro lavoro.

    Ogni transazione in una blockchain deve passare attraverso una serie di conferme. Senza conferma, nessuna transazione può essere convalidata.
    Blockchain process
    Blockchain process (image credits: wikipedia)


    Transazioni e Ledger

    Una delle caratteristiche delle Blockchain è che rende superfluo l’intervento degli intermediari nelle transazioni.

    Le persone possono realizzare le transazioni senza che siano coinvolte terze parti. Il ledger condiviso rappresenta il libro mastro delle transazioni e garantisce l’integrità e l’affidabilità delle transazioni tra le parti.

    Il ledger viene mantenuto e aggiornato in maniera distribuita da tutti i partecipanti alla blockchain, che in questo modo verificano l’attendibilità delle transazioni senza ricorrere a terze parti fidate, garantendo la trust della rete.

    Vediamo adesso le caratteristiche del ledger distribuito e delle modalità in cui esso viene gestito.

    Distributed Ledger

    Contabilmente, il ledger (libro mastro) è un registro delle transazioni economiche.

    È il registro contabile utilizzato da banche e altri istituti finanziari per riconciliare i saldi contabili.

    Tutti gli addebiti e i crediti durante un periodo contabile vengono calcolati per redigere il bilancio contabile.

    I bilanci di banche, istituti finanziari e imprese sono compilati utilizzando registrazioni contabili all’interno di un libro mastro.

    Quando effettuiamo una transazione finanziaria utilizzando la valuta legale, abbiamo un libro mastro di terze parti che mantiene le informazioni su ogni transazione.

    Alcuni di questi sistemi fiduciari di terze parti sono tradizionalmente rappresentati di istituzioni bancarie e finanziarie (come VISA, MasterCard, e così via).

    Blockchain ha modificato alla radice le modalità di gestione di questo sistema contabile, rendendo tutti gli operatori della rete partecipi nella redazione del libro mastro.

    Per questo il ledger viene anche detto libro mastro distribuito; tutti quelli che effettuano una transazione in blockchain, hanno a disposizione anche la registrazione delle altre transazioni che sono avvenute o stanno avvenendo nella blockchain.

    La struttura dati impiegata nella implementazione del ledger distribuito è nota come merkle tree:

    Merkle tree
    Merkle tree (image credits: wikipedia)


    In sostanza, essa ricalca la struttura di un albero, le cui foglie corrispondono alle diverse transazioni registrate all’interno del ledger; per ogni percorso a partire dal nodo radice (root) vengono calcolati i corrispondenti hash values, i cui riferimenti sono memorizzati all’interno dei blocchi.

    Poichè ogni transazione è legata alle precedenti, eventuali modifiche successive sarebbero immediatamente riconoscibili da chiunque, semplicemente ricalcolando gli hash values corrispondenti.

    Essendo distribuito, questo “libro mastro decentralizzato” fornisce diverse conferme di autenticità per ogni transazione avvenuta.

    Una delle proprietà chiave della tecnologia blockchain è che essa incentiva uno concezione globale e condivisa di fiducia (trust) nelle transazioni.

    Garantire l’integrità delle transazioni

    In che modo viene garantita l’integrità delle transazioni all’interno della Blockchain?

    È ciò di cui ci occuperemo ora, analizzando le diverse funzionalità crittografiche, come lo hashing e gli hash digests, sottolineando le differenze esistenti con gli algoritmi di crittografia veri e propri.

    Mostreremo infine un esempio pratico di calcolo di un hash digest utilizzando la classe di algoritmi SHA impiegata nella implementazione della Blockchain, ricorrendo a dei semplici tools disponibili online.

    Partiamo subito mostrando gli hash digests, considerati le “impronte digitali” dei blocchi della Blockchain.

    Hash digests: le impronte digitali dei blocchi

    Come abbiamo detto, l’integrità delle transazioni all’interno della blockchain viene conseguita mediante l’uso delle hash functions.

    Le hash functions costituiscono una classe di algoritmi che rendono computazionalmente improbabile che stringhe alfanumeriche differenti diano origine a uguali valori degli hash.

    Gli algoritmi di hashing sono specificamente progettati per essere sensibili perfino alle minime variazioni nei dati di input.

    Crittografia e hashing: differenze

    Una proprietà interessante degli hashing algorithms è che essi non sono reversibili, a differenza degli algoritmi di crittografia.

    Reversibile vuol dire che è possibile convertire un testo cifrato nel suo originario testo in chiaro, utilizzando la funzione di decrypting, che è l’inverso della funzione di encrypting:

    Encryption & decryption
    Encryption & decryption (image credits: innovation-exploited.com)


    A differenza della crittografia, non c’è una funzione inversa per lo hashing.

    Questo vuol dire che non possiamo convertire il valore di hash calcolato nel suo input originario, poichè lo hashing è un processo unidirezionale per definizione.

    Vediamo adesso in che modo è possibile sfruttare le caratteristiche degli algoritmi di hashing per garantire l’integrità delle transazioni all’interno della Blockchain.

    Hashing e integrità delle transazioni

    Gli algoritmi di hashing sono progettati per prevenire le collisioni, vale a dire la possibilità di ottenere lo stesso hash value in corripondenza di due differenti stringhe di input.

    Grazie a queste caratteristiche, gli hash possono essere considerati una specie di impronta digitale dei dati:
    ogni variazione, anche minima, nei dati originari determinerà come risultato un valore calcolato di hashing molto differente.

    Utilizzando le hash functions all’interno della blockchain, chiunque può verificare l’integrità dei blocchi e delle transazioni, calcolando i loro corrispondenti hash values e confrontandoli con i valori archiviati all’interno della blockchain.

    Esistono diverse famiglie di algoritmi di hashing: la Blockchain di bitcoin adotta l’algoritmo di hashing SHA-256.

    SHA hash value: Esempio di calcolo

    Nell’esempio che segue, vediamo come il valore di hash generato dall’algoritmo di hashing cambia anche a seguito di variazioni minime nei dati in ingresso.

    L’immagine sotto riportata mostra i risultati ottenuti utilizzando il tool di hashing disponibile online.

    SHA digest
    SHA digest examples (image credits: innovation-exploited.com)


    Come è facile notare dall’output prodotto, anche minime variazioni nelle stringhe di input determinano valori di output completamente diversi e non riconducibili ai valori originari.

    Conseguire la Trust in un ambiente distribuito

    Uno dei compiti più interessanti della Blockchain riguarda l’obiettivo di conseguire il consenso condiviso della rete sulle transazioni registrate nel ledger distribuito.

    Quello del consenso condiviso rappresenta uno dei problemi classici della computer science relativo ai sistemi distribuiti.

    Poiché come abbiamo visto, la Blockchain non è altro che una particolare implementazione di un sistema di archiviazione distribuito, molte delle soluzioni adottate dalla Blockchain riproducono le soluzioni adottate dai sistemi distribuiti.

    Innanzitutto, tutti i sistemi distribuiti devono fornire un protocollo che sia “fault-tolerant”, vale a dire che sia robusto e in grado di tollerare gli eventuali malfunzionamenti, per garantire la possibilità di raggiungere un consenso comune sullo stato del sistema nel suo complesso.

    Raggiungendo il consenso sullo stato globale delle transazioni archiviate nel ledger, tutti gli attori del sistema distribuito condividono di conseguenza una “verità” comune, su cui riporre la propria “fiducia” (trust).

    Il raggiungimento del consenso è fondamentale in un sistema distribuito, al fine di condividere una “verità” comune, cui attribuire “fiducia” (trust).

    Vediamo adesso le più comuni tipologie di consensus protocols.

    Proof of Work (PoW)

    Nel protocollo di consenso PoW, i nodi della Blockchain devono impiegare risorse computazionali elevate per risolvere le sfide (challenges) matematiche di difficoltà crescente, richieste al fine di raggiungere il consenso sulle transazioni.

    Il PoW, infatti, genera un valore hash di una data lunghezza, e l’obiettivo dei nodi è scoprire il valore di input che ha dato origine a questo valore hash.

    Poiché, come abbiamo visto in precedenza, i valori calcolati mediante algoritmi di hashing non sono reversibili, per risolvere queste challenges è necessario procedere “a forza bruta”, vale a dire, è necessario procedere per tentativi ed errori.

    Ciò determina un elevato lavoro computazionale da parte dei nodi di convalida dei blocchi (da qui il nome “Proof of Work”).

    Il nodo che trova la soluzione alla challenge, la invia al resto della rete per la verifica da parte degli altri nodi (nella blockchain di Bitcoin, questi nodi sono detti “miners”, e ricevono una ricompensa per questa loro attività svolta, che viene quantificata in unità o frazioni di bitcoin).

    La logica del PoW è quella di rendere computazionalmente onerosa l’aggiunta di un nuovo blocco alla catena, riducendo così la possibilità di poter modificare il ledger delle transazioni.

    Quindi, una volta verificata la soluzione trovata dal nodo, il blocco creato può essere inserito nella blockchain.

    La lunghezza della blockchain aumenta di conseguenza, riflettendo lo sforzo computazionale (PoW) che è stato necessario impiegare per raggiungere l’attuale dimensione della catena di blocchi.

    Pertanto, il consenso su quale delle copie locali della blockchain debba essere considerata quella aggiornata, si raggiunge semplicemente selezionando la catena più lunga, cui viene attribuita di conseguenza la fiducia della rete.

    Date le caratteristiche del PoW, è molto difficile modificare un blocco (alterando così le transazioni al suo interno) una volta che questo è stato inserito nella blockchain, e tale difficoltà aumenta all’aumentare della lunghezza della catena.

    I vantaggi di PoW non sono privi di costi, sia in termini di tempo richiesto per la convalida dei blocchi, che di energia elettrica necessari per soddisfare il carico computazionale richiesto.

    Per cercare di risolvere questi svantaggi, è stato proposto il meccanismo alternativo di consenso noto come Proof of Stake (PoS).

    Proof of Stake (PoS)

    Nel caso del protocollo PoS, al posto dei valori hash vengono utilizzate le firme digitali, e il nodo che è stato autorizzato a creare il blocco successivo da includere nella blockchain, viene selezionato in base alla quantità di investimento effettuato da tale nodo nella rete.

    La validazione dei blocchi viene ricompensata mediante l’attribuzione di commissioni finanziarie ai nodi che hanno contribuito alla convalida.

    Proof of Authority (PoA)

    A differenza dei meccanismi precedenti, il protocollo Proof of Authority (PoA) è un meccanismo di consenso che funziona in presenza di un numero limitato di nodi di convalida delle transazioni.

    Il suo utilizzo è pertanto considerato più appropriato nelle permissioned blockchain, anzichè nelle public blockchain.

    Nel caso del PoA, il consenso viene raggiunto sulla base della maggiore fiducia (autorità) riconosciuta a questi nodi.

    Il problema dei Generali Bizantini

    Uno dei problemi classici di coordinamento, più studiati nell’ambito della computer science edei sistemi distribuiti, è noto come problema dei “Generali Bizantini”.

    Il problema riguarda il raggiungimento del consenso da parte dei Generali che hanno accerchiato il nemico, sul momento in cui sferrare l’attacco tutti insieme, per garantire il successo dell’operazione militare.

    Il problema risiede nel fatto che i Generali possono comunicare tra di loro a distanza, mediante lo scambio reciproco di messaggi.

    Ogni Generale decide se attaccare o ritirarsi, comunicando agli altri la propria decisione inviando dei messaggeri.

    Tra questi possono esservi però dei “traditori”, che impediscono con il loro comportamento, di raggiungere il consenso condiviso e unanime, inviando messaggi contraddittori agli altri.

    Lo scopo finale, infatti, è quello di raggiungere un consenso condiviso sull’azione da intraprendere tutti insieme, attaccare o ritirarsi, evitando un comportamento scomposto, che determinerebbe un sicuro insuccesso.

    Vediamo adesso quale ruolo assume il problema dei Generali Bizantini all’interno della Blockchain e in che modo esso viene affrontato all’interno della rete.

    Il problema dei Generali Bizantini nell’ambito della Blockchain

    Il problema dei Generali bizantini sorge nell’ambito della Blockchain in relazione alla necessità di scegliere la versione corretta del ledger, che preservi la reale cronologia delle transazioni.

    Nella blockchain, tale scelta avviene in presenza di nodi che non possono comunicare correttamente con gli altri, o di nodi disonesti che intendono barare sulla versione corretta della cronologia delle transazioni, rendendo di conseguenza problematico il raggiungimento del consenso all’interno della rete.

    Quale soluzione al problema dei Generali Bizantini?

    Il problema dei Generali Bizantini rappresenta quindi un problema di coordinamento su come raggiungere il consenso condiviso in presenza di possibili errori (rappresentati dai messaggi discordanti inviati dai Generali “infedeli”).

    Tale problema di coordinamento si presenta anche nel raggiungimento del consenso sulle transazioni della Blockchain.

    Pertanto, è necessario implementare un protocollo di consenso in grado di mantenere la propria affidabilità anche in presenza di nodi “infedeli”.

    Ė stato dimostrato che il problema dei Generali Bizantini non ammette soluzione nel caso in cui il numero di Generali infedeli è pari o superiore a un terzo del totale.

    Un protocollo di consenso in grado di resistere al problema dei Generali bizantini è detto Byzantine fault tolerance (BFT).

    Il protocollo di consenso Proof of Work mostra questa capacità.

    Nel caso del PoW, il problema dei generali bizantini è risolto dal fatto che il protocollo non richiede la partecipazione di tutti i nodi della rete per il raggiungimento del consenso.

    Lo scopo del Mining

    Le modalità con cui si ottiene il consenso all’interno della rete variano a seconda dei diversi tipi di blockchain.

    Di conseguenza, non tutti i meccanismi di consenso sono adatti per tutte le blockchain.

    Nel caso della blockchain di Bitcoin, il meccanismo per ottenere il consenso si basa sull’incentivo economico.

    I nodi sono incoraggiati a contribuire al raggiungimento del consenso sulle transazioni attraverso la loro attività di mining, che viene ricompensata sotto forma di bitcoin (come abbiamo visto parlando del PoW).

    Questo sistema di incentivi economici è particolarmente importante per le blockchain pubbliche, poichè consente loro di raggiungere e mantenere la sostenibilità dell’architettura stessa.

    Le differenti tipologie di Blockchain

    Vi sono differenti implementazioni della tecnologia Blockchain, che offrono differenti caratteristiche e funzionalità.

    Le blockchains si possono differenziare infatti non solo in base al consensus protocol adottato, ma anche per altre funzionalità, come ad esempio la capacità di eseguire smart contracts.

    Vediamo quindi le principali tipologie di blockchain attualmente esistenti.

    Blockchain pubblica

    Una blockchain pubblica è una blockchain in cui chiunque può entrarvi a far parte, senza necessità di ottenere permessi in base al ruolo ricoperto all’interno della rete.

    Pertanto, le blockchain pubbliche sono anche dette permissionless blockchains.

    Tra gli esempi di public blockchain possiamo ricordare Bitcoin, Ethereum, Litecoin e così via.

    Blockchain privata

    Nelle blockchain private, i permessi di lettura e scrittura all’interno della rete sono assegnati a gruppi differenti di utenti.

    I permessi di lettura sono solitamente pubblici o assegnati a un numero indefinito di utenti, mentre i permessi di scrittura sono riservati ad un predeterminato gruppo di utenti o organizzazioni.

    Di conseguenza, la validazione delle transazioni è affidata a un numero predeterminato di nodi.

    Alcuni esempi di blockchain privata includono la rete Gem Health, Corda e così via.

    Consortium Blockchain

    In questo tipo di blockchain, la gestione del consenso è limitata a un gruppo predefinito di soggetti.

    Di conseguenza, non sono previsti incentivi o ricompense economiche per l’attività di validazione delle transazioni.

    I tempi di validazione delle transazioni sono ridotti rispetto alle public blockchain.

    Tra gli esempi di consortium blockchain possiamo ricordare Deutsche Boerse e R3.