190214_Hyperledger - Lesson 01

Avviso – Queste lezioni sono il frutto del MOOC che ho svolto per conseguire il relativo certificato

PS: l’uso di tecnologie nuove porta con se nuovi termini. Al sopraggiungere di essi ho provato a tradurli in italiano per una migliore comprensione. Successivamente ho usato il termine in inglese per assecondarne l’introduzione nell’uso abitudinario.

Per la fine della Lezione 1, capiremo:

  • Hyperledger (chi & cosa)
  • Tecnologia dei Registri Distribuiti (DLT)
  • Blockchain vs. Distributed Ledger Technology
  • Blockchain (Crittografia, Transazioni, Blocchi, Timestamping, Albero di Merkle,)
  • Blockchain pubbliche: Bitcoin & Ethereum (Smart Contract)
  • Blockchain con Permesso vs Senza permesso
  • Algoritmi di Consenso
  • DApps e altre DLT

Che cos'è Hyperledger?

Hyperledger è il progetto “ombrello” open source che la Fondazione Linux ha creato e ospitato dal 2015. Mira a far avanzare e promuovere le tecnologie blockchain intersettoriali per garantire responsabilità, trasparenza e fiducia tra i partner commerciali. Di conseguenza, Hyperledger rende la rete aziendale e le transazioni più efficienti.

Cos'è la Linux Foundation?

Linux è il progetto di software open source più grande e diffuso al mondo nella storia. La Linux Foundation è la casa del creatore di Linux Linus Torvalds e del responsabile del mantenimento Greg Kroah-Hartman, e fornisce una casa neutrale in cui lo sviluppo del kernel Linux può essere protetto e sviluppato negli anni a venire. La Linux Foundation è l’organizzazione ombrello per molti progetti critici open source che alimentano le aziende di oggi, che coprono tutti i settori industriali:

Contesto

Stiamo assistendo alla transizione dall’informatica, dall’archiviazione e dall’elaborazione centralizzate a architetture e sistemi decentralizzati. Questi sistemi mirano a

"dare un controllo esplicito delle risorse digitali agli utenti finali e rimuovere la necessità di affidarsi a qualsiasi server e infrastruttura di terze parti"

La Tecnologia dei Registri Distribuiti (Distributed Ledger Technology) è una delle innovazioni chiave che rende possibile questa evoluzione.

Distributed Ledger Technology (DLT)

Un registro distribuito è un tipo di struttura di dati che risiede su più dispositivi informatici, generalmente distribuiti in luoghi diversi.

La Distributed Ledger Tecnology include tecnologie blockchain e contratti intelligenti. I registri distribuiti esistevano prima della blockchain Bitcoin la quale segna la convergenza di una serie di tecnologie, tra cui la marca temporale (timestamping) delle transazioni, le reti Peer-to-Peer (P2P), la crittografia e la potenza computazionale condivisa, insieme a un nuovo algoritmo di consenso.
In sintesi, la tecnologia dei registri distribuiti è generalmente composta da tre componenti di base:

  • Un modello di dati che acquisisce lo stato corrente del libro mastro (una serie di transazioni crittograficamente sicure con timestamp)

  • Un linguaggio di transazioni che modifica lo stato del registro [Smart Contracts / Chain code]

  • Un protocollo utilizzato per costruire il consenso tra i partecipanti intorno al quale le transazioni saranno accettate, e in quale ordine, dal libro mastro.

Blockchain è un libro mastro distribuito peer-to-peer forgiato per consenso, combinato con un sistema per contratti intelligenti e altre tecnologie assistive.

Differenza tra Distributed Ledger e Blockchain

La blockchain è una forma specifica o sottoinsieme di tecnologie di registri distribuita, che costruiscono una catena cronologica di blocchi, da cui il nome “block-chain”.

Crittografia

