giovedì 21 giugno 2018

Blockchain: Applicazioni non finanziarie

Ciao,

Giorno 6 giugno 2018, durante un seminario che ho tenuto all' Università degli Studi di Catania, ho presentato i seguenti esempi di applicazioni non finanziarie che utilizzano la blockchain.

Pangea - https://tse.bitnation.co/



L'idea di questo progetto, basato su un token di ethereum, è la seguente:

Solamente parte delle persone di questo mondo ha avuto la fortuna di nascere nella parte corretta del mondo e in alcuni casi le persone sono obbligate a lavori forzati o a libertà limitata.

La missione è di creare un mondo “unico” senza confini dove tutti i “cittadini” hanno diritti comuni
La blockchain ha il compito di ospitare dati importanti e vitali come certificati di nascita, carte di identità, nominativi di rifugiati


Questo progetto (utopistico) ha vinto il premio Netexpo dell’UNESCO 2017 

WePower - https://wepower.network/


Il modello ICO di WePower consente ai produttori di energia di commerciare direttamente con gli acquirenti di energia green (consumatori e investitori) e raccogliere capitali vendendo energia in anticipo, a prezzi inferiori al mercato.

Il fulcro di questa nuova piattaforma è un sistema a doppio token:
  • Un token per fornire contratti intelligenti protetti sulla blockchain
  • WePower (WPR) token per il trading sulla piattaforma. 
Il prezzo del gettone energetico riflette il prezzo dell'energia stessa ed è quindi relativamente stabile.

Avere dei token WPR permette l’accesso all’asta per l’energia sulla piattaforma WePower dove sono presenti sia venditori che consumatori.

Inoltre per combattere la svalutazione del token i titolari dei token hanno accesso anche ad una sorta di fondo, concesso da una tassa imposta ai produttori di energia (lo 0,9%)

I token WPR possono essere usati
  • Per compare energia
  • Per consumare energia
  • Per rivendere l’energia (come se fossi un grossista)

Streamr - https://www.streamr.com/




Anche questo progetto è basato su un token Ethereum e permette lo scambio di informazioni tramite un proprio marketplace.

Un tipico esempio, ripreso pure nel video, è quello di un automobile che scambia informazioni su traffico / meteo / etc per avere in cambio altre informazioni localizzazione benzinai / punti di servizio / etc

Golem - https://golem.network/




Il progetto è essenzialmente un esecutore di task distribuiti.

Si basa su 3 attori principali:
  • Richiedenti, chi vuole che venga eseguito il task
  • Provider, chi dedica l’hardware alla rete
  • Sviluppatori, per creare un’ interfaccia all’interno del progetto golem
Una delle limitazioni di questo progetto sono le dipendenze richieste dal tipo di task. Per esempio la macchina dove gira golem deve avere le dipendenze richieste, per esempio blender, per il task dedicato all’image processing

Ad oggi esistono task del tipo:
  • Image Processing (blender)
  • Machine Learning (in ultimazione)

Elastic Project - https://www.elastic.pw/


E' un progetto simile a golem, ma non ancora partito ufficialmente.

Invece di eseguire dei determinati task, possiede un vero e proprio linguaggio di programmazione. Quindi i programmatori possono scrivere task molto più generici rispetto a quelli di golem che invece prende un file in input e esegue il programma specifico per convertirlo / usarlo.

Filecoin - https://filecoin.io/



Il progetto promette di superare il cloud proprietario immettendo una struttura distribuita basa su blockchain per lo storage dei file

Utilizza l'Interfanetary File System (IPFS) - un protocollo hypermedia peer-to-peer, per indirizzare e spostare il contenuto, fornendo al contempo la struttura di verifica, verifica e incentivazione circostante. 

I clienti spendono i token per la memorizzazione e il recupero dei dati, mentre i miners guadagnano i token memorizzando e/o servendo il recupero dei dati, oltre a estrarre nuovi blocchi ed elaborare le transazioni.

Augur - https://www.augur.net/




Anche questo progetto si basa su un token Ethereum e promette di creare un mercato di previsione decentralizzato che utilizza il principio della "saggezza della folla" per prevedere il risultato di eventi specifici.

Il feedback raccolto dalla suddetta "folla" viene mediato al fine di scoprire il risultato più probabile.

La segnalazione veritiera è incentivata offrendo ricompense per i pronostici corretti e delle sanzioni per i rapporti errati.

Gli individui usano il token per segnalare o valutare il potenziale risultato degli eventi.

Alla prossima!

MAM ovvero inviare messaggi attraverso la Tangle IOTA


INTRODUZIONE

Ciao a tutti,

oggi cercherò di spiegare, in maniera semplice e diretta, come usare una delle caratteristiche
principali della Tangle IOTA: il Masked Authenticated Message (aka MAM)

Nel mondo IoT inviare un messaggio attraverso un broker è una cosa molto comune. Di solito per far questo si utilizzano dei broker MQTT (Message Queue Telemetry Transport) e similari.

