Cos’è la blockchain?
In breve, una blockchain è un elenco di record di dati che funziona come un registro digitale decentralizzato. I dati sono organizzati in blocchi, disposti cronologicamente e protetti mediante crittografia.
Il primo modello di blockchain è stato creato all'inizio degli anni '90, quando l'informatico Stuart Haber e il fisico W. Scott Stornetta hanno utilizzato tecniche crittografiche in una catena di blocchi come un modo per proteggere i documenti digitali dalla manomissione dei dati.
Il lavoro di Haber e Stornetta ha sicuramente ispirato il lavoro di molti altri scienziati informatici e appassionati di crittografia, che alla fine ha portato alla creazione di Bitcoin come il primo sistema di cassa elettronico decentralizzato (o semplicemente la prima criptovaluta).
Sebbene la tecnologia blockchain sia più antica delle criptovalute, è stato solo dopo la creazione di Bitcoin nel 2008 che il suo potenziale ha iniziato a essere riconosciuto. Da allora, l’interesse per la tecnologia blockchain è cresciuto gradualmente e le criptovalute vengono ora riconosciute su scala più ampia.
La tecnologia Blockchain viene utilizzata principalmente per registrare transazioni di criptovaluta, ma si adatta a molti altri tipi di dati digitali e può essere applicata a un'ampia gamma di casi d'uso. La rete blockchain più antica, più sicura e più grande è Bitcoin, progettata con una combinazione attenta ed equilibrata di crittografia e teoria dei giochi.
Come funziona la blockchain?
Nel contesto delle criptovalute, una blockchain è costituita da una catena stabile di blocchi, ciascuno dei quali memorizza un elenco di transazioni precedentemente confermate. Poiché la rete blockchain è gestita da una miriade di computer sparsi in tutto il mondo, funziona come un database (o registro) decentralizzato. Ciò significa che ciascun partecipante (nodo) mantiene una copia dei dati blockchain e comunica tra loro per garantire che siano tutti sulla stessa pagina (o blocco).
Pertanto, le transazioni blockchain avvengono all’interno di una rete globale peer-to-peer e questo è ciò che rende Bitcoin una valuta digitale decentralizzata, senza confini e resistente alla censura. Inoltre, la maggior parte dei sistemi blockchain sono considerati trustless perché non richiedono alcun tipo di fiducia. Non esiste un’unica autorità che controlla Bitcoin.
Una parte centrale di quasi ogni blockchain è il processo di mining, che si basa su algoritmi di hashing. Bitcoin utilizza l'algoritmo SHA-256 (algoritmo hash sicuro a 256 bit). Richiede un input di qualsiasi lunghezza e genera un output che avrà sempre la stessa lunghezza. L'output prodotto è chiamato "hash" e, in questo caso, è sempre composto da 64 caratteri (256 bit).
Quindi lo stesso input risulterà nello stesso output, non importa quante volte il processo viene ripetuto. Ma se viene apportata una piccola modifica all’input, l’output cambierà completamente. Pertanto, le funzioni hash sono deterministiche e, nel mondo delle criptovalute, la maggior parte di esse sono progettate come funzioni hash unidirezionali.
Essendo una funzione unidirezionale significa che è quasi impossibile calcolare quale sia stato l'input dall'output. Si può solo indovinare quale fosse l'input, ma le probabilità di indovinarlo sono estremamente basse. Questo è uno dei motivi per cui la blockchain di Bitcoin è sicura.
Ora che sappiamo cosa fa l'algoritmo, dimostriamo come funziona una blockchain con un semplice esempio di transazione.
Immagina di avere Alice e Bob insieme al loro saldo Bitcoin. Supponiamo che Alice debba a Bob 2 Bitcoin.
Affinché Alice possa inviare a Bob quei 2 bitcoin, Alice trasmette un messaggio con la transazione che vuole effettuare a tutti i minatori della rete.
In quella transazione, Alice fornisce ai minatori l'indirizzo di Bob e la quantità di Bitcoin che vorrebbe inviare, insieme a una firma digitale e alla sua chiave pubblica. La firma viene effettuata con la chiave privata di Alice e i minatori possono verificare che Alice, in effetti, è la proprietaria di quelle monete.
Una volta che i minatori sono sicuri che la transazione sia valida, possono inserirla in un blocco insieme a molte altre transazioni e tentare di minare il blocco. Questo viene fatto inserendo il blocco attraverso l'algoritmo SHA-256. L'output deve iniziare con un certo numero di 0 per essere considerato valido. La quantità di 0 necessari dipende da quella che viene chiamata "difficoltà", che cambia a seconda della potenza di calcolo presente sulla rete.
Per produrre un hash di output con la quantità desiderata di 0 all'inizio, i minatori aggiungono quello che viene chiamato "nonce" nel blocco prima di eseguirlo attraverso l'algoritmo. Poiché una piccola modifica all'input modifica completamente l'output, i minatori provano dei nonce casuali finché non trovano un hash di output valido.
Una volta estratto il blocco, il minatore trasmette il blocco appena estratto a tutti gli altri minatori. Quindi controllano per assicurarsi che il blocco sia valido in modo da poterlo aggiungere alla loro copia della blockchain e la transazione è completa. Ma nel blocco, i minatori devono includere anche l’hash di output del blocco precedente in modo che tutti i blocchi siano legati insieme, da qui il nome blockchain. Questa è una parte importante a causa del modo in cui funziona la fiducia nel sistema.
Ogni minatore ha la propria copia della blockchain sul proprio computer e tutti si fidano della blockchain in cui è stato effettuato il maggior lavoro computazionale, la blockchain più lunga. Se un minatore modifica una transazione in un blocco precedente, l'hash di output per quel blocco cambierà, il che porta a cambiare anche tutti gli hash successivi a causa del fatto che i blocchi vengono apprezzati con gli hash. Il minatore dovrebbe rifare tutto il lavoro per far sì che chiunque accetti la sua blockchain come quella giusta. Quindi, se un minatore volesse imbrogliare, avrebbe bisogno di più del 50% della potenza di calcolo della rete, il che è molto improbabile. Attacchi di rete come questo vengono definiti attacchi del 51%.
Il modello per far funzionare i computer per produrre blocchi è chiamato Proof-of-Work (PoW). Esistono anche altri modelli come Proof-of-Stake (PoS) che non richiedono tanta potenza di calcolo e dovrebbero richiedere meno elettricità pur essendo in grado di adattarsi a più utenti.