Una piccola blockchain in Erlang

Reading Time: < 1 minuto

Erlang è uno dei linguaggi di programmazione funzionale che permette di costruire programmi concorrenti in modo abbastanza semplice; il suo paradigma basato su attori offre primitive per creare processi e farli comunicare tra loro in un modo che altri linguaggi non mettono a disposizione.

Un’altra peculiarità di Erlang, forse la più importante, è la possibilità di aggiornare il codice di un programma senza dover interrompere la sua esecuzione. Qui si trova una spiegazione di questa funzionalità.

Tra i software scritti in Erlang troviamo WhatsApp.

Una blockchain, parola molto in voga in questi anni, è una struttura dati che pone delle garanzie sull’autenticità dei dati che contiene. Infatti, una blockchain è una catena di blocchi di lunghezza variabile: si possono aggiungere blocchi solo in testa (o solo in coda) alla catena ma una volta aggiunti non possono essere più modificati, ma solo letti.

Durante il mio percorso universitario mi sono trovato a dover implementare una blockchain in Erlang. In questo caso si tratta di una blockchain distribuita su più nodi in una rete, quindi sono stati implementati algoritmi per lo scambio di informazioni tra i nodi (gossiping) e per la risoluzione di fork della catena.
L’intero codice del progetto, insieme ad una documentazione sul suo funzionamento, è disponibile in questa repository su GitHub.

Ringrazio il mio collega Lorenzo per la collaborazione nella realizzazione di questo progetto.