Progetto per la gestione IoT di un sistema Blockchain

Questo articolo intende descrivere un progetto dimostrativo di approccio all’interazione con la tecnologia Blockchain mediante l’impiego di un dispositivo IoT a basso costo. Nello specifico, il progetto realizzerà l’interfacciamento della scheda di sviluppo ESP32 con la piattaforma Blockchain Algorand. Gli elementi chiave della specifica Algorand impostano le basi per creare soluzioni più avanzate mirate all’impiego di dispositivi con risorse limitate. Nel progetto verrà utilizzata come esempio una semplice applicazione per dimostrare come un dispositivo IoT a basso costo possa rispondere ai comandi inviati dagli utenti sulla piattaforma Blockchain.

Introduzione - Blockchain

Blockchain è un registro digitale pubblico a cui tutti hanno accesso senza che un'autorità centrale ne abbia il controllo. È una tecnologia che consente agli individui e aziende di interagire con fiducia e trasparenza nelle transazioni. Una delle più conosciute applicazioni blockchain sono le valute crittografiche come Bitcoin e altre, ma sono possibili molte altre applicazioni. La tecnologia blockchain è considerata la forza trainante della prossima rivoluzione tecnologica dell'informazione. Molte implementazioni della tecnologia blockchain sono attualmente ampiamente disponibili, ognuna con la particolare peculiarità per uno specifico dominio applicativo, una di queste è la Blockchain Algorand. A differenza di un'architettura centralizzata, che presenta diversi problemi tra cui il guasto in un singolo punto e problemi di scalabilità, la blockchain utilizza un registro decentralizzato e distribuito per impiegare le capacità di elaborazione di tutti gli utenti partecipanti alla rete blockchain, contribuendo a ridurre la latenza e ad eliminare guasti in un singolo punto. L’Immutabilità è una caratteristica essenziale della blockchain, ovvero la capacità di garantire l'integrità delle transazioni creando registri immutabili. Nelle architetture centralizzate tradizionali, i database possono essere modificati e la fiducia con una terza parte deve essere creata per garantire l'integrità delle informazioni.

Nella tecnologia blockchain, poiché ogni blocco nel registro distribuito si riferisce al blocco precedente che costituisce una catena di blocchi, i blocchi vengono salvati in modo permanente e non vengono mai modificati finché l'utente partecipante continua a mantenere la rete. La blockchain offre un alto livello di Trasparenza condividendo i dettagli della transazione tra tutti gli utenti partecipanti coinvolti in tali transazioni. In un ambiente blockchain non è necessario l’intervento di una terza parte, il che migliora la facilità d'uso e garantisce un flusso di lavoro affidabile. Sebbene la sicurezza rappresenti un problema per la maggior parte delle nuove tecnologie, la blockchain garantisce una sicurezza migliore perché utilizza un'infrastruttura a chiave pubblica che protegge da azioni dannose atte a modificare i dati. Gli utenti partecipanti della rete blockchain ripongono la loro fiducia nelle caratteristiche di integrità e sicurezza del meccanismo di consenso. Inoltre, la blockchain elimina il singolo punto di guasto, che colpirebbe l'intero sistema. L’Efficienza della blockchain migliora la classica architettura centralizzata distribuendo i record del database tra i vari utenti coinvolti nella rete blockchain. La distribuzione delle transazioni rende più trasparente la verifica di tutti i record archiviati nel database. Una blockchain è più efficiente della classica architettura centralizzata in termini di costi, velocità e gestione del rischio.

La piattaforma Algorand

Algorand è una piattaforma di criptovaluta basata su blockchain, che ha l’obiettivo di garantire sicurezza, scalabilità e decentralizzazione. La piattaforma Algorand supporta la funzionalità Smart Contract (contratto intelligente) e il suo algoritmo di consenso si basa sui principi Proof of Stake (protocolli di una classe di funzionalità di consenso per blockchain, che operano selezionando i validatori in proporzione alla loro quantità di partecipazioni nella criptovaluta associata). La criptovaluta nativa di Algorand si chiama Algo.
Una libreria C/C++ di base supporta funzionalità come la generazione di chiavi Ed25519 (Ed25519 è un sistema di firma a chiave pubblica), il recupero di informazioni sull'account e le transazioni.