Studiare i concetti tecnici di questo strumento è molto interessante, la cosa principale da sapere è che:

  1. E' distribuito e gestito dalla Tangle
  2. E' possibile usarlo in diverse modalità:
    • pubblica
    • privata
    • condivisa
  3. E' gratis


COME SI USA MAM?

Anche per questo tutorial ho preparato un codice inserito sul mio spazio github all'indirizzo 


Il software di esempio prevede 2 modalità di avvio:
  • execute
    • Invia un messaggio standard "Hello world"
$ node index.js execute
Executing with root VMVCRIKQGVO9JI9CCYVOPMAQRIMKFZACBUSPSHWBPNVXUBHDVCBFFSVLMHTFIEPR9GLCABBPJPXN9WEPQ
Publishing into MAM. Message: 'Hello world'
Root:  VMVCRIKQGVO9JI9CCYVOPMAQRIMKFZACBUSPSHWBPNVXUBHDVCBFFSVLMHTFIEPR9GLCABBPJPXN9WEPQ
Address:  VMVCRIKQGVO9JI9CCYVOPMAQRIMKFZACBUSPSHWBPNVXUBHDVCBFFSVLMHTFIEPR9GLCABBPJPXN9WEPQ

  • listen
    • Legge dalla tangle il messaggio
$ node index.js listen VMVCRIKQGVO9JI9CCYVOPMAQRIMKFZACBUSPSHWBPNVXUBHDVCBFFSVLMHTFIEPR9GLCABBPJPXN9WEPQ
Listening on root VMVCRIKQGVO9JI9CCYVOPMAQRIMKFZACBUSPSHWBPNVXUBHDVCBFFSVLMHTFIEPR9GLCABBPJPXN9WEPQ
Reading from MAM... Message: 'Hello world'

A presto!

mercoledì 13 giugno 2018

Come usare IOTA per l'IoT (senza spendere 1 cent)

IoT e Tangle


Sia nel 2017 che nel 2018 il termine "IoT" è stato sempre protagonista in tutti gli articoli tecnici.

Se poi uniamo la parola "IoT" con la parola "blockchain" ecco che formiamo la coppia perfetta

Oggi mi concentrerò su una piccola dimostrazione pratica dell'utilizzo della tangle IOTA

Il codice di seguito descritto lo potete trovare direttamente sulla mia pagina github https://github.com/Fabryprog/iot-tangle-example

Per utilizzare questo esempio occorre installare nodejs

Se state creando un progetto tutto vostro il primo comando da lanciare è l'inizializzazione del progetto nodejs e l'installazione delle dipendenze (in questo caso iota)

npm init
npm install iota.lib.js --save

Per potere interagire con la tangle iota servono due cose essenziali:
  1. un nodo della rete
  2. un seed
Per reperire un nodo della rete è possibile andare su questo simpatico sito che sfrutta la tangle per una chat (inutile). Io lo trovo utile soprattutto perchè da questo sito è possibile reperire una serie di nodi funzionanti (pulsante in alto a destra)

Per creare un seed e state usando un sistema linux è possibile utilizzare il seguente comando (sconsiglio vivamente di utilizzare servizi online)

cat /dev/urandom | LC_ALL=C tr -dc 'A-Z9' | fold -w 81 | head -n 1
Il codice sorgente è molto semplice ed è tutto all'interno del main file index.js

const IOTA = require('iota.lib.js')
const iota = new IOTA({
    host: 'http://node01.iotatoken.nl:14265',
    port: 14265
})

const DEPTH = 3;
const MINWEIGHT = 16; // PoW difficulty

const seed = "OKKGZMWEWOMCSD9PTPGNMRJCROFDCAHOFMIRFCRJIJSFAOCHWO9GFDSXFHCQD9DPWFHOVRYKFYZPZFWSX";
const myAddress = "AQJFGBHRLKWSGDGPOWAH9XWZJMUEISJVMERTBLVJYIDQADDOB9VATPJJYKCHPLRBTVXQXZQYTSURRD9SY";

const transfers = [
   {
      address: myAddress,
      value: 0,
      message: iota.utils.toTrytes('W IOTA (part 2)!')
   }
]
const options = {
    inputs: []
}

iota.api.sendTransfer(seed, DEPTH, MINWEIGHT, transfers, options, (error, transactions) => {
    if (error) {
        console.error('sendTransfer error', error);
    } else {
        console.log('transactions sent!', transactions);
    }
});

Per eseguire questo semplice script è necessario inviare il seguente comando:

node index.js

L'esecuzione dura all'incirca una ventina di secondi. 

Usando uno dei tanti tangle explorer potete controllare i dati inviati




A presto!

Blockchain: Applicazioni non finanziarie

Ciao, Giorno 6 giugno 2018, durante un seminario che ho tenuto all' Università degli Studi di Catania, ho presentato i seguenti esemp...