MAM – Masked Authenticated Messaging, attualmente una delle funzionalità di maggiore interesse per chi implementa IOTA e mira a diventare uno standard per i dispositivi IoT.

Ricordiamo che questa funzionalità si trova ancora in fase di sviluppo.

Notizie su una riscrittura completa di MAM: MAM+ è stata recentemente annunciata dalla IOTA Foundation su un recente post sullo stato attuale dei suoi progetti di ricerca e sviluppo.
In questo breve articolo mostreremo come utilizzare MAM. Come prima cosa, e prima di iniziare a scrivere codice, consigliamo vivamente di leggere:

IOTA: MAM Eloquently Explained (in lingua inglese). ABmushi, l’autore, aiuterà a capire perfettamente la teoria dietro al MAM. Vale veramente la pena.

stack_iot

Al termine di questo tutorial sarai in grado di comprendere ed utilizzare il MAM in tutte le sue modalità.

Innanzitutto, clonare il seguente repository che @chrislaive ha creato per questo esempio.

Ci sono 2 modi per farlo, tramite Github o usando Gitlab, (entrambi sono uguali).

Ora, esegui “node index.js [sec] [mode]” con i seguenti argomenti.

sec: tempo per il loop in secondi
mode: un numero compreso tra 1 e 3 (1=Pubblico, 2=Privato e 3=Riservato)

e.g.
node index.js 60 1
Ciò significa che invierai i dati al Tangle ogni 60s in modalità Pubblico.

mam output

Il codice darà un output simile.

Puoi anche usare fetch per recuperare i dati. Per ogni modalità è disponibile un file specifico. Per questo particolare esempio useremo fetchPublic.js.
Quest’ultimo viene eseguito con il seguente comando “node fetchPublic.js [root]

root: radice (root) da quando vogliamo recuperare le informazioni

 

e.g.
node fetchPublic.js MBNPVLPUPKDYKATZMSMVAWQKVUFMLAC9QSLTWWACMRKNLUDRORYFTNPCFESIMBIJTJUNDVRTELGAOAFZM
“MBNPVLPUPKDYKATZMSMVAWQKVUFMLAC9QSLTWWACMRKNLUDRORYFTNPCFESIMBIJTJUNDVRTELGAOAFZM” in questo esempio è la nostra radice (root)

recuprare dati tangle

Recupreare dati dal Tangle

Sentitevi liberi di modificare questo codice se il vostro obiettivo è quello di eseguire un processo automatico impostando un intervallo specifico ed una modalità specifica (Pubblica Privata o Riservata). Nella modalità riservata modificare il codice ulteriormente, in quanto questa modalità necessità della chiave aggiuntiva (sidekey).

A questo scopo modificare la seguente riga nel file attachDataRestricted.js nella cartella lib:

12. “CHRISLAIVELOVESIOTA

Ricordiamoci che la chiave aggiuntiva è codificata in ternario (Trytes). Per codificare una nuova stringa come chiave aggiuntiva è per tanto necessario utilizzare il metodo iota.utils.toTrytes dell’API di iota.lib.js.

Una volta creato la chiave aggiuntiva, modificare anche il fetcher utilizzato.

Modificare la seguente riga nel file fetchRestricted.js nella cartella fetchData:

18. let resp = await Mam.fetch(root, ‘restricted’,’CHRISLAIVELOVESIOTA’,logData)

Sostituendo CHRISLAIVELOVESIOTA con la nuova chiave aggiuntiva.

Nel prossimo tutorial, esploreremo come applicare ciò che è stato appreso in un esempio semplice: l’invio di dati dai sensori al Tangle. Inoltre, se sei un programmatore principiante, ci sarà un tutorial futuro che spiegherà come utilizzare NodeJS con Arduino, RaspberryPi, Spark, IntelEdison ed altre schede con un semplice esempio.

Di seguito una grafica che mostra l’obiettivo finale:

usecase iota peru

In Perù la connettività mobile è sempre un problema. LPWAN come ad esempio LoRaWAN, è una delle soluzioni consigliate per mitigare questo tipo di problemi. L’idea è di avere i dati recuperati dai sensori LoRaWAN, trasferirli su un gateway LoRaWAN e quindi ad un server in Cloud. Ecco dove entra in gioco MAM.
Eseguendo uno script utilizzando MAM, il server può quindi trasferire i dati crittografati ad un altro server o semplicemente memorizzarli nel Tangle. Quest’ultimo può anche elaborare i dati e trasferirli a valle su Internet o verso una Webapp e quindi di nuovo al Gateway ed altri dispositivi connessi.

Per supportare Chistopher Aldave ed il gruppo in Perù, potete donare qui:

ETZKLIYPVHQCHKKX9KVZUGQ9CGMGKDVTQXHZKFBUCREHRIGJVATBAMVWZTOOXHVCZ9HOGVDQKLPKKJFHXXYYCNGVEY


Per ulteriori informazioni in italiano o tedesco trovate i miei contatti a questa pagina.
Se avete trovato utile la mia traduzione, accetto volentieri delle donazioni 😉
IOTA:
CHQAYWPQUGQ9GANEWISFH99XBMTZAMHFFMPHWCLUZPFKJTFDFIJXFWCBISUTVGSNW9JI9QCOAHUHFUQC9SYVFXDQ9D
BTC:
1BFgqtMC2nfRxPRge5Db3gkYK7kDwWRF79
Non garantisco nulla e mi libero da ogni responsabilità.

 


Also published on Medium.