190214_Hyperledger - Lesson 02

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 2, 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

  • Technical Requirements (for Linux, MacOs, Windows)

Riguardo a Hyperledger

Hyperledger è uno sforzo open source creato per far avanzare le tecnologie blockchain ne mondo delle industrie.

È una collaborazione globale ospitata da The Linux Foundation che comprende varie industrie e organizzazioni in tutto il mondo.

Si può pensare a Hyperledger come a un sistema operativo per i mercati, le reti di condivisione dati, le micro valute e le comunità digitali decentralizzate.

Un obiettivo condiviso è quello di ridurre significativamente i costi e la complessità del fare affari.

Le blockchain di Hyperledger sono blockchain autorizzate, il che significa che le parti che si uniscono alla rete sono generalmente autenticate tramite un modulo di identità.

In sostanza, le blockchain Hyperledger sono progettate specificamente per essere soluzioni aziendali.

Se si osservano blockchain senza autorizzazione, come la blockchain di Bitcoin o la blockchain di Ethereum, chiunque può unirsi alla rete, il che significa che ci sarebbero invariabilmente degli 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.

Piuttosto che visualizzare il record delle transazioni sull’intera rete, essi rimangono all’interno delle 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.

190214_Hyperledger - Lesson 02-02 - Umbrella

L’Origine

Il Progetto Hyperledger è iniziato quando un gruppo di aziende che stavano iniziando a prestare attenzione allo spazio della criptovaluta Bitcoin ha contattato The Linux Foundation proponendo di fare un progetto insieme”.

La Linux Foundation, dal 2003, è stata al centro dell’ecosistema Linux, riunendo aziende e sviluppatori per lo sviluppo di una piattaforma tecnologica comune.

Quindi, quando aziende come IBM, o che non hanno mai lavorato con The Linux Foundation, come JPMorgan, o startup crypto hanno iniziato a parlare tra loro, e si sono chiesti quale fosse il posto giusto si sono rivolti a The Linux Foundation.

Col tempo è emersa chiara la sensazione che ciò che era interessante di questo nuovo spazio non fossero tanto le criptovalute e il tipo di mentalità del “make-money-fast”, ma la sottostante piattaforma tecnologica del registro distribuito e dei contratti intelligenti.

Nel dicembre del 2015, la Linux Foundation, in collaborazione con quelle società, ed altre 30, annunciò il lancio del Progetto Hyperledger. Che ora chiamiamo semplicemente Hyperledger.

Dopo solo due mesi, nel febbraio del 2016, è avvenuto il primo “drop” di codice, che significa la prima versione del software, ed è accaduto con il codice di base di Fabric –costruito inizialmente in IBM. Poco dopo è arrivato Sawtooth Lake.

Confronto di Hyperledger con Bitcoin ed Ethereum

La tabella seguente esplora le differenze tra i registri distribuiti di Hyperledger e le blockchain senza autorizzazione di Bitcoin ed Ethereum. Nel considerare soluzioni blockchain che soddisfino requisiti aziendali, è importante prestare attenzione a tutti questi elementi e valutare quelli più importanti per il tuo caso d’uso.

BitcoinEthereumHyperledger Frameworks
Cryptocurrency based
Basato su criptovalute
YesYesNo
Permissioned
Con Permesso
NoNoYes (in general) *
Pseudo-anonymous
Pseudo-anonimo
YesNoNo
Auditable
Verificabile
YesYesYes
Immutable ledger
Registro immutabile
YesYesYes
Modularity
Modularità
NoNoYes
Smart contracts
Smart contracts
NoYesYes
Consensus protocol
Protocollo di Consenso
PoWPoWVarious **

* Sawtooth può essere configurato per essere senza autorizzazione

** I Protocolli di Consenso chiave in Hyperledger sono:

  • Apache Kafka in Hyperledger Fabric;

  • PoET in Hyperledger Sawtooth;

  • RBFT in Hyperledger Indy;

  • Tendermint in Hyperledger Burrow;

  • Yet Another Consensus (YAC) in Hyperledger Iroha.

