Consenso nei sistemi Blockchain. In breve.

Le tecnologie blockchain sono in cima agli elenchi delle tendenze calde del 2017. Molte aziende supportano già i loro prodotti con tecnologie blockchain. I concorrenti utilizzano approcci diversi alle tecnologie blockchain, enfatizzando diversi aspetti e presentandoli come funzionalità per i propri clienti. In questo post fornirò una panoramica del ruolo di uno di quegli aspetti particolari delle tecnologie blockchain: il "consenso".

Le blockchain sono diverse e possono essere affrontate da una varietà di prospettive. Per il bene di questo articolo, vorrei definire una blockchain come un database pubblico e decentralizzato, che mantiene i registri pubblici in un modo solo appendice. Inoltre, una volta aggiunto nel database (la blockchain) un record non può essere modificato ed è molto difficile falsificare le voci. Quest'ultima caratteristica si chiama persistenza. Quando una voce nel database (la blockchain) deve essere aggiornata, è necessario aggiungere un nuovo record alle informazioni esistenti. Infine, ciascuno dei record può essere visualizzato da qualsiasi membro del pubblico, consentendo a qualsiasi persona di verificare individualmente l'autenticità di ogni transazione registrata per ogni singola voce nel database (la blockchain). Questa trasparenza significa che le blockchain sono verificabili.

CC-BY-3 Theymos dalla vettorializzazione della wiki di Bitcoin: la catena principale (nera) è costituita dalla serie più lunga di blocchi dal primo blocco (genesi) (verde) al blocco corrente. I blocchi orfani (viola) esistono al di fuori della catena principale.

Ma perché preoccuparsi delle blockchain sui database tradizionali? Le blockchain diventano immediatamente allettanti non appena un database deve essere decentralizzato. Un'organizzazione che cerca di evitare di porre troppa enfasi su un singolo potenziale punto di errore e di creare un sistema generalmente più robusto per le proprie informazioni potrebbe trovare un database blockchain più attraente di un tradizionale. Un database distribuito non può essere violato, manipolato o in altro modo interrotto come può essere un database basato su un singolo operatore.
Inoltre, un database centralizzato tradizionale richiede un sistema di accesso controllato dall'utente. Vale a dire, richiede un sistema gestito direttamente da individui noti e affidabili (che si tratti di una persona nota, di un'organizzazione, di un computer o di qualsiasi altra unità operativa familiare). Una blockchain, d'altra parte, è gestita da parti sconosciute e non attendibili (vale a dire, non puoi sapere se si tratta di una singola persona e organizzazione, un computer che funziona automaticamente o qualsiasi altra cosa - figuriamoci conoscerli abbastanza bene da fidarsi delle loro decisioni e azioni implicitamente).

La mancanza di fiducia insita nel sistema blockchain è particolarmente degna di nota per il nostro argomento di "consenso". Poiché qualsiasi entità, individuo o parte può inviare informazioni alla blockchain (vale a dire, provare ad aggiungere informazioni al database), è necessario che gli operatori distribuiti della blockchain valutino e concordino tutte le aggiunte prima che siano permanentemente incorporato nella blockchain (il database). Poiché non possiamo essere sicuri dell'affidabilità dell'autore, è fondamentale che tutte le nuove informazioni debbano essere riviste e confermate prima di essere accettate. Questa recensione porta al "consenso" che sto esaminando qui.

Esistono quattro metodi principali per trovare il consenso in una blockchain (e tutti i sistemi distribuiti, per quella materia): l'algoritmo bizantino pratico di tolleranza agli errori (PBFT), l'algoritmo di proof of work (PoW), l'algoritmo di proof of stake (PoS) e l'algoritmo proof-of-stake delegato (DPoS).

Il Practical Byzantine Fault Tolerance Algorithm (PBFT) è stato progettato come una soluzione a un problema presentato sotto forma di un'allegoria (fonte):

Immagina che diverse divisioni dell'esercito bizantino siano accampate fuori da una città nemica, ciascuna divisione comandata dal proprio generale. I generali possono comunicare tra loro solo tramite messenger. Dopo aver osservato il nemico, devono decidere un piano d'azione comune. Tuttavia, alcuni dei generali possono essere traditori, cercando di impedire ai generali leali di raggiungere un accordo. I generali devono decidere quando attaccare la città, ma hanno bisogno di una forte maggioranza del loro esercito per attaccare allo stesso tempo. I generali devono avere un algoritmo per garantire che (a) tutti i generali leali decidano sullo stesso piano d'azione, e (b) un piccolo numero di traditori non può far sì che i generali leali adottino un piano negativo. I generali leali faranno tutti ciò che l'algoritmo dice che dovrebbero, ma i traditori possono fare tutto ciò che desiderano. L'algoritmo deve garantire la condizione (a) indipendentemente da ciò che fanno i traditori. I generali leali non dovrebbero solo raggiungere un accordo, ma dovrebbero concordare un piano ragionevole.

