Da più di dieci anni Bitcoin è il punto di riferimento e capostipite di un nuovo settore dell’information technology: i Distributed Ledger Technology, in sigla DLT. Bitcoin è la rete più sicura e per questo anche la più nota ma ha dei limiti strutturali che ne hanno impedito fino ad ora l’adozione massiva. Il suo limite principale è la quantità di transazioni che è in grado di processare, all’incirca 5 al secondo. Altrettanto limitante è il tempo di attesa per vedere confermata una transazione, almeno trenta minuti. Questi limiti uniti al successo economico del progetto hanno stimolato la corsa a trovare una soluzione alternativa in grado di replicare il risultato economico, anzi superarlo grazie alla possibilità di adozione maggiore. Nonostante i miliardi di dollari immessi nel sistema, per ora tutto questo non è avvenuto e la causa è ben nota: Bitcoin e tutti i progetti direttamente derivati subiscono il trilemma della blockchain.
Il trilemma sancisce che una blockchain non può scalare senza compromettere sicurezza e/o decentralizzazione. Dopo anni di studi e discussioni sono giunto alla conclusione che il trilemma non sia, come appare a prima vista, legato strettamente alla modalità con cui viene gestito il registro (ovvero la catena di blocchi vera e propria a cui si fa riferimento il nome del trilemma) ma derivi dalla tipologia di transazioni gestite dal sistema: esclusivamente transazioni economiche.
Nel progetto Bitcoin questa scelta è stata indotta essenzialmente dalla necessità di innescare l’attivazione della rete e la più ampia partecipazione di operatori possibili e più in generale dall’obiettivo del progetto che era quello di creare specificatamente una moneta digitale.
Nei progetti derivati tuttavia queste motivazioni non sono più così rilevanti. Oggi sappiamo che una rete decentralizzata può essere molto utile per varie tipologie di applicazioni quindi il vincolo è rimasto essenzialmente per tentare di replicare il successo del modello economico che è di base il seguente: servono criptomonete per spostare criptomonete e ciò innesca una potenziale crescita del prezzo all’aumentare del numero di transazioni.
Questo vincolo, presente in ogni progetto di DLT Pubblico, comporta che ogni transazione sia sempre una transazione economica e ciò innesca il trilemma della blockchain anche in tutte le reti alternative a Bitcoin.
I progettisti di Bitcoin hanno sostanzialmente abbandonato l’idea di far evolvere il sistema per migliorarne le prestazioni preferendo invece la creazione di una side-chain che fornisce servizi indipendenti dal registro e quindi non è vincolata dai suoi limiti prestazionali.
Questo approccio a mio parere non è conforme allo spirito del modello originale. In particolare al motto “Don’t trust, verify”: l’assenza di un registro su cui vengono registrate le transazioni eseguite sulla side-chain impedisce di verificare la presenza di transazioni in conflitto o ogni altra possibile anomalia. Nell’impossibilità di effettuare una verifica non ci rimane che doversi fidare del nodo a cui siamo collegati e della catena di sicurezza dietro di lui, purtroppo non così trasparente.
Un approccio completamente opposto è stato adottato fin dal 2015 dai progettisti di IOTA, attualmente l’unico progetto che si pone l’obiettivo di una reale adozione massiva mantenendo un registro distribuito.
La soluzione adottata da IOTA è molto articolata, quindi non posso entrare nei dettagli in questo breve articolo, ma provo a illustrare le principali caratteristiche confrontandole con Bitcoin.
Le transazioni di IOTA sono strutture dati contenti le informazioni necessarie ad aggiornare la copia del registro mantenuta da ogni nodo.
Sono quindi analoghe a quelle di Bitcoin, con due significative differenze:
IOTA a differenza di Bitcoin e di tutti i suoi derivati non prevede che una transazione debba pagare una tassa per essere accettata dalla rete.
Quindi tutte le transazioni IOTA non sono trattate dalla rete come transazioni economiche ma come generiche transazioni dati.
Ciò semplifica la gestione del registro da parte di nodi perché non è richiesto loro di svolgere alcuna validazione della transazione prima di accettarla.
Ovviamente ciò comporta che il registro diviene utilizzabile per memorizzare ogni tipologia di informazione e con tempi di risposta estremamente rapidi
In Bitcoin la validazione delle transazioni economiche avviene in due fasi.
In IOTA la validazione avviene in modo analogo solo che non esistono blocchi.
Ogni transazione è connessa direttamente a due pregresse. Si crea così un grafo aciclico diretto chiamato Tangle che permette di verificare l’esistenza di conflitti in modo analogo alla catena di blocchi.
La validità di una transazione viene certificata dalla rete quando una nuova gli verrà collegata. Ciò implica che il nodo l’ha valutata corretta e non in conflitto con alcuna transazione pregressa. Se così non fosse anche la sua transazione sarebbe considerata non valida.
I due approcci sono quindi funzionalmente analoghi, con il vantaggio per IOTA che il Tangle garantisce a ogni nodo di operare in modo non concorrenziale la scelta di una transazione a cui collegare una propria.
In Bitcoin la conferma di una transazione si ottiene statisticamente dopo un certo numero di blocchi aggiunti alla catena. Statisticamente, perché ogni blocco potrebbe essere stato aggiunto arbitrariamente allungando la catena dietro un blocco invalido. Normalmente dopo che è stata aggiunta una sequenza di tre blocchi validi, è statisticamente improbabile che qualcuno tenti di allungare la catena ripartendo da un blocco pregresso annullando quindi quelli validi.
La scarsa probabilità deriva dall’elevato costo che avrebbe questa operazione. Ovviamente se un blocco dovesse contenere transazioni di valore elevato, allora il costo di un tentativo di doppia spesa potrebbe essere giustificato. Quindi il numero di blocchi che è opportuno attendere per considerare una transazione definitivamente confermata è funzione del valore della transazione che si sta accettando.
In IOTA la conferma avviene in modo analogo ma con un elemento in più: non essendoci una singola catena di blocchi è implicita la possibilità di creare arbitrariamente una sequenza di transazioni che approvano una transazione invalida.
Ricordo che la gestione delle transazioni economiche in IOTA non è a carico dei nodi in senso stretto. Di fatto si tratta di una applicazione dedicata, ospitata sugli stessi nodi, ma indipendente dalla gestione della rete e quindi non impattata dalla totalità delle transazioni che la rete gestisce in un dato istante.
Il processo di conferma delle transazioni economiche svolto dall’applicazione monetaria di IOTA prevede, semplificando, l’attesa di una eventuale transazione in conflitto. Dopo una certa quantità di transazioni che sono state collegate in cascata a una transazione valida, in assenza di nuove transazioni in conflitto, sarà considererà definitivamente confermata.
Ovviamente ogni transazione in conflitto ricevuta successivamente alla conferma non altera lo status della transazione confermata.
Se invece, prima di poter considerare confermata la transazione il nodo riceve una nuova transazione in conflitto, attiva una apposita procedura di gestione.
La procedura prevede l’emissione di un messaggio su un canale di comunicazione attivo con gli altri nodi in cui viene evidenziata l’anomalia.
Ogni nodo risponde con il proprio punto di vista su quale delle transazioni è quella valida.
Dopo un certo numero di iterazioni (numero casuale definito in modo distribuito) si forma un parere condiviso dalla maggioranza dei nodi della rete.
Questo processo è molto efficiente perché non coinvolge i nodi in modo competitivo come avviene per il mining di Bitcoin e non è legato alla credibilità dei nodi determinata dal capitale posseduto come avviene nei sistemi POS.
Inoltre non è attivato per ogni transazione ma solo quando necessario gestire un conflitto.
Questo modello organizzativo della rete, basato su una logica collaborativa al posto di una competitiva, rende IOTA una soluzione straordinaria, con il potenziale di rendere effettivamente adottabile un DLT pubblico per applicazioni di uso comune.
Per comprendere meglio le motivazioni che mi portano a sostenere che i limiti prestazionali di Bitcoin e delle reti derivate sino determinati dal fatto che siano specializzati nella gestione delle transazioni economiche e per entrare più in profondità delle caratteristiche della rete IOTA, vi suggerisco di leggere il libro “IOTA 2.0 - Superare il trilemma della blockchain”.