Per ulteriori dettagli, consultare l’architettura Hyperledger Architecture, volume 1.

Obiettivi di Hyperledger

Hyperledger ha assunto un ruolo di leadership per sviluppare standard cross-industry e fornire uno spazio neutrale per la collaborazione nel software. L’industria dei servizi finanziari, in particolare, sta assistendo a un livello senza precedenti di collaborazione tra istituzioni tradizionalmente concorrenti.

L’avvento di una nuova tecnologia fondamentale o infrastrutturale come la blockchain – proprio come Internet – richiede la collaborazione di vari attori per realizzare tutti i benefici della tecnologia. A meno che tutti gli attori non utilizzino un determinato standard, il ritmo della diffusione tecnologica continuerà a essere lento.

L’adozione tecnologica è caratterizzata da effetti di rete, in cui i costi diminuiscono con l’aumento dell’uso di una determinata tecnologia. Poiché il passaggio alla tecnologia dei libri contabili distribuiti comporta costi significativi, il software open source, le comunità e gli ecosistemi che si sviluppano attorno a questi hanno un ruolo significativo da svolgere.

Blockchain for Business

Il modello di blockchain basato sulla criptovaluta, reso popolare da blockchain pubblici come Bitcoin ed Ethereum, attualmente non soddisfa una serie di requisiti che molti tipi di organizzazioni dovrebbero soddisfare per essere conformi quando utilizzano le tecnologie blockchain e i registri distribuiti – per esempio, nelle aree dei servizi finanziari, della sanità e del governo.

Hyperledger è una piattaforma che sta sviluppando framework di registri distribuiti autorizzati specificatamente progettati per le imprese, compresi quelli in settori con requisiti di conformità elevati. I casi d’uso aziendali richiedono capacità quali scalabilità e trasmissione, moduli di identità integrati o interoperabili per le parti coinvolte in una transazione o una rete, o persino l’accesso ai regolatori che possono accedere a tutti i dati nel registro in sola lettura per garantirne la conformità.

Quest’ultimo aspetto è particolarmente importante perché, indipendentemente dall’innovazione, si deve operare all’interno dell’attuale quadro normativo e rispettare tutte le nuove regole introdotte specificamente per le tecnologie blockchain.

L’impresa è al centro di questo progetto.

Componenti dei framework di Hyperledger

I framework delle blockchain aziendali Hyperledger vengono utilizzati per creare blockchain aziendali per un consorzio di organizzazioni.
I framework di Hyperledger includono:

  • Un Registro distribuito “append-only” (sola aggiunta)

  • Un algoritmo di consenso per accettare i cambiamenti nel registro

  • La privacy delle transazioni tramite accesso autorizzato

  • I Contratti intelligenti per elaborare le richieste di transazione.

190214_Hyperledger - Lesson 02-04 - Components_of_blockchain

Esploriamo ora i cinque framework di Hyperledger
(a Dicembre 2018)

190214_Hyperledger - Lesson 02-05 - Hyperledger_Iroha

È una piattaforma di blockchain distribuita modulare facile da usare con un algoritmo di consenso e un ordinamento del servizio propri, un ricco modello di autorizzazione basato sui ruoli e supporto multi-firma.

Al suo sviluppo hanno contribuito Soramitsu, Hitachi, NTT Data e Colu. Hyperledger Iroha enfatizza lo sviluppo di applicazioni mobili con librerie client per Android e iOS, rendendolo distinto dagli altri framework di Hyperledger. Ispirato da Hyperledger Fabric, Hyperroger Iroha cerca di integrare Hyperledger Fabric e Hyperledger Sawtooth, fornendo un ambiente di sviluppo per gli sviluppatori C++ per contribuire a Hyperledger.

In conclusione, Hyperledger Iroha presenta un design C++ moderno, basato su domini, con costruzione semplice e algoritmo di consenso YAC.

PER SAPERNE DI PIU’ SU IROHA

