Whitepaper – Network

Indice

Eccoci arrivati al quinto capitolo di approfondimento del whitepaper di Satoshi Nakamoto.

Nel successivo capitolo abbiamo affrontato la tempesta portata dalla Proof-Work. Se siete arrivati fino a qui significa che siete riusciti a superare tutte le intemperie.

Se per caso, qualcosa non vie è chiaro, come nel gioco dell’oca, ritornate al punto di partenza 😉

In alternativa, scrivetemi pure su info@coindipity.com sarò ben lieto di rispondere ai vostri dubbi ma anche nel ricevere consigli su come migliorare questo blog.

Prima di riprendere l’analisi facciamo un piccolo riassunto della sezione precedente.

Riassunto Proof-Of-Work

La Proof-of-Work consiste in un gara dove i partecipanti alla rete peer-to-peer competono tra di loro iterando ripetutamente la funzione SHA256.

Ogni iterazione viene calcolata con un nonce diverso dal precedente, finché, il risultato dell’hash, non inizia con il numero di zero richiesti dal protocollo.

Il primo a trovare la soluzione, potrà aggiungere il blocco alla catena esistente.

Per fare in modo che il numero medio di blocchi aggiunti all’ora alla catena rimanga il più possibile costante, ogni due settimane, in base alla variazione della potenza di calcolo disponibile, viene modificato il vincolo del numero di zero con cui l’hash deve iniziare.

L’obiettivo della Proof-of-Work è validare le transazioni disponibili in quel blocco fornendo una prova indelebile nel tempo della loro validità.

Ma come vengono aggiunte delle nuove transazioni alla timechain (blockchain)?

Vediamolo in questo nuovo articolo 🙂

Come vengono aggiunte delle nuove transazioni alla timechain?

In questa sezione, Satoshi ci spiega, passo dopo passo, come vengono aggiunte delle nuove transazioni alla timechain.

Gli step dall’1 al 3, non dovrebbero darci fastidio dopo tutte le volte che gli abbiamo ripetuto, ad ogni modo:

  • punto 1: le transazioni vengono inviate a tutti i nodi della rete peer-to-peer
  • punto 2: ogni nodo raggruppa tutte le transazioni all’interno di un blocco
  • punto 3: ogni nodo inizia a lavorare per calcolare l’hash che risolve il vincolo del numero di zero richiesti

Ora arriva la parte inesplorata:

  • punto 4: il nodo che trova l’hash con il vincolo richiesto, inizia a diffondere il nuovo blocco al resto della rete.
  • punto 5: con il principio che verificare è meglio che fidarsi, ogni nodo verifica che le transazioni all’interno del blocco ricevuto siano valide e che non ci sia stata una doppia spesa, cioè delle transazioni già avvenute.

A proposito del punto 5 apriamo una piccola parentesi.

All’interno della rete Bitcoin i nodi possono essere differenziati in due gruppi:

  • nodi di mining, utilizzati per aggiungere transazioni attraverso la proof-of-work
  • nodi di verifica, utilizzati per verificare le transazioni e quindi validare il lavoro dei nodi di mining

In pratica: tutti i minatori sono nodi, ma non tutti i nodi sono minatori.

Ora provate a ripetere velocemente 😉

Cercando di farla semplice: un nodo convalida le transazioni, mentre il nodo di mining, oltre a convalidare le transazioni, deve essere attrezzato con dell’hardware sufficiente ad effettuare la proof-of work per riuscire ad aggiungere nuovi blocchi alla catena.

Mentre un nodo di mining consuma energia e deve avere un hardware sempre performante per il calcolo ripetuto dello SHA-256, un nodo di verifica può essere messo in funzione anche con un vecchio PC con il vincolo di avere un hard-disk capiente per memorizzare tutta la blockchain. Allo stato attuale, lo spazio occupato dalla blockchain è di circa 500 gigabyte.

Capire la differenza dei diversi nodi all’interno della rete Bitcoin, è sicuramente un argomento che sarà oggetto di trattazione. Per ora, limitiamoci alla semplice differenziazione fatta e passiamo all’ultimo step:

  • punto 6: i nodi esprimono l’accettazione del nuovo blocco ricevuto iniziando a lavorare per la creazione del blocco successivo utilizzando l’hash del blocco appena ricevuto.