Per chiarire l'allegoria per i nostri scopi: i "generali" nella storia sono le parti che partecipano alla rete distribuita che gestisce la blockchain (database) in questione. I messenger che inviano avanti e indietro sono i mezzi di comunicazione attraverso la rete su cui è in esecuzione la blockchain. L'obiettivo collettivo dei "generali leali" è decidere se accettare o meno una parte delle informazioni inviate alla blockchain (database) come valide. Un'informazione valida sarebbe, nella nostra allegoria, un'opportunità corretta per decidere a favore dell'attacco. I generali leali, da parte loro, sono fedeli partecipanti alla blockchain, che sono interessati a garantire l'integrità della blockchain (database) e quindi a garantire che vengano accettate solo informazioni corrette. I generali trecerosi, d'altra parte, sarebbero tutte le parti che cercano di falsificare le informazioni sulla blockchain (il database). I loro potenziali motivi sono una miriade: potrebbe essere un individuo che cerca di spendere un BitCoin che in realtà non possiede o un'altra persona che vuole uscire dagli obblighi contrattuali come indicato in un contratto intelligente che ha già firmato e presentato.

Diversi scienziati informatici hanno delineato una serie di potenziali soluzioni al problema dei generali bizantini dall'allegoria. Il pratico algoritmo bizantino di tolleranza agli errori (PBFT), utilizzato per stabilire il consenso nei sistemi blockchain, è solo una di quelle potenziali soluzioni. Tre esempi di blockchain che si basano sul PBFT per i vantaggi sono Hyperledger, Stellar e Ripple. Molto approssimativamente e senza spiegare l'intero algoritmo (che richiederebbe un documento di ricerca a più pagine), ciò che fa il PBFT è il seguente: Ogni "generale" mantiene uno stato interno (informazioni o stato specifici in corso). Quando un "generale" riceve un messaggio, lo utilizza in combinazione con il proprio stato interno per eseguire un calcolo o un'operazione. Questo calcolo a sua volta dice a quell'individuo "generale" cosa pensare del messaggio in questione. Quindi, dopo aver preso la sua decisione individuale sul nuovo messaggio, quel "generale" condivide quella decisione con tutti gli altri "generali" nel sistema. Una decisione di consenso è determinata in base alle decisioni totali presentate da tutti i generali.

Tra le altre considerazioni, questo metodo per stabilire il consenso richiede meno sforzi di altri metodi. Tuttavia, viene a scapito dell'anonimato sul sistema.