190214_Hyperledger - Lesson 02-06 - Hyperledger_Sawtooth

È una piattaforma modulare per la creazione, la distribuzione e l’esecuzione di registri distribuiti.

Hyperledger Sawtooth, con il contributo di Intel, è un framework blockchain che utilizza una piattaforma modulare per la creazione, la distribuzione e l’esecuzione di registri distribuiti che utilizza vari algoritmi di consenso basati sulla dimensione della rete. Include differenti algoritmi di consenso tra cui quello della Prova di Tempo Trascorso (Proof of Elapsed Time – PoET), che fornisce la scalabilità della blockchain di Bitcoin senza l’elevato consumo di energia. PoET consente una rete altamente scalabile di nodi di validazione. Hyperledger Sawtooth è progettato per la versatilità, con supporto sia per distribuzioni con permesso che senza permesso.

PER SAPERNE DI PIU’ SU SAWTOOTH

190214_Hyperledger - Lesson 02-07 - Hyperledger_Fabric

Destinato come base per lo sviluppo di applicazioni o soluzioni con un’architettura modulare, Hyperledger Fabric consente ai componenti, come i servizi di consenso e di appartenenza, di essere plug-and-play.

Hyperledger Fabric è rivoluzionario nel consentire alle entità di condurre transazioni riservate senza passare informazioni attraverso un’autorità centrale. Ciò viene realizzato attraverso diversi canali che funzionano all’interno della rete, così come la divisione del lavoro che caratterizza i diversi nodi della rete. Infine, è importante ricordare che, a differenza di Bitcoin, che è una catena pubblica, Hyperledger Fabric supporta le distribuzioni con permesso.

PER SAPERNE DI PIU’ SU FABRIC

Se si dispone di una grande rete blockchain e si desidera condividere i dati solo con determinate parti, è possibile creare un canale privato con solo quei partecipanti. È la cosa più distintiva di Fabric in questo momento.
Brian Behlendorf
direttore esecutivo di Hyperledger, The Linux Foundation
190214_Hyperledger - Lesson 02-08 - Hyperledger_Burrow

È una macchina di contratti intelligenti con permesso. Il primo del suo genere, rilasciato nel dicembre 2014, Burrow fornisce una blockchain modulabile per cliente con un interprete di contratti intelligenti con permesso, in parte costruito secondo le specifiche della Ethereum Virtual Machine (EVM).

È l’unica implementazione EVM con licenza Apache disponibile.
Di seguito sono riportati i principali componenti di Burrow:

  • Il Gateway fornisce le interfacce per l’integrazione dei sistemi e le interfacce utente

  • Il Motore di applicazione dello Smart contract facilita l’integrazione di una complessa logica aziendale

  • Il Motore di Consenso ha il duplice scopo di:

    1. mantenere dello stack di rete tra i nodi;

    2. transare gli ordini

  • L’Interfaccia di Applicazione Blockchain (ABCI) fornisce le specifiche di interfaccia per il motore di consenso e il motore di applicazione del contratto intelligente da connettere.

PER SAPERNE DI PIU’ SU BURROW

190214_Hyperledger - Lesson 02-09 - Hyperledger_Indy

È un registro distribuito, creato appositamente per l’identità decentralizzata. Fornisce strumenti, librerie e componenti riutilizzabili per la creazione e l’utilizzo di identità digitali indipendenti basate su blockchain o altri registri distribuiti per l’interoperabilità.

Con il contribuito dalla Sovrin Foundation, Hyperledger Indy consente alle persone di gestire e controllare le proprie identità digitali. Anziché disporre di grandi quantità di dati personali delle persone, Hyperledger Indy consente alle aziende di archiviare i puntatori all’identità. Una volta che la società verifica l’identità dell’altra parte, la butta via.

Secondo Brian Behlendorf,

“(…) l’identità è una risorsa tossica che potrebbe presentare una responsabilità per le organizzazioni”.”