La crittografia svolge un ruolo chiave sia nella sicurezza, sia nell’immutabilità delle transazioni registrate sulla blockchain. La crittografia è lo studio delle tecniche utilizzate per consentire comunicazioni sicure tra le diverse parti e per garantire l’autenticità e l’immutabilità dei dati comunicati. Per le tecnologie blockchain, la crittografia viene utilizzata per dimostrare che una transazione è stata creata dalla persona giusta. Viene anche utilizzato per collegare le transazioni in un blocco in modo che sia a prova di manomissione, nonché per creare collegamenti tra blocchi, per formare una blockchain.

Transazioni

Il record (registrazione) di un evento, protetto crittograficamente con una firma digitale, verificato, ordinato e raggruppato in blocchi, forma le transazioni nella blockchain.

Blocco

Un blocco si riferisce ad un insieme di transazioni che sono raggruppate insieme e aggiunte alla catena allo stesso tempo. Nella blockchain di Bitcoin, i nodi minatori raggruppano transazioni non confermate e valide in un blocco. Ogni blocco contiene un determinato numero di transazioni. Nella rete Bitcoin, i minatori devono risolvere una sfida crittografica per proporre il prossimo blocco. Questo processo è noto come “Prova di Lavoro” (Proof of WorkPoW) e richiede una notevole potenza di calcolo.

Timestamping

Il timestamping (marca temporale) è un’altra caratteristica chiave della tecnologia blockchain. Ogni blocco ha il timestamp, con ogni nuovo blocco che si riferisce al blocco precedente. Combinato con gli hash crittografici, questa catena di blocchi con data e ora fornisce una registrazione immutabile di tutte le transazioni nella rete, dal primo blocco (o blocco genesi).

Un blocco comunemente consiste di quattro parti di metadati:

  • Il riferimento al blocco precedente

  • La prova del lavoro, nota anche come nonce

  • Il timestamp

  • La radice dell’Merkle tree (albero Merkle) per le transazioni incluse in questo blocco.

190214_Hyperledger - Lesson 01-04 - Merkle three

Il Merkle tree (albero Merkle), noto anche come albero di hash binario, è una struttura dati che viene utilizzata per archiviare gli hash dei singoli dati in una serie di dati di grandi dimensioni in modo da rendere efficiente la verifica del set di dati. È un meccanismo anti-manomissione per garantire che il set di dati di grandi dimensioni non sia stato modificato.

I Merkle tree sono utilizzati per riassumere tutte le transazioni in un blocco, producendo un’impronta digitale complessiva dell’intero insieme di transazioni, fornendo un processo molto efficiente per verificare se una transazione è inclusa in un blocco.

La Blockchain ci consente anche di creare una singola fonte istantanea di verità. In passato, abbiamo sempre avuto problemi nel cercare di capire cosa fosse realmente accaduto nel corso della giornata. Le banche riconciliano i loro libri (contabili), i sistemi di inventario definiscono le vendite e le consegne ... Con le blockchain registriamo le cose in tempo reale e ci forniscono una sorta di contabilità aggiornata dello stato del mondo.

Database centralizzati vs. Blockchain

Una blockchain è una struttura di dati di sola scrittura, in cui le nuove voci vengono aggiunte alla fine del registro. Ogni nuovo blocco viene aggiunto alla catena di blocchi collegando l’hash del blocco precedente. Non ci sono permessi di amministratore all’interno di una blockchain che consentono la modifica o l’eliminazione di dati.

In un database relazionale, i dati possono essere facilmente modificati o cancellati. In genere, esistono amministratori di database che possono apportare modifiche a qualsiasi parte dei dati e/o alla loro struttura. Inoltre, le blockchain sono state progettate per applicazioni decentralizzate, mentre i database relazionali, in generale, sono stati originariamente progettati per applicazioni centralizzate, in cui una singola entità controlla i dati.

190214_Hyperledger - Lesson 01-06

Tipi di Blockchain

  • Blockchain senza Permesso (come Bitcoin o Ethereum)

  • Blockchain con Permesso (come i diversi framework blockchain di Hyperledger).

Una blockchain senza permesso è anche conosciuta come blockchain pubblica, perché chiunque può unirsi alla rete.

