Tempo di lettura: 4 minuti

Eccoci in un nuovo articolo, nella vecchia categoria Sviluppo Blockchain, ora chiamata Dev Zone. Perchè questo cambio di nome? Perchè saremo molto più liberi, potremmo parlare di tantissimi argomenti, spesso non legati a Blockchain. Oggi andremo infatti a parlare di una tecnologia completamente diversa: IOTA.

programmazione iota tutorial italiano
Programmazione IOTA: piccolo esperimento con Iota.lib.js

IOTA, come molto probabilmente saprai, si basa su Tangle e non su Blockchain. Ci sono davvero tante differenze tra questi due sistemi, per esempio nel sistema di validazione delle transazioni. Per effettuare una transazione sarà necessario confermarne due precedenti.

Per parlare dello sviluppo su IOTA partiremo con un tutorial davvero semplice, utilizzando la libreria Iota.lib.js, che come puoi capire dal nome è la versione della libreria IOTA per Javascript.

Ambiente di sviluppo e installazione delle libreria

Per testare la libreria IOTA per Javascript andremo a chiamare qualche semplice metodo utilizzando uno dei tanti nodi pubblici, disponibili in questa pagina. Andremo a chiamare delle funzioni della libreria iota.lib.js che eseguiranno chiamate alle API esposte proprio da questi nodi.

Non dovremo quindi installare alcun nodo, saremo direttamente collegati alla mainnet IOTA.

Nei tutorial precedenti su sviluppo Ethereum abbiamo utilizzato sempre Javascript, con NPM come package manager; continueremo ad utilizzare proprio questo strumento per installare diverse librerie.

npm install iota.lib.js curl.lib.js parcel

Analizziamo i moduli installati:

  • iota.lib.js: wrapper Javascript delle API IOTA
  • curl.lib.js: libreria Javascript per la gestione delle chiamate HTTP e abilitazione mining WebGL
  • parcel: bundler per applicazioni Web, ci permette di scrivere con sintassi ES6

La struttura della nostra applicazione sarà molto semplice: un file HTML e un file Javascript! Chiameremo il file Javascript main.js e lo utilizzeremo per chiamare le API di IOTA, modificando il DOM del file index.html.

Prima di tutto andiamo ad importare le librerie installate precedentemente all’interno del file main.js
var IOTA = require('iota.lib.js');
var curl = require('curl.lib.js');

La prima cosa fare sarà istanziare un nuovo oggetto IOTA a cui passeremo un oggetto di configurazione, contenente il parametro provider impostato a https://nodes.iota.fm:443/.

Da questo oggetto possiamo ora recuperare la versione della libreria e ad inserirla all’interno del file HTML.

document.getElementById('iota-version').innerText = "v " + iota.version;

Otteniamo un po’ di informazioni dal Nodo

La funzione che andremo ad utilizzare per ottenere altre informazioni dal nodo a cui siamo connessi si chiama getNodeInfo e andremo a vederne alcuni risultati: il nome della versione di IOTA installata sul server, la versione, il numero di nodi vicini e alte che non abbiamo mostrato in questa piccola demo!

Ottenere il balance di un indirizzo

Dopo aver ottenuto la versione e le informazioni dal nodo cominciamo a lavorare con indirizzi e transazioni. Come ottenere quindi il balance di un indirizzo?

La funzione che utilizzeremo si chiama proprio getBalances ed ha il seguente prototipo:

getBalances(addresses, threshold, [callback])

  • addresses consisterà nell’array di indirizzi di cui vogliamo ottenere il saldo
  • threshold è il limite minimo di conferme con cui filtrare i risultati
  • [callback] è la classica funzione di callback, che scriveremo con la instassi ES6:

(err, res) => { }

Come generare un nuovo indirizzo? Andiamo a creare dell’entropia!

Ti piacerebbe creare un nuovo indirizzo IOTA? In questo articolo andremo a vedere come.

Prima di tutto un po’ di teoria. Gli indirizzi sono creati da un seed (seme) cioè un insieme di bytes ottenuti il più casualmente possibile. Questo fenomeno viene chiamato entropia, termine sicuramente conosciuto da studenti di Fisica e Matematica.

Per generare abbastanza entropia utilizzeremo una libreria  open-source disponibile su GitHub! Andiamo a vedere come utilizzare questo potente strumento.

Prima di tutto importiamo la libreria dal file scaricato (sjcl.js) con la seguente sintassi.

import * as sjcl from './sjcl';

Andiamo ad istanziare un nuovo oggetto chiamato sjcl, con 10 come parametro, corrispondente al livello di “paranoia” per generare il seed.

var gen = new sjcl.prng(10);

Successivamente andiamo a creare la funzione genSeed che ci ritornerà il seed generato dall’entropia generata con il movimento del mouse:

Non ci resta che utilizzare due listeners; il primo verrà attivato una volta raggiunto il 100% di entropia:

Il secondo invece sarà un classico progressor, che servirà per aggiornare la percentuale di entropia generata.

Ottenere tutte le transazioni di un indirizzo? Perchè no!

Andiamo ad analizzare l’ultima funzione di questo piccolo tutorial di Iota.lib.js:  findTransactionObjects.

Studiamo come sempre il prototipo della funzione:

findTransactionObjects(searchValues, callback)

Il parametro più importante è sicuramente searchValues, l’oggetto che ci permetterà di effettuare delle ricerche all’interno del Tangle di IOTA. Come utilizzare questo oggetto? Attraverso delle proprietà, andiamo a vedere quali:

  • bundles: array di hash di budles
  • addresses: array di indirizzi di cui cercare le transazioni
  • tags: array di tag
  • approvees: lista di approvatori

Il risultato di questa chiamata verrà come sempre ottenuto con la callback, cioè il secondo parametro passato. Andiamo quindi a creare dei childrene ad inserirli in una classica lista Bootstrap!

Scarica e modifica l’applicazione, è Open Source!

Tutte queste funzioni di cui abbiamo parlato sono state utilizzate per realizzare una piccola applicazione Web scritta in HTML e VanillaJS.

Desideri provarla? Non c’è problema, l’applicazione è Open Source e disponibile su GitHub sotto licenza GNU GPL v3.0, che ti permette di modificare e ripubblicare il software modificato a patto che sia Open Source anche questo.  Di seguito puoi trovare screenshots dell’applicazione.

Se ti è piaciuto questo articolo ricorda di entrare nel nostro gruppo Telegram e di lasciare un like sulla pagina Facebook!

Autore

Sono uno studente Web&Cloud. Amo programmare, negli anni ho sviluppato competenze full-stack, in particolare nel mondo Javascript. Linux e la crittografia mi hanno sempre appassionato, fino a portarmi nel mondo delle cryptovalute.

Scrivi un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.