Blockchain

La blockchain è una infrastruttura dati in modalità append only distribuita in una rete di nodi P2P decentralizzata. Composta da blocchi immutabili resi sicuri da algoritmi di encryption hashing e firma digitale

Per far si che una blockchain funzioni devono essere definiti protocolli per garantire le seguenti funzionalità (implementate per mezzo di firma digitale e hash):

Struttura

Ogni elemento della blockchain rispetta la seguente struttura

Dove e presente un header che contiene informazioni riguardanti:

Con questa struttura ogni modifica al blocco $i$ necessita di modificare tutti i blocchi successivi per poter mantenere la catena

Data payload (merkle tree)

Il blocco dati e organizzato secondo una struttura ad albero chiamata merkle tree

Dove le foglie dell’albero contengono i dati effettivi e i relativi genitori l’hash dei rispettivi figli, la radice dell’albero e mantenuta nel header del blocco

Verifica della base dati

La verifica della base dati può essere fatta chiedendo alla maggioranza dei nodi che ospitano la block chain

Inserimento di nuovi blocchi

Il protocollo di inserimento di nuovi dati e una procedura critica che deve essere svolta attraverso un consenso della maggioranza

Esempio applicativo: bitcoin

Sistema basato su blockchain per le transazioni economiche anonime fra utenti, ogni nodo mantiene nella sua blockchain le informazioni riguardo le transazioni che sono state convalidate.

Terminologia

Protocollo di consenso

I nodi devono poter espletare, alla richiesta di inserimento di un blocco nella blockchain un protocollo con le seguenti caratteristiche:

Bitcoin implementa la seguente soluzione:

Cosa può fare un attaccante

Un attaccante può tentare una doppia spesa se viene selezionato per l’invio del blocco agli atri in cui non e presente la transazione del nodo in questione verso un altro utente

Il problema non e risolvibile può essere arginato scegliendo nodi che hanno probabilità più alta di essere onesti.

DI conseguenza la selezione di un nodo non e randomica ma segue un processo di selezione, incentivato da due fattori:

Per far funzionare un simile sistema e necessario che il processo di selezione sia basato su un qualcosa che nessun nodo puo monopolizzare, in bitcoin si usa la potenza di calcolo (proof of work)

Processo di selezione: proof of work

Nel processo di selezione i nodi che concorrono per inserire il blocco devono risolvere un hash puzzle ovvero trovare un intero nounce tale per cui l’hash del blocco sia inferiore a un certo valore