Infatti, dal 2013, oltre 9 miliardi di record di dati sono stati persi o rubati. Ciò che colpisce è che, di questi, solo il 4% è stato crittografato e, quindi, rendendoli inutilizzabili in caso di furto (chiamato anche “falle sicure”).

Uno dei principi chiave di Hyperledger Indy è il suo approccio “Privacy by Design”. Data la natura immutabile della DLT, è tanto più importante che le identità digitali siano gestite con la massima cura, mantenendo i valori umani in primo piano e al centro.

PER SAPERNE DI PIU’ SU INDY

Passiamo quindi ai 6 tool di Hyperledger

(A DICEMBRE 2018) – AVVISO: I TOOL SONO ANCORA IN CONDIZIONE DI “Incubation”

190214_Hyperledger - Lesson 02-10 - Hyperledger_Caliper

Hyperledger Caliper è uno strumento di benchmark blockchain e uno dei progetti Hyperledger ospitati da The Linux Foundation. Hyperledger Caliper consente agli utenti di misurare le prestazioni di una specifica implementazione blockchain con una serie di casi d’uso predefiniti. Hyperledger Caliper produrrà report contenenti un numero di indicatori di prestazioni, come TPS (Transactions Per Second), latenza delle transazioni, utilizzo delle risorse ecc.</h4<

L’intento è che i risultati di Caliper vengano utilizzati da altri progetti Hyperledger mentre costruiscono i loro framework e come un riferimento nel supportare la scelta di un’implementazione blockchain adatta alle esigenze specifiche dell’utente. Hyperledger Caliper è stato inizialmente fornito da sviluppatori di Huawei, Hyperchain, Oracle, Bitwise, Soramitsu, IBM e l’Università di Tecnologia ed Economia di Budapest.

PER SAPERNE DI PIU’ SU CALIPER

190214_Hyperledger - Lesson 02-11 - Hyperledger_Cello

Hyperledger Cello mira a portare il modello di distribuzione “as-a-service” on-demand all’ecosistema blockchain per ridurre lo sforzo richiesto per creare, gestire e terminare blockchain. Fornisce un servizio di catena multi-tenant in modo efficiente e automatico su varie infrastrutture, ad es. Baremetal, macchina virtuale e più piattaforme container. Hyperloger Cello ha avuto un contribuito iniziale da IBM, con sponsor di Soramitsu, Huawei e Intel.

PER SAPERNE DI PIU’ SU CELLO

190214_Hyperledger - Lesson 02-12 - Hyperledger_Composer

È un insieme di strumenti di collaborazione per la creazione di reti aziendali blockchain che rendono semplice e veloce per gli imprenditori e gli sviluppatori creare contratti intelligenti e applicazioni blockchain per risolvere i problemi aziendali. Costruito con JavaScript, sfruttando strumenti moderni tra cui node.js, npm, CLI e editor popolari, Composer offre astrazioni incentrate sul business e app di esempio con processi di devops facili da testare per creare solide soluzioni blockchain che guidano l’allineamento tra i requisiti aziendali e lo sviluppo tecnico.

PER SAPERNE DI PIU’ SU COMPOSER

190214_Hyperledger - Lesson 02-13 - Hyperledger_Explorer

Hyperledger Explorer è stato progettato per creare un’applicazione Web user-friendly, può visualizzare, richiamare, distribuire o interrogare blocchi, transazioni e dati associati, informazioni di rete (nome, stato, elenco di nodi), codici di catena e famiglie di transazioni, nonché qualsiasi altra informazione rilevante memorizzata nel registro. Hyperledger Explorer è stato inizialmente fornito da IBM, Intel e DTCC.

PER SAPERNE DI PIU’ SU EXPLORER

190214_Hyperledger - Lesson 02-14 - Hyperledger_Quilt

