2.3 Soluzioni che fanno uso di una blockchain
2.3.1.3 Foodchain DApp
Foodchain SpA è un’azienda italiana fondata nel 2016 che fornisce servizi per la tracciabi- lità di prodotti alimentari. Le sedi dell’azienda sono ubicate presso ComoNExT Innovation HUB (Como), I3P (Torino) e Impact HUB Trentino (Trento). La DApp di Foodchain è stata
12
sviluppata in collaborazione con la fondazione Quadrans. Foodchain è infatti costruita sulla blockchain di Quadrans e ne costituisce la prima implementazione presente sul mercato.
La DApp ha lo scopo di fornire un ecosistema per la creazione di autenticità, sostenibi- lità, sicurezza alimentare e garanzia di qualità dei prodotti. Foodchain si rivolge a produttori, trasportatori, aziende di logistica, amministrazione pubblica, grande distribuzione organiz- zata ed enti certificatori. Oltre al settore del food, la DApp è utilizzabile anche da operatori della filiera tessile strettamente legata al territorio del Comasco in cui Foodchain è stata sviluappata.
2.3.2
Vantaggi
I vantaggi derivanti dall’impiego della blockchain, coerentemente con quanto descritto nella sezione 2.1, sono:
• maggiore trasparenza
• garanzia di alta diponibilità
• versione dei dati sempre coerente per tutti gli attori
• maggiore responsabilizzazione degli attori
a dipendenza della scelta del tipo di blockchain utilizzata, il focus può essere sulla garanzia dell’immutabilità dei dati e la completa decentralizzazione del sistema13, oppure la garanzia che le informazioni siano inserite solo da attori autorizzati e la possibilità di mantenere la privacy e l’ownership dei dati immessi nella blockchain14
2.3.3
Caratteristiche
Come le soluzioni che non fanno uso di blockchain, questi prodotti forniscono strumenti per migliorare il business ma ciò che veramente viene fornito da questo tipo di prodotto è l’ecosistema che favorisce la collaborazione tra gli attori della filiera con lo scopo comune di garantire la qualità e la trasparenza del prodotto fino al momento dell’acquisto da parte del consumatore.
2.3.4
Focus
Il focus di questi prodotti è su:
• trasparenza
• responsabilità
13
nel caso di impiego di una blockchain pubblica
14
nel caso di impiego di una blockchain permissioned. risultati simili si possono ottenere anche su blockchain pubblica tramite accorgimenti appositi.
• autenticità (intesa come prodotti non contraffatti)
• sostenibilità energetica
• sostenibilità sociale
• riduzione degli sprechi
2.3.5
Considerazioni
È subito evidente come queste soluzioni siano molto più diffuse e adottate rispetto a soluzio- ni che non fanno uso di blockchain. Sicuramente l’hype riguardante questo tipo di tecnologia è favorevole alla nascita ed alla crescita di aziende che sviluppano prodotti che fanno uso di blockchain. Sicuramente il focus più orientato al consumatore a ad aspetti sociale ed ecologici favorisce l’adozione da parte degli attori della filiera e la fruizione da parte dei consumatori. Una caratteristica comune è che tutti questi prodotti sono studiati per il trac- ciamento anche molto dettagliato di filiere abbastanza complesse a cui partecipano aziende di grandi dimensioni.
2.4
IPFS
IPFS (Inter Planetary File System), è un protocollo tramite il quale è possibile mettere in comunicazione vari nodi della rete che mettono a disposizione dello storage in cui mante- nere i file di un file system distribuito. IPFS, a differenza di HTTP, non utilizza dei percorsi per descrivere dove si trova il file che stiamo cercando si trovi. Al contrario, IPFS, utilizza un metodo chiamato content addressing per cui ad ogni file è associato un hash che viene calcolato applicando una funzione di hashing al contenuto del file stesso. In questo modo l’hash è univoco per ogni file e quindi l’hash può essere utilizzato anche come id del file stesso.
Gli hash di IPFS sono chiamati multihash che è un id che contiene anche informazioni riguardo l’algoritmo che è stato utilizzato per calcolare l’hash stesso. Lo scopo di questa complicazione è che tramite multihash si può puntare a file il cui hash è stato calcolato con funzioni diverse. Questo aumenta l’interoperabilità e permette di sostituire l’algoritmo nel caso venisse scoperto che non è più sicuro come si pensava al momento in cui l’hash era stato creato.
IPFS utilizza IPLD (Inter Planetary Linked Data) e i Merkle Tree già descritti nella sezio- ne 1.4.5 che sono alla base delle tecnologie DLT. IPLD consiste in un meccanismo necessa- rio a suddividere file grandi in porzioni di file che sono salvate e indirizzabili individualmente nella rete ma che, attraverso dei link, sia possibile ricostruire il file originale. Ogni file, se di dimensioni superiori a 256kB, viene suddiviso in diversi file ognuno dei quali ha un suo hash. Esiste un nodo del DAG, che ha un suo hash, che noi interroghiamo per avere il
file intero. Questo nodo, oltre al suo indirizzo, ha un array di link ai nodi del DAG a cui si trovano le sue parti. I nodi hanno anche una dimensione che è uguale alla somma della dimenesione dei suoi dati più le dimensioni dei dati a cui i link puntano.
Linked Data è un concetto che sta alla base del web decentralizzato. Uno dei vandaggi di IPFS è la deduplication che consiste nel fatto che caricando due copie identiche di un file15, l’hash sarà identico. Quindi nella rete IPFS non esisterà la necessità di occupare più volte lo storage per tenere copie identiche dello stesso file.
IPFS ha anche un sistema per fare in modo che quando aggiorno il contenuto di un file, siccome l’hash cambia, lo stesso non sarebbe più raggiungibile all’indirizzo originale16.IPNS (Inter Planetary Naming System) permette di inserire un file su IPFS e associargli un hash "statico" nel senso che a quell’indirizzo troviamo l’indirizzo dell’ultima versione del file.
Un vantaggio di IPFS è, come in tutti i sistemi decentralizzati, che il sistema non dipen- de dallo stato di un determinato nodo per poter funzionare. Per esempio se un server fosse in stato di non funzionamento non sarebbe possibile consultare un documento che questo server ha il compito di fornire. Con IPFS si può presumere che questo file sia fornibile da un nodo tra quelli attivi, non dipendendo quindi dallo stato di un nodo specifico.
15che possono essere visti anche come due file con lo stesso contenuto 16
si pensi per esempio ad una nuova release di un documento di cui noi abbiamo garantito l’accesso tramite ad un determinato indirizzo. sarebbe necessario, ad ogni aggiornamento, informare tutti gli utilizzatori di utilizzare un nuovo indirizzo. e se questi utilizzatori fossero altri software?
Capitolo 3
Soluzione
Uno degli obiettivi del progetto, elencati nella sezione 1.3, è proporre un prototipo di sempli- ce utilizzo i cui dati siano persistiti su blockchain. Nel seguente capitolo viene presentato il risultato di questa fase del progetto. Il software non si prefigge di essere pronto per essere messo in produzione ma, piuttosto, lo scopo è di proporre una struttura grafica e architet- turale che possa essere utilizzata come base su cui ragionare per definire i requisiti per un progetto diverso che si proponga di soddisfare le necessità del committente e della filiera. Il processo di sviluppo del software di seguito descritto è stato fondamentale anche per il raggiungimento degli altri obiettivi. Non sarebbe infatti stato possibile addentrarsi sufficien- temente nel contesto da poter suggerire come affrontare la soluzione di dettagli funzionali e tecnologici.
3.1
Definizione finalità progetto
In questa sezione viene descritto come si è pensato di affrontare il progetto per raggiungere gli obiettivi in accordo con lo scopo del committente.
Per quanto riguarda la fase di descrizione del contesto e raccolta delle informazioni necessarie a rispondere ai quesiti posti, è stato letto ed elaborato molto materiale inerente l’aspetto tecnologico per lo studio di una soluzione.
Il progetto sviluppato è un’applicazione web sviluppata in Node.js che utilizza il fra- mework Express e il template engine Handlebars. Altri packages utilizzati sono:
• axios per fare chiamate http sia dal browser verso il server web che dal server web
verso gli altri servizi che verranno descritti di seguito
• bs58 e sha2 per gestire gli aspetti crittografici dei cid di IPFS
• ipfs-mini per dialogare con il nodo ipfs installato su VPS (Virtual Private Server)
dedicato
• qrcode per generare i QR code da applicare sulle etichette dei prodotti