Una blockchain con permesso, o blockchain privata, richiede una pre-verifica delle parti partecipanti all’interno della rete, e queste parti di solito sono conosciute l’una all’altra.

190214_Hyperledger - Lesson 01-07

Architettura [Client-Server vs. Peer-to-Peer]

Storicamente, la maggior parte delle applicazioni utilizza un server centrale (o più server). Affinché un utente/client possa inviare un messaggio a un altro utente/client nella rete, la richiesta deve essere inviata all’hub o a un server centrale, che quindi la indirizza al computer corretto.

Le reti peer-to-peer (P2P) sono state rese famose da Napster (e in seguito BitTorrent) e consistono in sistemi di computer che sono collegati direttamente l’un l’altro via Internet, senza un server centrale. I peer contribuiscono alla potenza di calcolo e all’archiviazione necessari per la manutenzione della rete. Le reti P2P sono generalmente considerate più sicure rispetto alle reti centralizzate, in quanto non hanno un singolo punto di attacco.

190214_Hyperledger - Lesson 01-08

L'immutabilità dei dati

L’immutabilità dei dati contenuti nella blockchain è forse la ragione più potente e convincente per implementare soluzioni basate su blockchain per una varietà di processi socio-economici che sono attualmente registrati su server centralizzati.

Questa immutabilità o funzionalità “immutabile nel tempo” rende la blockchain utile per la contabilità, le transazioni finanziarie, la gestione delle identità e la proprietà, la gestione e il trasferimento delle risorse, solo per citare alcuni esempi.

Una volta che una transazione viene scritta sulla blockchain, nessuno può cambiarla o, almeno, sarebbe estremamente difficile cambiarla.

Quando le persone dicono che le blockchain sono immutabili, non significa che i dati non possono essere modificati, significa che è estremamente difficile cambiarli senza collusione e, se ci provi, è estremamente facile rilevarne il tentativo.
190214_Hyperledger - Lesson 01-10

Smart Contracts

Nel lontano 1996, un uomo chiamato Nick Szabo coniò il termine ‘smart contract’. Gli smart contract (contratti intelligenti) sono semplicemente dei programmi per computer che eseguono azioni predefinite quando vengono soddisfatte determinate condizioni all’interno del sistema. I contratti intelligenti forniscono la lingua delle transazioni che consentono di modificare lo stato del registro. Possono facilitare lo scambio e il trasferimento di qualsiasi cosa abbia valore (ad esempio azioni, denaro, contenuto, proprietà).

190214_Hyperledger - Lesson 01-11

Bitcoin: una distribuzione blockchain molto popolare

Con l’invenzione del sistema di cassa peer-to-peer (P2P) noto come Bitcoin nel 2008, abbiamo un esempio di una rete di pagamento decentralizzata globale con un’infrastruttura distribuita e pubblica, che opera come un sistema “senza permesso” (o senza autorizzazione). È ipotizzabile che Bitcoin sia la prima “killer application” di computer decentralizzati. Si possono inviare e ricevere bitcoin in qualsiasi parte del mondo in un modo completamente P2P, senza dover passare attraverso una terza parte fidata, come una banca.

Bitcoin e Criptoeconomia

Bitcoin ha anche inaugurato un enorme interesse accademico e di ricerca nell’area della criptoeconomia e della sicurezza criptoeconomica.

La Criptoeconomia esplora l’intersezione di crittografia e incentivi economici. Mentre la crittografia viene utilizzata per garantire la sicurezza della rete a vari livelli e funzioni, gli incentivi economici incorporati forniti ai nodi partecipanti nella rete assicurano che, in qualsiasi momento, la maggior parte degli attori della rete operi in modo auspicabile.

Ethereum - Un'alternativa al Bitcoin

“Ethereum è una piattaforma di blockchain aperta che consente a chiunque di creare e utilizzare applicazioni decentralizzate basate sulla tecnologia blockchain”

La piattaforma blockchain di Ethereum facilita la funzionalità di scripting, o “smart contracts”, che vengono eseguiti attraverso i nodi della rete. Di conseguenza, a differenza della blockchain di Bitcoin, non traccia solo le transazioni, ma le programma anche. Tecnicamente, Ethereum è una macchina virtuale completa di Turing con la sua criptovaluta nativa chiamata “etere”. La piattaforma è stata proposta nel 2013 in un white paper dell’allora diciannovenne Vitalik Buterin.

Dapps (Decentralized Applications)

Le applicazioni di Ethereum non hanno un intermediario. Gli utenti interagiscono in modo P2P con altri utenti attraverso una varietà di interfacce – sociali, finanziarie, di gioco, ecc. Dal momento che le applicazioni sono sviluppate sulla rete decentralizzata basata sul consenso stesso, la censura da parte di terzi è praticamente impossibile. Gli attori malintenzionati non possono interferire segretamente con l’applicazione modificando il codice e compromettendo tutti gli utenti dell’applicazione (o nodi che interagiscono attivamente con esso). Queste Applicazioni Decentralizzate sono diventate famose come Dapps.

Poiché sono protetti crittograficamente, i Dapp vengono definiti “applicazioni sicure”. Alcune dei Dapp di alto profilo costruiti sulla piattaforma Ethereum includono:

La rete Ethereum è una rete distribuita pubblica globale, il che significa che non viene eseguita su server centrali in una determinata posizione geografica. La potenza di calcolo che gestisce la rete è fornita da nodi distribuiti in tutto il mondo. In altre parole, i Dapps hanno “zero downtime” – non vanno mai giù e, in generale, non possono essere disattivati.

Consenso

È un processo in cui i computer che fanno parte della rete sincronizzano i dati sulla blockchain. Il consenso nella rete si riferisce al processo per raggiungere un accordo tra i partecipanti alla rete sul corretto stato dei dati sul sistema. Il consenso porta tutti i nodi a condividere esattamente gli stessi dati. Un algoritmo di consenso, quindi, fa due cose: assicura che i dati sul registro siano gli stessi per tutti i nodi della rete e, a sua volta, impedisce agli attori malintenzionati di manipolare i dati. L’algoritmo di consenso varia con le diverse implementazioni di blockchain.

Esistono numerosi meccanismi o algoritmi di consenso.

  • Prova di lavoro (Proof of Work – PoW)

  • Prova di posta (Proof of Stake – PoS)

  • Prova del tempo trascorso (Proof of Elapsed Time – PoET)

  • Tolleranza semplificata all’errore bizantino (Simplified Byzantine Fault Tolerance – SBFT)

  • Tolleranza pratica all’errore bizantino (Practical Byzantine Fault Tolerance – PBFT)

Bitcoin utilizza Proof of Work, mentre Ethereum utilizza attualmente Proof of Work ma si sta muovendo verso Proof of Stake. L’Hyperledger Sawtooth utilizza la prova del tempo trascorso. Zilica usa PBFT.

Blockchain Con Permesso vs Blockchain Senza Permesso (Pubbliche): vantaggi

Nelle blockchain senza autorizzazione, come la blockchain di Bitcoin o la blockchain di Ethereum, chiunque può unirsi alla rete, così come scrivere e leggere le transazioni. Gli attori nel sistema non sono noti, il che significa che potrebbero esserci alcuni attori malintenzionati all’interno della rete.

Hyperledger riduce questi rischi per la sicurezza e garantisce che solo le parti che vogliono effettuare transazioni siano quelle che fanno parte della transazione e, anziché visualizzare il record delle transazioni sull’intera rete, rimangono visibili solo alle parti coinvolte. Hyperledger offre alle aziende tutte le funzionalità dell’architettura blockchain: riservatezza dei dati, condivisione delle informazioni, immutabilità, una serie completa di protocolli di sicurezza.

Altre DLT