Hyperilger Quilt offre interoperabilità tra i sistemi di contabilità generale implementando il protocollo Interlingger (noto anche come ILP), che è principalmente un protocollo di pagamento ed è progettato per trasferire il valore tra registri distribuiti e registri non distribuiti. Il protocollo Interledger fornisce scambi atomici tra i registri (anche non blockchain o libri mastri distribuiti) e un singolo spazio dei nomi account per gli account all’interno di ogni libro mastro. Con l’aggiunta di Quilt in Hyperledger, Linux Foundation ora ospita le implementazioni di Interlingger Java (Quilt) e JavaScript (Interledger.js). Hyperledger Quilt ha avuto un contribuito iniziale da NTT Data e Ripple.

PER SAPERNE DI PIU’ SU QUILT

190214_Hyperledger - Lesson 02-15 - Hyperledger_Ursa

Hyperledger Ursa è una libreria crittografica condivisa che consente alle persone (e ai progetti) di evitare la duplicazione di altri lavori di crittografia e, auspicabilmente, di aumentare la sicurezza nel processo. La libreria potrebbe essere un repository opt-in per i progetti (e potenzialmente altri) per posizionare e utilizzare crypto. Hyperledger Ursa consiste in sottoprogetti, che sono implementazioni coese di codice crittografico o interfacce al codice crittografico. Attualmente ci sono due sottoprogetti:

  1. Libreria “Base Crypto”: il primo sotto-progetto da considerare come libreria “base crittografica”, la cui caratteristica principale è una libreria di firma modulare condivisa. Questo implementa diversi schemi di firma con un’API comune, che consente ai costruttori di blockchain di modificare schemi di firma quasi al volo (o di utilizzare e supportare facilmente più schemi di firma).

  2. Z-Mix: il secondo sotto-progetto intende offrire un modo generico per creare Prove di Conoscenza Zero che dimostrino affermazioni su più elementi costitutivi crittografici, incluse firme, impegni e crittografia verificabile. L’obiettivo di questo sotto-progetto è fornire un’unica implementazione flessibile e sicura per costruire tali prove a conoscenza zero. Z-mix è composto da codice C-callable ma ci sono anche wrapper di convenienza per vari linguaggi di programmazione.

PER SAPERNE DI PIU’ SU URSA

Requisiti Tecnici

Introduzione

In questa sezione, discuteremo dei diversi prerequisiti che sono necessari per essere sicuri che il proprio sistema operativo abbia i requisiti tecnici per i proseguio delle lezioni.

Infatti prima di procedere alle lezioni su Hyperledger Iroha, Hyperledger Sawtooth, e Hyperledger Fabric, è necessario avere installato sul proprio computer i seguenti componenti: cURL, Node.js, npm package manager, Linguaggio Go, Docker, e Docker Compose, e, se si è un utente Windows, VirtualBox.

Se i componenti appena descritti sono già sul proprio computer si può già saltare alla lezione successiva.

LINUX

Installare cURL

Aprire una finestra di terminale tramite il comando: CTRL+ALT+T.

Scrivere il seguente comando e immettere la propria password:

$ sudo apt install curl

Per controllare, eseguire il seguente comando sul proprio terminale/command line:

$ curl -V

Nota: La “V” è maiuscola.

Installare Docker

Per avere maggiori informazioni su come installere Docker andare qui.

Le indicazioni che seguiranno assumeranno 64-bit Ubuntu 16.04 VPS, come la strada più semplice per installare Docker.

Per Ubuntu, si può scegliere fra la Community Edition (CE) o la Enterprise Edition (EE). Si raccomanda CE, come l’ideale per gli sviluppatori e i piccoli team che fanno esperimenti con Docker.

Gestire Docker come un Utente Non-Root

Se non si vuole usare sudo quando si usano i comandi docker, creare un gruppo Unix chiamato docker e aggiungervi tutti gli utenti. Quando si avvia il docker daemon, esso rende la proprietà di Unix socket in lettura/scrittura da parte del gruppo docker.

ATTENZIONE: Il gruppo docker concede privilegi equivalenti agli utenti root. Per i dettagli su come tutto ciò può impattare sulla sicurezza del proprio sistema, guardare Docker Daemon Attack Surface.

