Computer 4 dummy

Informatica facile a portata di tutti

guidainternetreteSicurezza

Cosa è la blockchain

Si sente parlare ormai dappertutto di bitcoin, criptovalute e monete virtuali ma tutto è sempre vago e avvolto da un alone di mistero in più viene condito da l’associazione delle criptovalute all’hacking, pirateria e operazioni illegali.

In questo articolo iniziale voglio semplicemente spiegare cosa è la Blockchain e perché è alla base di tutto.

Blockchain

La BLCKCHAIN

Tradotto letteralmente vuol dire catena di blocchi, è infatti costituita da degli elementi detti blocchi legati tra di loro.

La cosa meno conosciuta però è il fatto che è il metodo più sicuro per trasferire dei dati in quanto si tratta di una database distribuito protetto da crittografia senza la possibilità di essere intercettato e modificato.
Qualsiasi modifica ad uno qualsiasi dei blocchi viene annullata per due motivi, il primo perché i blocchi essendo distribuiti quindi su molti computer di tutto il mondo devono mantenere l’uguaglianza tra di loro il secondo è che per l’algoritmo ogni blocco è dipendente dal precedente quindi ogni modifica su un blocco si ripercuote a catena su tutti i sucessivi.

I Blocchi

Dicevamo che tutti i blocchi sono legati tra di loro, partendo quindi dal primo blocco che viene chiamato Genesis Block si procede a generare nuovi blocchi che contengono i seguenti dati:

INDICE

L’indice è il numero sequenziale che identifica il blocco, il primo indice avrà index = 0 il successivo 1 e così via.

TIMESTAMP

La data e ora della generazione del blocco

HASH

E un insieme di lettere e numeri apparentemente casuali che corrispondono all’impronta digitale del blocco.
Come caratteristiche ha:

  • Lunghezza fissa.
  • Gli stessi dati generano gli stessi hash.
  • E facile da calcolare
  • E impossibile risalire ai dati dall’hash
  • Una piccola variazione nei dati comporta una grossa modifica nel hash.

Previus HASH

Si tratta del hash del blocco precedente. Se si tratta del primo blocco generato è 0 perché non esisteva un blocco precedente.

DATA

Informazioni contenute nel blocco, Nel caso dei bitcoin i dati possono includere la quantità di soldi della transazione.

NONCE

E il numero di tentativi che sono stati fatti dall’algoritmo per poter risolvere l’hash

class Block {
  constructor (index, previousHash, timestamp, data, hash, nonce) {
    this.index = index;
    this.previousHash = previousHash;
    this.timestamp = timestamp;
    this.data = data;
    this.hash = hash;
    this.nonce = nonce;
  }

  get genesis() {
    new Block(
      0,
      "0",
      1508270000000,
      "Guida alla Blockchain di computer4dummy",
      "00094474aebeb898ec84caba48bab64c3d8ff41625f7faf4b22d8c966f785082",
      3403
    );
  }
}

module.exports = Block;

Nell’esempio sopra vediamo come è fatto un blocco.

Calcolo del hash

Il calcolo del hash è una funzione che utilizza i dati in ingresso e calcola un hash risultante valido.
Per hash valido si intende un hash che abbia almeno un numero definito di zeri (nel nostro esempio 3), ad ogni tentativo di risoluzione si varia il numero nonce fino ad ottenere un hash valido.

Per capire meglio che calcoli sono necessari per e perchè è richiesta una grossa potenza di calcolo potete approfondire i capcoli necessari alla blockchain in questo articolo: https://wp.me/p7AAZL-jQ

Maggiore è il numero di “0” davanti all’hash richiesto e maggiore è la complessità e il numero di tentativi necessari per trovare un hash valido.

f(data)=hash

Come abbiamo detto prima un hash è calcolato utilizzando come valori l’indice, l’hash precedente, la data di creazione del blocco, i dati di testo ed il nonce.

f(index + pre hash + data + testo + nonce) = hash

Modifica dei dati

Qualsiasi modifica su una delle variabili del blocco comporta di conseguenza una modifica del hash calcolato di conseguenza invalida tutti i blocchi successivi visto che viene modificato a catena l’hash del blocco precedente (previus block).

Minare un blocco

Il mining di un blocco che tradotto letteralmente si dice minare un blocco è in sostanza il numero di tentativi utilizzati per trovare un Hash valido.

A ogni ricerca di un blocco (hash) valido viene utilizzata potenza di calcolo del computer per codificare i dati e verificare il numero di zeri necessari alla validazione.
Il numero nonce incrementa ad ogni verifica fino a quando non viene trovato un hash valido. 

Database distribuito peer to peer

Cerchiamo di spiegare molto semplicemente cos’è un database e cosa significa peer to peer.

Un database  è un sistema che permette di raccogliere i dati e le informazioni in modo ordinato in modo da poter facilmente leggere e scrivere i dati.

Un sistema peer to peer è un sistema dove le informazioni scambiate tra i vari computer di una rete sono scambiate senza seguire una gerarchia prestabilita (es. Server verso client) ma sono connessi tra di loro in modo paritario (diretto senza altri intermediari).

Il fatto che ci sia una rete di computer connessi tra loro permette alla blockchain di restare sicura, corretta e consistente.
Gli utenti della rete quando si connettono verificano quale sia la blockchain più aggiornata e si sincronizzano.

In questo modo ad ogni inserimento di un nuovo blocco tutti gli altri utenti connessi vengono avvisati della modifica (broadcast) e si ri sincronizzano scaricando l’aggiornamento in modo da avere tutti gli utenti aggiornati con l’ultimo blocco della catena.

Immutabilità

Se un blocco viene modificato lo stesso e tutti i blocchi successivi risulteranno non validi e quindi saranno rifiutati da tutti gli utenti della rete peer to peer connessi.

Hackerare una blockchain non è impossibile ma richiederebbe di avere a disposizione oltre al 51% della rete in modo da poter modificare la maggioranza dei blocchi e far ri sincronizzare il resto degli utenti sulla propria blockchain.
Questo diventa praticamente impossibile quanto più è distribuita la blockchain pertanto più sono gli utenti connessi più è sicura.

Ho cercato di semplificare molto il concetto e il funzionamento della blockchain se ci sono delle parti che non sono chiare o vuoi approfondire alcuni concetti non esitare a scriverlo nei commenti.

FONTI:

https://blockchaindemo.io/

https://blockgeeks.com/guides/what-is-hashing/

https://en.wikipedia.org/wiki/SHA-2

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.