Il metodo più noto per raggiungere il consenso su una blockchain è lo schema di prova del lavoro (PoW), utilizzato da Bitcoin. A differenza della soluzione nel PBFT, PoW non richiede a tutte le parti della rete (tutti i nodi) di presentare le proprie conclusioni individuali per raggiungere un consenso. PiW, PoW è un sistema che utilizza una "funzione hash" per creare le condizioni alle quali un singolo partecipante è autorizzato ad annunciare le proprie conclusioni sulle informazioni inviate e tali conclusioni possono quindi essere verificate in modo indipendente da tutti gli altri partecipanti al sistema. Le false conclusioni sono evitate dai parametri della funzione hash, che assicurano che le informazioni false non vengano calcolate in modo accettabile. (Per ulteriori informazioni, seguimi qui o iscriviti in basso.) Nello specifico del sistema Bitcoin, il partecipante che ha verificato pubblicamente le informazioni per conto della rete è a sua volta premiato per la sua partecipazione (che è costosa in termini reali di costi energetici e risorse informatiche) con Bitcoin di nuova creazione ("estratti"). Pertanto, questo processo di ricerca di "hash" validi (soluzioni alla "funzione hash" creata dall'input del messaggio) è noto come "mining". L'incentivazione della partecipazione alla rete garantisce un'ampia partecipazione, che a sua volta garantisce una rete più solida e una blockchain (database) più sicura.

Questo schema PoW in stile Bitcoin consente una partecipazione ampia e semplice, che a sua volta garantisce una maggiore stabilità della rete con requisiti minimi per ciascun partecipante, consentendo ai partecipanti di rimanere ad esempio anonimi.

Una terza variazione sullo stabilire il consenso sui sistemi blockchain è estremamente simile al sistema PoW di cui sopra, tuttavia la partecipazione al processo di costruzione del consenso è limitata alle parti identificate come aventi una partecipazione legittima nella blockchain (ad esempio individui che possiedono bitcoin o entità che hanno smart contratti salvati nello stesso database blockchain). Questa terza variante, chiamata algoritmi di proof of stake (PoS) sostituisce il calcolo della funzione hash con una semplice firma digitale che dimostra la proprietà della puntata. La rete seleziona un individuo per approvare nuovi messaggi (vale a dire, confermare la validità delle nuove informazioni inviate al database) in base alla loro quota proporzionale nella rete. In altre parole, invece di qualsiasi individuo che tenti di calcolare un valore per essere scelto per stabilire un punto di consenso, la rete stessa organizza una lotteria per decidere chi annuncerà i risultati e i partecipanti al sistema vengono automaticamente e automaticamente inseriti in quella lotteria in proporzione diretta alla loro partecipazione totale nella rete. Come nel sistema PoW gestito da Bitcoin, anche il sistema PoS gestito da organizzazioni come Peercoin fornisce un incentivo alla partecipazione, che garantisce la più ampia partecipazione possibile alla rete e quindi la sicurezza della rete più solida possibile. Nel sistema Peercoin, la parte scelta viene premiata con un nuovo Peercoin in un processo chiamato "conio" (piuttosto che il "mining" di BitCoin).

Questo sistema, tuttavia, premiando coloro che sono già profondamente coinvolti nella rete crea intrinsecamente un sistema sempre più centralizzato. Questo è nemico di una rete veramente solida. Pertanto, i sostenitori dei sistemi PoS hanno presentato una serie di varie modifiche per aiutare a garantire che la base delle loro reti rimanga il più ampia (e quindi sicura) possibile.

Il metodo finale per stabilire il consenso è forse il più centralizzato, tuttavia contrasta la grande potenza degli stakeholder che i sistemi PoS comportano e consente al sistema di funzionare molto più rapidamente. Questo metodo, chiamato sistema di proof of stake delegato (DPoS) funziona secondo le stesse linee del sistema PoS, tranne per il fatto che gli individui scelgono un'entità generale per rappresentare la loro parte di stake nel sistema. Quindi immagina, ogni individuo decide se l'entità 1, 2 o 3 (questi potrebbero essere, ad esempio, server di computer e sono chiamati "nodi delegati" all'interno di un sistema DPoS) "rappresenteranno" la propria partecipazione individuale nel sistema. Ciò consente alle persone con quote più piccole di unirsi per ingrandire la loro rappresentazione, creando così un meccanismo per aiutare a bilanciare il potere dei grandi portatori di interessi. Ciò comporta un costo, tuttavia una maggiore centralizzazione della rete. Bitshares è una società che impiega un sistema DPoS.

Mentre questi quattro sistemi per stabilire il consenso sono attualmente i più dominanti, il campo è ancora ampiamente aperto all'innovazione. Mentre i sistemi blockchain continuano a guadagnare popolarità, continueranno anche a crescere in scala e complessità. Quale di questi quattro sistemi di costruzione del consenso (se presente) è meglio attrezzato per gestire questa continua espansione resta da vedere. Attualmente, le aziende scelgono un sistema per il loro prodotto che soddisfi al meglio le loro esigenze (o dei loro clienti) in termini di velocità, efficienza e sicurezza.

È importante notare che questi sistemi differiscono non solo nei dettagli della formazione delle rispettive comunità di costruzione del consenso, ma soprattutto differiscono nel modo in cui gestiscono i potenziali attacchi. Questa è, infatti, una delle caratteristiche distintive più chiare tra i quattro sistemi di costruzione del consenso: la dimensione potenziale di un attacco al sistema che potrebbe essere facilmente gestito. Per tornare all'analogia generale bizantina con cui ho aperto, vale a dire, ciascuno di questi quattro sistemi può far fronte a una diversa proporzione di "generali insidiosi" prima che inizi a fare scelte sbagliate.

I sistemi che non usano la prova di lavoro sono spesso chiamati sistemi di mining virtuali perché non hanno attività di mining. Al momento non è noto se la necessità o meno di risolvere un problema di lavoro abbia un reale vantaggio in termini di sicurezza rispetto ai sistemi di mining virtuali.

Se ti è piaciuto l'articolo, seguimi e raccomandalo. Se tu o la tua organizzazione avete bisogno di supporto per mettere la testa nel gioco blockchain, date un'occhiata ai nostri webinar e servizi di consulenza presso alatus sigma consulting.
 Se vuoi saperne di più sulla blockchain e le tecnologie correlate, considera di compilare il mio sondaggio e iscriviti alla mia mailing list in basso. Fammi sapere su quali argomenti vuoi saperne di più - a livello non tecnico, digeribile.