Blockchain: come sapere se “lei” è quella giusta

Il numero di blockchain disponibili sul mercato è in costante aumento, ogni giorno riceviamo mail di partecipazione a ICO o un invito a provare l’ultima blockchain… Ma quali sono le caratteristiche di una blockchain? Come scegliere quella più adatta al proprio scopo?

Una volta determinato il caso d’uso e compresi i motivi per cui la blockchain apporti un reale vantaggio al proprio sistema, arriva il momento di scegliere quale blockchain utilizzare.

Mentre alcune blockchain hanno caratteristiche simili, altre differiscono molto: la scelta quindi non è scontata e una non vale l’altra. Come per l’adozione di qualsiasi software è necessaria una valutazione.

In questo articolo ragioniamo su quali siano alcuni dei principali requisiti da tenere in considerazione per la selezione della blockchain più opportuna al proprio contesto di applicazione, quali ad esempio utilizzi finanziari (scambio di criptovaluta) o per il tracciamento di eventi (supply-chain, notarizzazione di documenti).

L’analisi riguarda le macro aree:

  • Requisiti sulla criticità del servizio
  • Requisiti sui dati
  • Requisiti su prestazioni e integrazioni
  • Costi

Requisiti sulla criticità del servizio

È necessario tenere ben presente il contesto business in cui si opera domandandosi quale sia il livello di criticità del servizio erogato, ad esempio situazioni potenzialmente pericolose per l’uomo o per la natura, i ricavi economici legati al servizio, o ancora implicazioni legali.

Questo aspetto mette un vincolo forte su un aspetto fondamentale della blockchain, la maturità del prodotto e del suo ecosistema, quali strumenti, librerie, documentazione.

Prendiamo ad esempio il caso di utilizzo della blockchain per il tracciamento della storia di una cartella clinica: è un servizio ad alto livello di criticità in quanto la cartella clinica contiene dati fortemente sensibili, inoltre un comportamento inaspettato della blockchain potrebbe compromettere l’erogazione del servizio con possibili ripercussioni sulla salute del paziente.

Altra questione invece è un contesto in cui non sia critica l’erogazione del servizio, privilegiando aspetti di ricerca e sperimentazione.

Alcuni aspetti da investigare per valutare la maturità di una blockchain sono:

  • Numero di versione stabile del software;
  • Frequenza di rilascio di versioni non retro compatibili del software;
  • Casi di applicazione già esistenti e in quali contesti (privati/pubblici), problematiche evidenziate da tali esperienze;
  • Road-map pianificata per l’evoluzione del software e dimensione della community;
  • Natura dell’iniziativa: può essere commerciale di un’azienda privata o di un consorzio di aziende private, oppure di natura open con una fondazione senza scopo di lucro;
  • Librerie per integrarsi con la blokchain in termini di: quali modalità possibili per l’integrazione, quali linguaggi sono supportati e quante delle funzionalità della blockchain (cioè di un nodo) sono implementate;
  • Completezza e chiarezza della documentazione e degli esempi di codice;
  • Supporto al prodotto: enterprise, community?
  • Strumenti per il monitoraggio del software

Requisiti sui dati

Natura dei dati inseriti in blockchain

La natura dei dati trattati va tenuta in grande considerazione. Innanzitutto c’è da verificare se i dati inseriti in blockchain siano sottoposti a vincoli di privacy o normativi come ad esempio il regolamento europeo in materia di protezione dei dati personali in vigore dal 25 maggio 2018 (noto con l’acronimo gdpr). ­­

Se si sta valutando l’utilizzo di una blockchain pubblica questo aspetto è ulteriormente critico: i dati relativi agli account e alle transazioni sono considerati sensibili? Privati? Riservati? Inoltre, una volta inserito un dato nella blockchain, questo vi rimarrà teoricamente per sempre, replicato su ogni nodo della rete. È accettabile quindi perdere il controllo di tali informazioni?

Alcune blockchain forniscono canali privati di comunicazione tra attori della rete, in altri casi si utilizzano tecniche matematiche per crittografare o offuscare i dati.

La crittografia consente di rendere indecifrabili le informazioni sensibili ad attori sconosciuti, è necessario però valutare che un algoritmo crittografico oggi considerato sicuro possa non esserlo in un futuro non troppo lontano.

