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.
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.
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.
Block header
La struttura dei blocchi è rappresentata dal block header, ovvero intestazione del blocco.
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.