Cos'è la blockchain?
In breve, una blockchain è un elenco di record di dati che funziona come un libro mastro digitale decentralizzato. I dati sono organizzati in blocchi, che sono disposti cronologicamente e protetti grazie alla crittografia.
Il primo modello di blockchain è stato creato all'inizio degli anni Novanta quando lo scienziato Stuart Haber e il fisico W. Scott Stornetta impiegavano tecniche crittografiche all'interno di una catena di blocchi, per proteggere dei documenti digitali dalla manomissione.
Il lavoro di Haber e Stornetta ha sicuramente ispirato il lavoro di molti altri scienziati e appassionati di crittografia, che alla fine hanno portato alla creazione di Bitcoin, come primo sistema di pagamento elettronico decentralizzato (o semplicemente alla nascita della prima criptovaluta).
Anche se la tecnologia blockchain è più vecchia delle criptovalute, è stato solo dopo la creazione di Bitcoin nel 2008, che il suo potenziale iniziò ad essere riconosciuto. Da allora, l'interesse verso la tecnologia blockchain è cresciuto gradualmente e le criptovalute vengono ora riconosciute su ampia scala.
La tecnologia blockchain viene utilizzata principalmente per registrare le transazioni crypto, ma, allo stesso tempo, è adatta a molti altri tipi di dati digitali e può avere diverse applicazioni. La più datata, sicura e grande rete blockchain è quella di Bitcoin, che è stata progettata con un'attenta ed equilibrata combinazione di crittografia e teoria dei giochi.
Come funziona la blockchain?
Nel contesto delle criptovalute, una blockchain è costituita da una catena stabile di blocchi, ognuno dei quali memorizza un elenco di transazioni precedentemente confermate. Visto che la rete blockchain è gestita da una miriade di computer distribuiti in tutto il mondo, funge da database decentralizzato (o Libro mastro). Ciò significa che ogni partecipante (nodo) mantiene una copia dei dati blockchain e comunica con gli altri per assicurarsi che siano tutti sulla stessa pagina (o blocco).
Pertanto, le transazioni blockchain si verificano 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 nei confronti di una terza parte. Non esiste una autorità singola che controlla Bitcoin.
Una caratteristica centrale di quasi tutte le blockchain è il processo di mining, che si basa su algoritmi di hashing. Bitcoin utilizza l'algoritmo SHA-256 (Secure hash algorithm 256 bits). Accetta 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 produrrà lo stesso output, indipendentemente dal numero di volte che il processo viene ripetuto. Tuttavia, se viene apportata una piccola modifica all'input, l'output cambierà completamente. Quindi, le funzioni di hash sono deterministiche e, nel mondo delle criptovalute, la maggior parte di esse sono progettate come funzioni di hash unidirezionali (one-way).
Questo significa che, essendo funzioni unidirezionali, è quasi impossibile ricalcolare l'input dall'output. Si può solo provare ad indovinarlo, ma le probabilità 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 legato a una transazione.
Abbiamo Alice e Bob e conosciamo il loro saldo Bitcoin. Diciamo che Alice deve a Bob 2 Bitcoin.
Per far sì che Alice possa inviare i 2 Bitcoin a Bob, trasmette un messaggio con la transazione che vuole effettuare a tutti i miner della rete.
In questa transazione, Alice fornisce al miner l'indirizzo di Bob e la quantità di Bitcoin che desidera inviare, insieme a una firma digitale e alla propria chiave pubblica. La firma è prodotta tramite la chiave privata di Alice e così i miner possono confermare che sia Alice, a tutti gli effetti, la proprietaria di quelle monete.
Una volta che i miner sono sicuri rispetto la validità della transazione, possono inserirla in un blocco insieme a molte altre transazioni e tentare di minarlo. Il mining avviene inserendo il blocco in un l'algoritmo che effettua un hashing del tipo SHA-256. L'output deve iniziare con un determinato numero di zeri per essere considerato valido. La quantità di zeri necessaria dipende dalla cosiddetta "difficoltà" che cambia in base alla potenza di calcolo presente sulla rete.
Per produrre un hash di output che inizi con un quantità di zeri desiderata, i miner aggiungono nel blocco quello che viene chiamato "nonce", prima di darlo in pasto all'algoritmo. Visto che una piccola modifica all'input cambia completamente l'output, i miner provano dei nonce casuali finché non trovano un hash di output valido.
Una volta che il blocco viene minato, il miner lo trasmette a tutti gli altri miner. Questi controllano che il blocco sia valido, in modo da poterlo aggiungere alla loro copia della blockchain e a questo punto la transazione risulta finalizzata. Ma nel blocco, i miner devono anche includere l'hash di output del blocco precedente in modo che tutti i blocchi siano collegati tra loro, da qui appunto il nome blockchain. Questo è uno step importante, perchè definisce come viene gestita la fiducia all'interno del sistema.
Ogni miner ha una copia della blockchain sul proprio computer e tutti si fidano e accettano la versione della blockchain che sia stata generata con il maggior lavoro computazionale, ovvero la blockchain più lunga. Se un miner cambia una transazione in un blocco precedente, l'hash di output per quel blocco cambierà, il che porta alla modifica di tutti gli hash successivi, dal momento che i blocchi sono collegati tra loro tramite l'hash di quello precedente. Il miner dovrà ripetere tutto il lavoro di mining, per far sì che tutti i nodi accettino la sua versione di blockchain come quella corretta. Quindi, se un miner volesse imbrogliare (modificando un blocco), avrebbe bisogno di più del 50% della potenza di elaborazione disponibile sulla rete, il che è molto improbabile. Attacchi di rete come questo prendono il nome di 51% Attack.
Il modello utilizzato dai computer per produrre dei blocchi si chiama Proof-of-Work (PoW), ci sono anche altri modelli come la Proof-of-Stake (PoS), questa non richiede tanta potenza di calcolo, ha bisogno di meno elettricità e allo stesso tempo può essere scalata per gestire le transazioni di un maggior numero di utenti.