Per ovviare a questo problema un meccanismo diffuso in alcuni casi d’uso è l’offuscamento delle informazioni tramite funzioni matematiche non invertibili, come l’algoritmo di hash. Ovviamente, una volta offuscate le informazioni perdono di significato ed è necessario mantenere una copia dell’informazione originale.

Governo delle identità e degli accessi

Siamo abituati a utilizzare sistemi autenticati inviando i propri dati di registrazione e a un meccanismo per il recupero della password dimenticata. Questo però non è tipicamente  il modo di operare delle blockchain. Le più note, come Bitcoin e Ethereum, implementano a pieno il concetto di decentralizzazione: l’utente crea il proprio account in autonomia senza l’ausilio di un servizio remoto ed è pronto ad operare sulla rete.

Questo modello caratterizzato da assenza di controllo e totale autonomia potrebbe non essere opportuno in contesti in cui è necessario certificare gli utenti e monitorarne gli accessi. Per questo motivo sono state create le blockchain enterprise, ossia con caratteristiche tipiche di contesti di livello enterprise.

Ne sono esempi R3 Corda o Hyperledger Fabric. Corda, che più precisamente è un distributed ledger technology (DLT), è stato ideato e progettato specificamente per l’ambito finanziario in collaborazione con enti regolatori e istituti finanziari, con l’obiettivo di creare un’infrastruttura simil-blockchain capace di gestire un elevato numero di transazioni e dove fosse garantita la privacy delle informazioni relative alle transazioni.

Hyperledger invece promette di poter personalizzare le logiche di gestione delle utenze e l’algoritmo di consenso utilizzato per la validazione dei blocchi.

Durabilità e incorruttibilità dei dati scritti in blockchain

La domande da porsi sono: cosa succede se la blockchain non si rivela immutabile come promesso? Quali sono le conseguenze nel caso i dati su blockchain vengono corrotti o cancellati?

Il nome blockchain, di per sé, non garantisce l’immutabilità dei dati in essa contenuti. L’immutabilità e la durabilità del dato scritto in blockchain derivano dal verificarsi di una concomitanza di fattori, quali:

  • Architettura: sono previsti nodi che operano con differenti capacità e privilegi? Va valutato se tali nodi possono operare azioni di censura verso gli altri attori della rete.
  • Algoritmo di consenso: è uno dei temi fondamentali per le blockchain (e DLT), l’algoritmo di consenso è il meccanismo tramite il quale i nodi della rete raggiungono il consenso sullo stato condiviso. Il tema è particolarmente dibattuto in quanto ha forti implicazioni sul comportamento (e sulle prestazioni) della blockchain. Ne esistono diversi tipi, due tra gli algoritmi più noti ed efficaci sono proof-of-work (PoW) e proof-of-stake (PoS), rispettivamente utilizzati da Bitcoin e da Ethereum.
  • Modello di governo di versionamento del software: la blockchain è un normale software che evolve di versione in versione, ma chi decide l’avanzamento di versione? E cosa può implicare? Ne è caso emblematico ciò che avvenne sulla blockchain di Ethereum nel luglio 2016 in seguito ad un trasferimento di fondi non autorizzato reso possibile da una falla nel software. La Ethereum foundation decise di riavvolgere la cronologia delle transazioni all’istante precedente l’hacking cui seguì un dibattito di carattere etico proprio sul tema dell’immutabilità.

Requisiti su prestazioni e integrazioni

DLT e blockchain possono differire grandemente in termini di prestazioni erogate e capacità di integrarsi con altri sistemi, siano essi sistemi blockchain o non-blockchain.

Prestazioni

Gli indicatori tipici di una blockchain riguardano:

  • Tempo di validazione delle transazioni: identifica il tempo impiegato dalla rete dal momento di presa in carico di una transazione a quando questa viene considerata valida da tutti i nodi della rete stessa. L’elemento che influisce maggiormente è il meccanismo di validazione: alcune blockchain scelgono per tale compito nodi della rete casuali e ogni volta differenti, altre hanno nodi centralizzati designati a priori. Va quindi analizzato il meccanismo di consenso e l’architettura della blockchain.
  • Throughput delle transazioni: identifica la capacità di processare un certo numero di transazioni nell’unità di tempo. Normalmente la rete processa le transazioni a gruppi. Maggiore è il numero delle transazioni processate, maggiore è lo throughput. Gli elementi che influiscono sono la capacità dei blocchi di assorbire transazioni e la dimensione di ciascuna transazione.
  • Scalabilità: si intende la capacità delle rete di conservare le sue funzionalità al crescere del numero dei nodi e delle interazioni. Difficile da calcolare su base teorica in quanto dipende da diversi fattori come l’architettura, la dimensione dei blocchi e delle transazioni. Tipicamente viene testata direttamente sul campo.