Per creare il gruppo docker e aggiungersi come “user”:

  1. Creare il gruppo docker:
    $ sudo groupadd docker

  2. Aggiungerti come “user” al gruppo docker:
    $ sudo usermod -aG docker $USER

  3. Fare un log out e nuovamente un log in, così la tua adesione al gruppo è aggiunta.

  4. Su un ambiente desktop Linux come X Windows, fare un log out completo della propria sessione e quindi un nuovo log in.

  5. Verificare che si possa avviare un comando Docker senza sudo.
    $ docker run hello-world

  6. Questo comando scarica un “test image” e lo avvia in un container. Quando un container è avviato, esso stampa un messaggio informativo e esce.

Docker Compose

Per installare Docker Compose, eseguire il seguente comando sul proprio terminal/command line:

$ sudo apt update

$ sudo apt install docker-compose

Controllare ed assicurarsi di avere la versione Docker 17.03.1-ce o superiore, e la versione Docker Compose 1.9.0 o superiore:

$ docker –version && docker-compose –version

Installare Node.js e npm

Per installare Node.js e npm, eseguire il seguente comando nel proprio terminal/command line:

$ sudo bash -c “cat >/etc/apt/sources.list.d/nodesource.list” <<EOL
deb https://deb.nodesource.com/node_6.x xenial main
deb-src https://deb.nodesource.com/node_6.x xenial main
EOL

$ curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add –

$ sudo apt update

$ sudo apt install nodejs

$ sudo apt install npm

Verificare l’installazione così come la versione sia di Node.js che di npm, e essere sicuri che la versione di Node.js installata sia superiore alla v6.9 (non usare la v7), e che la versione di npm sia superiore alla 3.x:

$ node –version && npm –version

Installare Go Language

Visitare https://golang.org/dl/ e prendere nota dell’ultima versione stabile (v1.8 o successiva). Per installare Go language, eseguire il seguente comando sul proprio terminal/command line:

$ sudo apt update

$ sudo curl -O https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz

Nota: Cambiare l’ultima porzione dell’URL con il corretto nome file.

$ sudo tar -xvf go1.9.2.linux-amd64.tar.gz

$ sudo mv go /usr/local

$ echo ‘export PATH=$PATH:/usr/local/go/bin’ >> ~/.profile

$ source ~/.profile

Controllare che la versione di GO sia v1.8 o superiore:

$ go version

Il proprio sistema Linux è ora pronto per le lezioni tecniche sui tre framework Hyperledger.

MacOS

Installare cURL

cURL dovrebbe essere installato sul proprio computer di default.

Per controllare, eseguire il seguente comando sul proprio terminal/command line:

$ curl -V

Nota: La “V” è maiuscola.

Installare Node.js e npm

Visitare https://nodejs.org/en/download/ per i dettagli sull’installazione o aggiornamento di Node.js e npm per MacOS.

Verificare l’installazione così come la versione sia di Node.js che di npm, e essere sicuri che la versione di Node.js installata sia superiore alla v6.9 (non usare la v7), e che la versione di npm sia superiore alla 3.x:

$ node –version && npm –version

Installare Go Language (Parte I)

Visitare https://golang.org/dl/ e prendere nota dell’ultima versione stabile rilasciata (v1.8 o superiore):

$ cd ~

$ sudo curl -O https://storage.googleapis.com/golang/go1.9.2.darwin-amd64.pkg

Nota: Sostituire l’ultima parte dell’URL con il corretto filename. Spacchettare il file di installazione scaricato ed eseguirlo:

$ open go1.9.2.darwin-amd64.pkg

Dopo aver completato l’installazione, go verrà installato in /usr/local/bin/go. Si può controllarlo eseguendo:

$ which go

Installare Go Language (Parte II)

Ora abbiamo necessità di aggiungere delle variabili ambientali per essere sicuro che il codice sorgente sia localizzato con $GOPATH. Non è necessario avere un singolo luogo per tutti i progetti Go. Per prima cosa bisogna controllare che sia settata la propria variabile ambientale $GOPATH:

