Translate

domenica 20 aprile 2014

La catena dei blocchi e le conferme[modifica | modifica sorgente]


La catena principale (in nero) consiste nella serie più lunga di blocchi dal primo (in verde) fino al blocco corrente. I blocchi orfani (in viola) esistono al di fuori della catena principale.
Per impedire la possibilità di utilizzare più volte la stessa moneta, la rete implementa quella che Satoshi Nakamoto descrive come un "server di marcatura oraria peer-to-peer",[26], che assegna identificatori sequenziali ad ognuna delle transazioni che vengono poi rafforzate nei confronti di tentativi di modifica usando l'idea di una catena di proof-of-work (mostrate in Bitcoin come "conferme").
Ogni volta che viene effettuata una transazione, essa parte nello stato di "non confermata"; diventerà "confermata" solo quando verificata attraverso una lista di marcatura oraria gestita collettivamente di tutte le transazioni conosciute, la "catena dei blocchi".
In particolare, ogni nodo "generatore" raccoglie tutte le transazioni non confermate che conosce in un "blocco" candidato, un file che, tra le altre cose,[27]contiene un hash crittografico del precedente blocco valido conosciuto a quel nodo. Prova poi a riprodurre un hash di quel blocco con determinate caratteristiche, uno sforzo che richiede in media una quantità definibile di prove da dover effettuare. Quando un nodo trova tale soluzione la annuncia al resto della rete, i peer che ricevono il blocco ne controllano la validità prima di accettarlo e poi aggiungerlo alla catena.
Quando una transazione viene ammessa per la prima volta in un blocco, riceve una conferma. Ogni volta che al di sopra di quel blocco vengono creati altri blocchi figli ad esso collegato, riceve un'altra conferma. Quando il blocco contenente la transazione raggiunge sei conferme, ovvero vengono creati sei blocchi collegati ad esso, il client Bitcoin cambia stato alla transazione portandola da "non confermata" a "confermata". La motivazione dietro a questa procedura è che ad ogni conferma della transazione, ovvero ad ogni nuovo blocco che viene creato al di sopra del blocco con la transazione stessa, risulta via via più difficile e costoso annullare la transazione. Un ipotetico attaccante, per annullare una transazione con un certo numero di conferme, dovrebbe generare una catena parallela senza la transazione che desidera annullare e composta da un numero di blocchi pari o superiore alle conferme ricevute dalla transazione.