Integrazioni

È necessario avere presente quali siano i requisiti di integrazione, ossia le modalità di interazione tra la blockchain e altri sistemi blockchain o non-blockchain. Quando si parla di integrazione con una blockchain si intende l’integrazione con i nodi che la compongono.

  • Modalità di integrazione con sistemi non-blockchain: è lo scenario attualmente più tipico in cui i sistemi non-blockchain interagiscono come client verso il nodo che tipicamente espone funzionalità tramite API.
  • Modalità di integrazione inter-blockchain: dal punto di vista tecnologico due blockchain sono in grado di integrarsi tra loro se lo sono anche i rispettivi protocolli di comunicazione. Possiamo considerare l’esempio di Multichain che deriva direttamente dal progetto di Bitcoin e conserva la compatibilità del protocollo di comunicazione. Consideriamo però che attualmente l’integrabilità delle blockchain è uno scenario avanzato essendo in una fase ancora fortemente sperimentale; è possibile dunque che l’integrabilità diventi un requisito più forte in una fase di maggiore consolidamento degli approcci a blockchain.

Costi

I costi di una blockchain si dividono tra costi di transazione e costi di infrastruttura.

Costi di transazione

Per costi di transazione si intende la commissione (espressa in valuta digitale caratteristica della blockchain utilizzata) richiesta al mittente per effettuare la transazione. La commissione è poi tipicamente corrisposta ai nodi della rete che operano in favore del meccanismo di validazione, fondamentale al funzionamento della blockchain.

Alcune blockchain, e in particolare i DLT, tipicamente non hanno costi di transazione né valuta digitale nativa. Un  esempio è IOTA, blockchain che basa la propria architettura sul concetto di micro transazioni in un contesto di micro nodi operativi su dispositivi dalle ridotte capacità computazionali e tipici dello scenario dell’Internet of Things (IoT).

Costi di infrastruttura

I costi di infrastruttura sono tutti quei costi necessari per l’operatività del sistema informativo. In caso di blockchain privata bisogna quindi considerare i requisiti di funzionamento dei nodi in termini di risorse computazionali e di banda di rete utilizzata per le comunicazioni. Probabilmente sarà inoltre necessario l’utilizzo di virtual private network (VPN) ed un sistema di presidio, monitoraggio e alerting studiato ad hoc.

In alternativa sono in aumento le blockchain che è possibile utilizzare come servizi cloud e che prendono il nome di Blockchain-as-a-Service (BaaS).

Conclusioni

In generale possiamo dire che il processo di investigazione e valutazione delle tecnologie a blockchain/DLT non differisce in termini metodologici da quello utilizzato per qualsiasi altra tecnologia, mentre possiamo sicuramente dire che esiste un’impedenza non trascurabile nella comprensione di questa tecnologia (declinata nelle varie implementazioni) dovuto al notevole livello di innovazione che introduce.

Per quanto riguarda i fattori che incidono sulla scelta di una blockchain/DLT ne esistono molteplici, in questo articolo ne sono stati descritti alcuni e si nota come i temi tecnici siano strettamente legati a temi di governabilità, con un focus particolare sui dati.

A Imola Informatica abbiamo maturato esperienza su progetti che utilizzano la blockchain in casi d’uso reali di tracciamento della supply chain e in servizi in ambito banking; possiamo dire che l’aspetto fondamentale è la comprensione della quantità e della qualità delle implicazioni a tutti i livelli: la visione completa è la chiave per la costruzione di un servizio che utilizza la blockchain.

Detto il narcolettico. In Imola Informatica da sempre, ho un background parecchio orizzontale, una strana tendenza a risolvere problemi (a modo mio) e una grande gioia a vedere crescere le persone!! Il presente è vissuto di giorno da quasi Solution Architect, la notte di intrighi Blockchain based.