Chain Core, creato da chain.com, è stato inizialmente progettato per istituzioni di servizi finanziari e per cose come titoli, obbligazioni e valute. La loro azienda ha forti legami con Visa, Citigroup e Nasdaq. “Il funzionamento della rete è regolato da un insieme designato di entità note come federazione”.

La piattaforma di registri distribuiti Corda è progettata per registrare, gestire e automatizzare gli accordi legali tra le aziende. È stato creato dalla società R3, che è un consorzio di oltre cento istituzioni finanziarie globali. “Corda raggiunge il consenso tra le imprese a livello di singole offerte, non a livello del sistema”.

Quorum è un’implementazione autorizzata di Ethereum, che supporta la privacy dei dati. Quorum raggiunge questa privacy dei dati consentendo la visibilità dei dati in base alle necessità di conoscenza mediante un algoritmo di consenso basato sul voto. È interessante notare che Quorum è stato creato e reso open source da JPMorgan. “La piattaforma è progettata per supportare sia la privacy a livello di transazione che la trasparenza a livello di rete”.

IOTA: “È la prima criptovaluta che fornisce l’intero ecosistema basato su blockchain senza blocchi” per consentire transazioni machine-to-machine (M2M). IOTA, tuttavia, è più di una criptovaluta. Essenzialmente, la piattaforma comporta una generalizzazione del protocollo blockchain (la tecnologia chiamata Tangle) che si trova sul back-end della piattaforma IOTA. Invece di pagare i minatori per convalidare le transazioni, l’architettura della rete coinvolge la base dei peer per la convalida. Per analogia si può pensare ad un insegnante che classifica i compiti degli studenti: gli studenti sono i clienti/utenti nel protocollo Bitcoin e l’insegnante è il minatore/validatore. La tecnologia Tangle chiede agli studenti (utenti) di valutare i compiti a casa, rendendo ridondante la necessità di un insegnante (validatore esterno) ed evitando le spese relative al lavoro del docente / validatore. Ciò consente alla piattaforma di essere completamente gratuita, senza affrontare le sfide di scalabilità intrinseche alla prima generazione di blockchain. Inoltre, l’uso della piattaforma con dispositivi connessi o Internet of Things “consente alle aziende di esplorare nuovi modelli business-to-business rendendo ogni risorsa tecnologica un potenziale servizio da negoziare in un mercato aperto in tempo reale, senza commissioni”.

Algoritmi di Consenso

Consenso Definizione Analogia Implementazione Criticità
Proof of Work (PoW) È il risultato di un processo di mining di successo e, sebbene la dimostrazione sia difficile da creare, esso è facile da verificare. Indovinare una combinazione di una serratura è una prova per una sfida. È molto difficile da produrre questo dato che dovrà essere indovinando molte combinazioni diverse; ma una volta prodotto, è facile da convalidare. Basta inserire la combinazione e vedere se il lucchetto si apre. Bitcoin Richiede l’uso di un’enorme quantità di energia. Ha una latenza elevata di convalida della transazione. La risultanza della concentrazione del potere minerario si trovano nei paesi in cui l’elettricità è economica. In termini di sicurezza della rete, è suscettibile al “attacco del 51%” che si riferisce a un attacco su una blockchain da parte di un gruppo di minatori che controllano più del 50% della potenza di calcolo della rete.
Proof of Stake (PoS) I nodi sono noti come “validatori” e, anziché estrarre la blockchain, convalidano la transazione per guadagnare una commissione di transazione. Non ci sono attività minerarie da fare, poiché tutte le monete risalgono al primo giorno. In parole povere, i nodi vengono selezionati casualmente per convalidare i blocchi e la probabilità di questa selezione casuale dipende dalla quantità di partecipazione detenuta. Quindi, se il nodo X possiede 2 monete e il nodo Y possiede 1 moneta, il nodo X ha il doppio di probabilità di essere chiamato a convalidare un blocco di transazioni. Ethereum L’algoritmo del PoS consente di risparmiare costose risorse computazionali che vengono spese nell’ambito di un regime di consenso POW.
Prova del tempo trascorso (PoET) “Il validatore con il tempo di attesa più breve per un particolare blocco di transazione viene eletto leader” Invece di competere per risolvere la sfida crittografica e minare il blocco successivo, come nel blockchain Bitcoin, l’algoritmo di consenso PoET è un ibrido di una lotteria casuale e di primo arrivato, primo servito. In Poet, ogni validatore riceve un tempo di attesa casuale. Implementazione Sawtooth di Hyperledger
Simplified Fault Tolerance (SBFT) L’idea di base riguarda un singolo validatore che raggruppa le transazioni proposte e forma un nuovo blocco. Nota che, a differenza della blockchain Bitcoin, il validatore è una parte conosciuta, data la natura autorizzata del libro mastro. Il consenso è raggiunto come risultato di un numero minimo di altri nodi nella rete che ratificano il nuovo blocco. Per tollerare un errore bizantino, il numero di nodi che devono raggiungere il consenso è 2f + 1 in un sistema contenente 3f + 1 nodi, dove f è il numero di errori nel sistema. Ad esempio, se abbiamo 7 nodi nel sistema, 5 di questi nodi devono essere d’accordo se 2 dei nodi agiscono in modo errato. ByzCoin
Prova di autorità (PoA) Può essere utilizzato per i registri autorizzati. Utilizza un insieme di “autorità”, che sono i nodi designati che sono autorizzati a creare nuovi blocchi e proteggere il registro. I registri che utilizzano PoA richiedono l’approvazione da parte della maggioranza delle autorità per creare un blocco.