$ echo $GOPATH

Si dovrebbe ottenere la seguente risposta:

/Users/xxx/go

Se non ci fosse risposta è necessario indicare a Go il luogo dello spazio di lavoro scelto modificando il file .profile nella propria directory home:

$ nano ~/.profile

Nota: se si vuole si può usare vim o vi per modificare questo file, al posto di nano. All’interno di questo file, aggiungere le seguenti due linee, per esportare le variabili richieste:

$ export GOPATH=$HOME/go

$ export PATH=$PATH:$GOPATH/bin

Nota: Per salvare in nano, premere Control + O e quindi premere Enter.

Nota: Per uscire e tornare a navigare in una shell pulita, premere Control + x.

Ri-eseguire .profile per applicare questi nuovi cambiamenti:

$ source .profile

Controllare che la versione di Go sia la v1.8 o successiva:

$ go version

Scaricare Docker

Per scaricare Docker, è necessario avere OSX Yosemite 10.10.3, o superiore. Altrimenti, per versioni OS precedenti è possibile scaricare Docker Toolbox.

Nota: Installando Docker per Mac o Docker Toolbox verrà installato Docker Compose. Se Docker è già installato, si può controllare di avere Docker Compose nella versione 1.9.0 o successiva. Altrimenti si raccomanda di una versione di Docker più recente.

Questa VM sarà l’host dei peer di Hyperledger Fabric e dei nodi degli altri network.

Visita https://www.docker.com/docker-mac e seleziona “Download from Docker Store”.

Controllare di essere sicuri di avere la versione 17.03.1-ce or successiva:

$ docker –version && docker-compose –version

Il proprio MacOS è ora pronto per le lezioni tecniche sui tre framework Hyperledger.

WINDOWS

Requisiti di Sistema

Si prega di notare che non è necessario avere installato Docker per Windows, o HyperV abilitato per VirtualBox per eseguirlo. Vedere qui su come disabilitare HyperV.

Di seguito i requisiti attesi per Ubuntu 16.04, che verranno scaricati sulla propria virtual machine:

    • Processore 2 GHz dual core o superiore

    • 2 GB di memoria di sistema

    • 25 GB di spazio libero su hard drive

    • Un lettore DVD o una porta USB per installare i media.

Installare VirtualBox e Creare una Virtual Machine

Scaricare e installare l’ultimo pacchetto dalla piattaforma VirtualBox a questo indirizzo. Una volta installato, si verrà accolti da una schermata come quella seguente.

System Requirements

190214_Hyperledger - Lesson 02-16 - Windows-img1

Cliccare “New” per creare una nuova virtual machine. A questo punto, è necessario scegliere una distribuzione Linux da installare. Diverse distribuzioni Linux funzioneranno per questo tutorial, ma si raccomanda di usare Ubuntu 16.04, che è molto popolare.

Prendere nota della versione selezionata. Se si stanno seguendo le raccomandazioni suggerite si può selezionare Ubuntu (64-bit).

Per il proseguio del setup usare le seguenti opzioni:

    • processore 2 GHz dual core o superiore

    • 2 GB di memoria di sistema

    • 25 GB di spazio libero su hard drive

    • Un lettore DVD o una porta USB per media installer.

Scaricare e Installare Linux (Parte I)

Prima di far partire la virtual machine, è necessario installare la propria distribuzione Linux.

Se si usa Ubuntu, si prega di scaricare la versione desktop 16.04 (ubuntu-16.04.4-desktop-amd64.iso) qui.

Una volta completato il download dell’image file, premere “Start” per avviare la propria virtual machine.

190214_Hyperledger - Lesson 02-17 - Windows-img2

Usare l’icona della cartella per scegliere e aprire l’image file appena scaricata e selezionare “Start”. Seguire le istruzioni per installare Linux.

190214_Hyperledger - Lesson 02-18 - Windows-img3

