Definizione di “blockchain” e introduzione al funzionamento

Non esiste una definizione univoca e universalmente accettata di “blockchain”, se non la letterale “catena di blocchi”. Questo perché esistono diverse interpretazioni del complesso meccanismo che più blockchains possono condividere. Citando l’ormai classico The Business Blockchain di William Mougayar (2016), esistono in realtà almeno tre tipi di definizioni della blockchain:

  • quella tecnico-tecnologica (che, stando all’autore, è la seguente: “database back-end che conserva un ledger distribuito che può essere ispezionato apertamente”),
  • quella business-wise (“una rete di scambio per il trasferimento di transazioni, valore e assets tra nodi, senza l’assistenza di intermediari”),
  • quella giuridico-legale (secondo la quale “la blockchain convalida le transazioni, sostituendo gli enti tradizionali”).

Riprendendo la prima, per “blockchain” s’intende, generalmente, un’infrastruttura – essenzialmente, una rete decentralizzata di server in comunicazione tipo peer-to-peer – che consente la gestione di transazioni crittografate. Molto sinteticamente, il sistema crittografico sfrutta due chiavi, una “privata” e una “pubblica”: la prima consente l’inserimento della transazione e la derivazione del suo indirizzo, la seconda la sua verifica (Mastering Bitcoin: Programming the Open Blockchain, Andreas Antonopoulos, O’Reilly, 2017, pagg.57- 60).

Si tratta, in realtà, di una sottofamiglia di tecnologie già note come Distributed ledgers, nelle quali il registro è strutturato come una catena di blocchi di transazioni. Ciascun nodo della rete, oltre ad implementare lo specifico protocollo di comunicazione, contiene tutti i blocchi della catena. Tuttavia, la validazione di questi blocchi, che precede l’inserimento nel registro condiviso, nelle blockchains è affidata ad un meccanismo di consenso: non è, pertanto, sempre lo stesso server a fornire le transazioni (che ha ordinato secondo l’ordine nel quale le ha ricevute) a tutti gli altri. Ecco perché tale tipologia di rete è “decentralizzata”.

Va sottolineato che, in molti casi (le cosiddette public blockchains quale la Bitcoin), la logica di governance è costruita attorno alla fiducia tra tutti i partecipanti. Non c’è, pertanto, necessità di un ente centrale che garantisca, ad esempio, che uno stesso asset non venga trasferito, contemporaneamente, a due utenti diversi. L’impossibilità del cosiddetto “double spending” ha da subito entusiasmato quanti vedono le blockchains come disruptive: una delle principali sfide della contemporaneità è infatti costituita dalla gestione degli asset digitali, per i quali è inaccettabile il proliferare delle duplicazioni – che valore avrebbe, infatti, un bitcoin o qualunque altro assett così trasferito da un proprietario ad un altro?

Il meccanismo di consenso, componente principe della blockchain, è normalmente distribuito su tutti i nodi della rete: ovvero, qualunque server può essere eletto per inserire il proprio blocco di transazioni, che gli altri salveranno localmente.

Affinché un nuovo blocco di transazioni sia aggiunto alla blockchain è necessario che sia controllato, validato e crittografato. Per effettuare questo passaggio, è normalmente necessario (in blockchains pubbliche quali Bitcoin o Ethereum) che alla composizione di ciascun blocco venga risolto un complesso problema matematico, che richiede un impegno cospicuo in termini di potenza e di capacità elaborativa. Questa operazione viene definita come “Mining” ed è svolta, dietro compenso, dai “Miners”: al vincitore della sfida, infatti, va normalmente un premio in frazioni della crittovaluta associata alla blockchain (Bitcoin o Ether).

Più dettagliatamente, i blocchi archiviano un insieme di transazioni validate e correlate da un marcatore temporale (Timestamp). La marca temporale è costituita da una sequenza specifica di caratteri che identificano in modo univoco, indelebile e immutabile una data e/o un orario al fine di fissare e accertare l’effettivo avvenimento di un certo evento. Ecco perché ci si riferisce ai timestamps anche come a proofs-of-existence (The Business Blockchain, Certified Blockchain Experts, Edizioni Efesto, 2019, pag.28).

Il timestamping è una delle caratteristiche fondamentali della blockchain: poiché ogni blocco è timestamped e poiché ciascun nuovo blocco deve fare riferimento al precedente, la combinazione con gli hash crittografici consente che la catena di blocchi costituisca un record immutabile di tutte le transazioni nella rete, sin dal primo blocco (che è detto “di genesi”).

Pur essendo i nodi della blockchain “decentralizzati” anche geograficamente – possono cioè trovarsi in parti del pianeta appartenenti a fusi orari diversi –, il timestamp è indipendente dalla specifica time-zone del miner (Mastering Ethereum: Building Smart Contracts and DApps, Andreas Antonopoulos e Gavin Wood, O’Reilly, 2018).

Ogni blocco, inoltre, include un hash – essenzialmente, una funzione algoritmica informatica non invertibile che mappa una stringa di lunghezza arbitraria in una stringa di lunghezza predefinita – che

  • identifica il blocco in modo univoco;
  • permette il collegamento con il blocco precedente tramite l’identificazione del blocco precedente.

È importante, a questo punto, specificare che gli algoritmi di hashing sono “deterministici”: uno stesso input, fornito più volte, porterà sempre allo stesso output. Ciò contribuisce enormemente all’affidabilità delle blockchains.

Ribadiamo che una delle caratteristiche più importanti della blockchain è la sicurezza: la marca temporale impedisce che l’operazione, una volta eseguita, venga alterata o annullata. Essa consente di associare una data e un’ora certe, e legalmente valide, ad un documento informatico. In altre parole, consente di definire una validazione temporale che può essere opponibile a terzi. Sembra doveroso, infine, chiedersi: le blockchains sono davvero “immutabili”? Per farla breve, alterarle è, piuttosto, “estremamente difficile”: a causa del proprio hash, infatti, ciascun blocco è collegato al pecedente, del quale ne include l’hash caratteristico. Approfondiamo la questione: ciascun hash include un Merkle root hash di tutte le transazioni nel blocco precedente; se una sola transazione viene cambiata, non solo il Merkle root hash cambia: cambia anche l’hash contenuto nel blocco alterato! Inoltre, ciascun blocco successivo avrà, a questo punto, bisogno di un update. Nel caso della cosiddetta “proof-of-work” (l’algoritmo di consenso che consente a Bitcoin, ad Ethereum e a diverse altre blockchains di funzionare), la quantità di energia richiesta per ricalcolare il cosiddetto “nonce” – si tratta, essenzialmente, di un contatore (detto “number used only once”) il cui valore cresce al crescere del numero di transazioni – per il blocco in questione e tutti i successivi risulterà proibitiva. Pertanto, risulterà piuttosto semplice individuare la manomissione, semplicemente ricalcolando gli hashes dei blocchi, il cui costo energetico-computazionale è decisamente più abbordabile (Mastering Bitcoin: Programming the Open Blockchain, Andreas Antonopoulos, O’Reilly, 2017, pagg.201- 207). Non è indispensabile, ai fini di questo articolo, scendere ulteriormente nel dettaglio. Ci limitiamo a rimandare, qualora il lettore/la lettrice volesse approfondire, alla spiegazione fornita nel primo modulo del corso “Blockchain Essentials”, che è fruibile gratuitamente al link https://cognitiveclass.ai/courses/blockchain-course.

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here