Come abbiamo visto nel capitolo dedicato alla proof-of-work, i calcoli che un nodo esegue dipendono fortemente dall’hash del blocco precedente.

Un nodo che fiuta puzza d’imbroglio non va a sprecare energia per creare un nuovo blocco che utilizza come ingresso l’hash non valido del blocco precedente.

Questo obbliga i nodi ad accettare solo blocchi validi se vogliono che il loro successivo blocco sia accettato dal resto della rete.

La regola della catena più lunga

Ma cosa succede se più nodi trovano contemporaneamente la soluzione di un blocco?

Come afferma Nakamoto, i nodi considerano sempre la catena più lunga e continuano a lavorare per estenderla. Cerchiamo di capire con un esempio questo principio fondamentale.

Supponiamo due nodi di mining: uno gestito da Pippo ed uno gestito da Gino.

I due nodi inizieranno a raccogliere le transazioni e a lavorare per trovare l’hash per il nuovo blocco.

Ad un certo punto, simultaneamente, sia il nodo di Pippo che il nodo di Gino troverà la soluzione per il nuovo blocco.

Pippo e Gino trasmetteranno così al resto della rete la loro versione del blocco.

I restanti nodi della rete, non essendoci perfetta contemporaneità, inizieranno a ricevere chi la versione del blocco di Pippo chi la versione del blocco di Gino. Che fare?

Niente, i nodi inizieranno a lavorare alla soluzione del blocco successivo utilizzando il primo dei due blocchi ricevuto, indipendentemente di chi esso sia. Allo stesso tempo, però, terranno salvato il ramo in cui erano, nel caso in cui questo diventi più lungo rispetto a dove loro ora stanno lavorando.

Ad un certo punto, qualche altro nodo della rete, troverà la soluzione dell’hash per un nuovo blocco di transazioni aggiungendolo ad una delle due catene.

Questa catena, avendo un blocco in più rispetto all’altra, diventerà quella più lunga.

I nodi di mining che stavano lavorando nel ramo più corto, accorgendosi che esiste un ramo più lungo del loro, migreranno la loro energia di calcolo su quel ramo, scartando così l’altro.

La catena più lunga diventa la sola catena corretta della timechain.

Una rete imperfetta

La rete peer-to-peer di Bitcoin, non è un’infrastruttura perfetta: molti nodi possono essere offline per cause tecniche o ci possono essere latenze sulla connessione internet dei nodi.

Satoshi, per questo motivo, afferma che non necessariamente le transazioni devono raggiungere tutti i nodi, ma è sufficiente che siano in grado di raggiungere un numero di nodi tale da riuscire ad essere raggruppate in un blocco.

I nodi, inoltre, possono saltare uno o più blocchi oppure andare completamente offline. Ma nel momento in cui torneranno online o riceveranno il blocco successivo dagli altri nodi, potranno immediatamente riallinearsi e ritornare sulla catena corretta più lunga.

Conclusioni

In questa sezione, Satoshi, in 6 passi, ci ha spiegato come le transazioni vengono prima raggruppate e poi incluse in blocco per essere propagato all’intera rete peer-to-peer.

Nakamoto, ci ha anche rassicurato che non dobbiamo assolutamente preoccuparci se più nodi vanno offline, le transazioni verranno comunque propagate dagli altri nodi e appena i nodi torneranno online si allineeranno alla catena più lunga, sincronizzandosi con i blocchi mancanti.

Bene, ma perchè mai dovremmo avere interesse per avviare un nostro nodo di mining per aggiungere le transazioni all’interno di un blocco?

Lo scopriremo nel prossimo articolo, dove ci sarà più chiaro perché è stato coniato il termine mining 😉

A presto 😊

Fonti e approfondimenti

Condividi questo post

Se apprezzi il lavoro che facciamo puoi aiutarci a mantenere i contenuti sempre di più aggiornati donandoci qualche Satoshi

CONTATTACI

Compila il form per qualsiasi richiesta di assitenza.