03. Costruzione della Blockchain

In questo paragrafo verrà descritto il processo di creazione della Blockchain tramite una demo passo passo, introducendo i concetto fondamentali in modo progressivo.

L'impronta digitale di un documento (Hash)

A partire da un qualsiasi documento digitale, la funzione di hash consente di calcolare una stringa, di lunghezza prefissata (valore di hash), collegata al documento stesso in modo analogo a come le impronte digitali sono collegate ad una persona.

Qualsiasi variazione, anche di un solo carattere, del documento originario comporta l'associazione di un valore di hash differente.

Due documenti identici (ottenuti per copia, per intenderci) hanno lo stesso valore di hash.

SHA 256 produce un fingerprint di 256 bit e quindi 32 byte. Come è noto un byte può essere rappresentato con due cifre esadecimali.

Nell'esempio il risultato è rappresentato con 64 cifre esadecimali.

link

E' possibile confrontare il risultato con quello generato da un un qualsiasi altro programma on line che genera un hash SHA 256 (clicca qui).

Il blocco

Un blocco è un documento digitale che ha una forma particolare perché costituito da più campi:

  • Block Number: un numero progressivo di blocco

  • Nonce: un campo che serve per validare il blocco

  • Data: un campo che conterrà i dati da regisitrare (le transazioni)

  • Hash: il fingerprint dell'intero documento.

La particolarità è che si ritiene validato il blocco se l'hash del documento ha una forma particolare. In questa demo si richiede che la stringa di hash inizi con quattro zeri (nella realtà l'hash dei blocchi di bitcoin dovranno iniziare con un numero maggiore di zeri).

Per far si che l'hash assuma questa forma occorre modificare il campo Nonce a caso fin quando non capita che l'hash abbia la forma richiesta.

Questo procedimento richiede numerosi tentativi e quindi un'elaborazione molto dispendiosa anche per computer moderni.

E' questo il lavoro fatto dai miner ed in gergo si dice che devono risolvere un "puzzle crittografico".

link

La blockchain (catena)

I blocchi sono collegati gli uni gli altri tramite un ulteriore campo, il Previous, che registra l'hash del blocco precedente.

Questo campo fa parte del documento e quindi l'hash del blocco è sensibile anche a variazioni di questo campo.

Se si modifica un blocco intermedio, viene compromessa la catena, da quel punto in poi.

link

Le transazioni

Ogni blocco della catena registrerà una o più transazioni, tracciando l'ammontare movimentato, mittente e destinatario.

link

Questo esempio, tuttavia, evidenzia che sono registrate operazioni non consistenti: infatti non tutti disponevano dell'ammontare movimentato.

Transazioni Coinbase

Prima di validare una transazione, occorre scorrere la catena all'indietro per verificare se l'ammontare che desidera movimentare un soggetto è effettivamente nelle sue disponibilità.

Nell'esempio è inserito un ulteriore campo che registra le transazioni speciali di ricompensa per i miner, le transazioni coinbase.