Prendersi un caffè 🙂 Ci vogliono diversi minuti per l’installazione. Riavviare una volta terminato.

Scaricare e Installare Linux (Parte II)

Per aprire un terminale premere CTRL+ALT+T, o farlo selezionando il bottone Ubuntu Home e cercare ‘terminal’.

SI può scegliere il web, scaricare/installare qualsiasi software Ubuntu e, più importante, continuare il tutorial! Buona fortuna!

Per un più adeguato aiuto su VirtualBox, consultare questo eccellente manuale qui.

190214_Hyperledger - Lesson 02-19 - Windows-img4

Installare cURL

Aprire una finestra teminale: CTRL+ALT+T. Scrivere il seguente comando e immettere la propria password:

$ sudo apt install curl

Per controllare, eseguire il seguente comando nel proprio terminal/command line:

$ curl -V

Nota: La “V” è Maiuscola.

Installare Docker

Docker fornisce molte istruzioni su come installarlo qui.

Gestire Docker come un Utente non-root

Se non si vuole usare sudo quando si usano i comandi docker, creare un gruppo Unix chiamato docker e aggiungervi tutti gli utenti. Quando si avvia il docker daemon, esso rende la proprietà di Unix socket in lettura/scrittura da parte del gruppo docker.

ATTENZIONE: Il gruppo docker concede privilegi equivalenti agli utenti root. Per i dettagli su come tutto ciò può impattare sulla sicurezza del proprio sistema, guardare Docker Daemon Attack Surface.

Per creare il gruppo docker e aggiungersi come “user”:

  1. Creare il gruppo docker:
    $ sudo groupadd docker

  2. Aggiungerti come “user” al gruppo docker:
    $ sudo usermod -aG docker $USER

  3. Fare un log out e nuovamente un log in, così la tua adesione al gruppo è aggiunta.

  4. Su un ambiente desktop Linux come X Windows, fare un log out completo della propria sessione e quindi un nuovo log in.

  5. Verificare che si possa avviare un comando Docker senza sudo.
    $ docker run hello-world

  6. Questo comando scarica un “test image” e lo avvia in un container. Quando un container è avviato, esso stampa un messaggio informativo e esce.

Docker Compose

Per installare Docker Compose, eseguire il seguente comando sul proprio terminal/command line:

$ sudo apt update

$ sudo apt install docker-compose

Controllare ed assicurarsi di avere la versione Docker 17.03.1-ce o superiore, e la versione Docker Compose 1.9.0 o superiore:

$ docker –version && docker-compose –version

Installare Node.js e npm

Per installare Node.js e npm, eseguire il seguente comando nel proprio terminal/command line:

$ sudo bash -c “cat >/etc/apt/sources.list.d/nodesource.list” <<EOL
deb https://deb.nodesource.com/node_6.x xenial main
deb-src https://deb.nodesource.com/node_6.x xenial main
EOL

$ curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add –

$ sudo apt update

$ sudo apt install nodejs

$ sudo apt install npm

Verificare l’installazione così come la versione sia di Node.js che di npm, e essere sicuri che la versione di Node.js installata sia superiore alla v6.9 (non usare la v7), e che la versione di npm sia superiore alla 3.x:

$ node –version && npm –version

Installing Go Language

Visitare https://golang.org/dl/ e prendere nota dell’ultima versione stabile (v1.8 o successiva). Per installare Go language, eseguire il seguente comando sul proprio terminal/command line:

$ sudo apt update

$ sudo curl -O https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz

Nota: Cambiare l’ultima porzione dell’URL con il corretto nome file.

$ sudo tar -xvf go1.9.2.linux-amd64.tar.gz

$ sudo mv go /usr/local

$ echo ‘export PATH=$PATH:/usr/local/go/bin’ >> ~/.profile

$ source ~/.profile

Controllare che la versione di GO sia v1.8 o superiore:

$ go version

Il proprio sistema Windows ora è pronto per le lezioni tecniche sui tre framework Hyperledger.