L’utilizzo della tecnologia blockchain non si limita all’ambito delle criptovalute: la sua natura distribuita e la capacità di verificare la validità di ogni transazione inserita nella rete apre interessanti e importanti applicazioni nel settore dell’Internet of Things, dove può aiutare a realizzare una piattaforma di scambio distribuita. Scopriamo in questo articolo come creare una rete Ethereum privata, partendo da zero, utilizzando un comune Raspberry Pi 3
Introduzione
Precisiamo anzitutto che l’obiettivo dell’articolo non è quello di realizzare un sistema per fare il mining della criptovaluta Ethereum, ma piuttosto quello di sviluppare una piattaforma embedded a basso costo attraverso la quale sperimentare l’utilizzo della rete Ethereum. Blockchain, la tecnologia alla base di molte criptovalute tra cui Ethereum e Bitcoin, è una sorta di libro mastro gestito attraverso una rete peer to peer le cui dimensioni aumentano man mano che nuovi blocchi sono aggiunti alla rete. Ad ogni blocco sono associati i dati relativi a una precisa transazione e una marca temporale (detta anche timestamp). Tutte queste informazioni sono criptate attraverso un algoritmo con elevato grado di sicurezza (tipicamente lo SHA-256 o una variante simile): l’informazione così ottenuta è sicura, memorizzata in modo permanente e non più modificabile. Anche se la rete Ethereum possiede una propria criptovaluta (denominata Ether), la tecnologia utilizzata è la stessa alla base del Bitcoin. La principale differenza rispetto a quest’ultima è la possibilità di utilizzare la rete non soltanto per la creazione delle transazioni, ma anche per la creazione e lo scambio degli smart contract. Come indicato nella documentazione ufficiale Ethereum, uno smart contract è composto da due parti: il codice che lo implementa e i dati che identificano lo stato del contratto. I contratti sono solitamente scritti in un linguaggio ad alto livello (tipicamente Solidity, basato su Javascript) e poi compilati in bytecode per essere caricati sulla blockchain ed essere eseguiti dalla Ethereum Virtual Machine (EVM). Esistono numerose applicazioni client per Ethereum, a partire dalla prima implementazione (geth) scritta nel linguaggio Go. Nel prossimo paragrafo esamineremo il primo passo relativo alla creazione di una rete Ethereum privata: l’installazione di geth.
Installazione di geth
Come prerequisito occorre aver installato sul Raspberry Pi 3 B/B+ la distribuzione Raspbian, la cui immagine può essere scaricata e programmata su una scheda SD con dimensione pari ad almeno 16 GB seguendo le istruzioni presenti sul sito ufficiale della Raspberry Pi Foundation. Come consuetudine, procediamo con l’aggiornamento all’ultima versione dei pacchetti disponibili nella distribuzione tramite i seguenti comandi:
$ sudo apt-get update
$ sudo apt-get dist-upgrade
Poichè dovremo eseguire la compilazione direttamente sul Raspberry Pi, è opportuno liberare parte della memoria allocata alla GPU per avere a disposizione una maggiore quantità di memoria a livello di CPU e quindi di compilatore (si può anche decidere di disabilitare l’avvio del desktop, non necessario per questo tipo di applicazione). Entriamo nelle opzioni di configurazione della scheda attraverso il comando:
$ sudo raspi-config
Il menu che appare è visibile in Figura 1. Selezioniamo ora dal menu la voce 3 Boot Options -> B1 Desktop / CLI -> B1 Console per forzare l’avvio di Raspbian nella modalità console (CLI) anziché in quella desktop. Sempre dal menu, selezioniamo poi 7 Advanced Options -> A3 Memory Split e inseriamo il valore 16 (si osservi la Figura 2) al posto del valore di default (64). Tale valore esprime la quantità di memoria (in MB) riservata all’acceleratore grafico (GPU) del Raspberry Pi 3 B/B+. Eseguiamo quindi un reboot della scheda.
Ora dobbiamo installare le dipendenze dai pacchetti richiesti per geth, in particolare il linguaggio Go (‘golang’ nel comando seguente) necessario per la sua compilazione:
$ sudo apt-get install git golang libgmp3-dev
Siamo ora pronti per scaricare tramite Git la versione del client geth di Ethereum, compilarlo tramite il linguaggio Go e copiare l’eseguibile in /usr/local/bin/. I comandi sono i seguenti:
$ mkdir src
$ cd src
$ git clone -b release/1.7 https://github.com/ethereum/go-ethereum.git
$ cd go-ethereum
$ make
$ sudo cp build/bin/geth /usr/local/bin/
Creazione di un account
Siamo a questo punto pronti per creare un nuovo account geth tramite il commando:
$ geth account new
Si noti come sia richiesto inserire una password per proteggere l’account appena creato (si osservi la Figura 3).
A seguito di questo comando verrà creato un nuovo set di chiavi crittografiche e la chiave privata verrà protetta tramite password.
Avvio del nodo
Per lanciare geth sul nostro nodo è sufficiente impartire il seguente comando [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2623 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Bellissimo articolo. La gestione di una Rete è una vera e propria arte. E Linux permette di mettere le mani ovunque, a differenza di altri S.O. Molto affascinante.!