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

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.