Titolo

PoW PoS PoET BFT and variants Federated BFT
Tipo di blockchain Permissionless Both Both Permissioned Permissionless
Finalità della transazione Probabilistic Probabilistic Probabilistic Immediate Immediate
Tasso di transazione Low High Medium High High
È necessario il token? Yes Yes No No No
Costo della partecipazione Yes Yes No No No
Scalabilità della rete peer High High High low High
Modello di fiducia Untrusted Untrusted Untrusted Semi-trusted Semi-trusted
Tolleranza avversaria <=25% Depends on specific algorithm used Unknown <=33% <=33%

Definizioni dei parametri utilizzati

Tipo di blockchain
Indica il tipo di piattaforma blockchain, autorizzata o non autorizzata, in cui è possibile utilizzare il modello di consenso.

Finalità della transazione
Indica se la transazione una volta aggiunta a un blocco nella blockchain è considerata definitiva.

Tasso di transazione
È più alto con piattaforme in grado di confermare immediatamente le transazioni e raggiungere rapidamente il consenso.

È necessario il token?
Un token crittografico è intrinsecamente richiesto per i modelli PoW e PoS poiché la loro progettazione si basa sull’esistenza del token.

Costo della partecipazione
PoW e PoS hanno un costo intrinseco associato alla partecipazione al consenso. PoW richiede il costo dell’energia, che è una risorsa esterna al protocollo di consenso, mentre PoS richiede ai nodi di acquistare della criptovaluta iniziale per generare un deposito di sicurezza per dichiarare interesse e legame con la piattaforma.

Scalabilità della rete peer
La scalabilità dei modelli di consenso è la sua capacità di raggiungere un consenso quando il numero di nodi di peering è in costante aumento. Tutti i modelli riassunti sopra, tranne BFT e varianti, hanno un’elevata scalabilità.

Modello di fiducia
Il modello di fiducia determina se i nodi che partecipano al consenso devono essere conosciuti o ritenuti affidabili. In PoW, PoS e PoET, i nodi possono essere non affidabili poiché il meccanismo per raggiungere il consenso si basa su altri mezzi, come il lavoro computazionale o i depositi di sicurezza.

Tolleranza avversaria
La frazione della rete che può essere compromessa senza che il consenso venga influenzato. Ogni modello di consenso ha una certa soglia di tolleranza avversaria.

Riepilogo
Gli algoritmi di consenso sono usati per guidare il consenso distribuito senza un’autorità centralizzata o un intervento umano.