Il progetto

La finalità del progetto è di ottenere un dispositivo IoT (l’ESP32) in grado di connettersi a un AP Wi-Fi locale, creare il proprio account Algorand generando una coppia pubblica/privata di chiavi, salvare l'indirizzo (chiave pubblica) in una memoria non volatile per garantire la continuità delle attività dopo i riavvii, monitorare l’account per un evento finanziario, infine, monitorare il suo account per i comandi inviati per controllare il LED del dispositivo utilizzato come elemento di segnalazione dei comandi inviati dagli utenti sulla blockchain.

Componenti del progetto

Il progetto è costituito da hardware, una scheda di sviluppo ESP32 DevkitC V1 della Espressif, e dal seguente software:
Visual Studio Code che include l’estensione PlatformIO IDE che utilizzeremo come editor per creare e installare nell’ESP32 il firmware d’interfaccia alla blockchain; MyAlgo.com è un portafoglio Algorand, che consente agli utenti di interagire liberamente con la blockchain di Algorand. Consente il modo più semplice e sicuro per inviare e ricevere criptovaluta Algo e token, organizzare e tenere traccia di tutti i propri portafogli Algorand, gestire le proprie risorse e altro ancora. Nel progetto viene utilizzato per gestire l’account, TESTNET, che creeremo e per inviare i comandi al dispositivo IoT; Algorand TestNet Dispenser viene utilizzato per consentire lo sviluppo di test sulle reti blockchain di Algorand. In pratica, dispensa gli Algo (criptovaluta) che non hanno alcun valore monetario e vengono utilizzati solo per testare le applicazioni blockchain; PureStake.io è un servizio per l’accesso alla rete Algorand affidabile e sicuro e alle API REST native di Algorand per MainNet, TestNet e BetaNet. In questo progetto utilizzeremo un’API per interagire con TESTNET dal dispositivo IoT; Algorand-esp32-example-master è il codice di esempio che installeremo nell’ESP32. Sarà inoltre necessario creare un Punto di accesso Wi-Fi locale a cui collegheremo l’ESP32 consentendogli di interagire con la blockchain.

Programmazione del dispositivo IoT ESP32

Occorre innanzitutto installare l’editor o IDE, ossia l’ambiente di sviluppo che accoglierà il codice. Utilizzeremo PlatformIO IDE che si trova come estensione nel software di Microsoft Visual Studio Code (VSC). Se non l’avete mai installato, andate nel sito https://code.visualstudio.com/ e installate il software scegliendo la versione secondo il vostro sistema operativo. Completata l’installazione, installate PlatformIO IDE seguendo l’immagine di Figura 1 e queste istruzioni:

  • In VSC, aprite l’Extension Manager (1)
  • Nella casella di ricerca digitate “PlatformIO IDE” (2)
  • Nell’elenco sottostante apparirà PlatformIO IDE, installatelo (3)
  • Chiudete VSC

Figura 1: Installazione PlatformIO IDE

Ora scaricate il codice di esempio dal sito https://github.com/jdl5711/algorand-esp32-example. Cliccando su “CODE” si aprirà un elenco in cui dovete selezionare “Download ZIP”. Copiate in una cartella il file algorand-esp32-example-master.zip e decomprimetelo nella cartella algorand-esp32-example-master.
Aprite VSC e cliccate sul pulsante “Home” in basso a sinistra. Si aprirà Platform IDE e apparirà una finestra come in Figura 2.

Figura 2: Avvio di Platform IDE

Cliccate su “Open Project”. Selezionate la cartella in cui avete salvato la cartella algorand-esp32-example-master del codice e apritela. Trovata la cartella contenente il file di configurazione platformio.ini, cliccate sul pulsante in basso “Open algorand-esp32-example-master ”. Immediatamente si aprirà il file di configurazione platformio.ini, come mostrato in Figura 3.

Figura 3: Listato del codice platformio.ini ed a fianco la struttura del progetto algorand-esp32-example-master

Descrizione del codice

Come si può vedere a sinistra dell’immagine di Figura 3, la struttura del progetto “algorand-esp32-example-master ” è costituita da vari file ognuno dei quali svolge una precisa funzione, come vedremo di seguito.

Configurazione - platformio.ini [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2321 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.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend