Piattaforma K: un esempio di applicazione blockchain

Piattaforma K: un esempio di applicazione blockchain

La Piattaforma K è la piattaforma, realizzata da KNOBS, che permette la creazione di un wallet e la ricezione di token senza necessità di avere e spendere criptovalute per eseguire l’operazione.

I token digitali sono asset trasferibili e programmabili che rappresentano uno degli strumenti più interessanti e promettenti della tecnologia blockchain in quanto si prestano ad un ampio utilizzo su applicazioni di diversa tipologia.

In questo post presentiamo il processo utilizzato per la distribuzione di token digitali agli utenti sfruttando l’utilizzo di gettoni fisici. Lo scopo è rendere estremamente semplice ed intuitivo il procedimento di onboarding per utenti finali, non ancora necessariamente familiari a strumenti e concetti della tecnologia blockchain.

Perché è stata realizzata, a cosa può servire e perché è assolutamente interessante?

Questo è proprio l’argomento del post. Cercheremo di rispondere a queste domande in modo chiaro e comprensibile. E nel farlo descriveremo la Piattaforma K, che di fatto è a tutti gli effetti un caso d’uso reale della blockchain.

Hai presente quella domanda: “interessante questa blockchain, ma cosa posso farci?”, in questo caso vedremo insieme un esempio concreto.

In un post precedente di questo blog, abbiamo cercato di dare una visione dall’alto di cos’è la blockchain e del perché può essere utile, ed abbiamo cercato di utilizzare un linguaggio semplice, cercando al contempo di non trascurare nessun concetto. Puoi dare un occhio al post a questo link: “cos’è la blockchain in parole semplici”.

Grazie alla piattaforma K, possiamo vedere insieme uno use case implementato sulla blockchain Ethereum. Il caso d’uso riguarda la piattaforma utilizzata durante la giornata di presentazione finale dell’Osservatorio Blockchain & DLT del Politecnico di Milano nel mese di gennaio 2020 a conclusione dell’anno di ricerca.

Con spirito misto tra il romantico ed il markettaro, abbiamo deciso di chiamare questo progetto “Piattaforma K”.

INDICE ARGOMENTI

1) Blockchain. Ecco un'applicazione reale!

Come entrare in possesso di un documento pdf (o report) mediante la blockchain in modo da poterne dimostrare il possesso?

Questa era la domanda principale a cui abbiamo cercato di rispondere tramite la realizzazione della nostra piattaforma.

Prova ad immaginare: come facciamo tipicamente quando dobbiamo condividere un documento pdf con qualcuno?

Con un link che punta a Google Drive. Oppure carichiamo il pdf in un’area FTP. Oppure Dropbox. O usiamo WeTransfer. Se pesa poco possiamo inviarlo anche per email. Ma niente di tutto ciò è certificabile. Chiunque, volendo, potrebbe inoltrare il documento a chi vuole, farsene una copia, dire che il documento è ed è sempre stato suo … insomma, qualsiasi cosa.

Nel nostro caso, invece, l’obiettivo è quello di poter dimostrare che una certa persona (o un certo indirizzo) sia effettivamente in possesso di un certo documento in un determinato momento. Un ottimo sistema per risolvere questo problema viene offerto dalla blockchain.

2) Lo use case della piattaforma K.

La Piattaforma K è nata ragionando su come poter supportare l’Osservatorio Blockchain e Distributed Ledger del Politecnico di Milano per la giornata conclusiva dell’anno di ricerca 2019/2020.

Si tratta di un’occasione importante: ci sono molti invitati, tutti interessati alle tematiche blockchain e c’è la necessità di dare a ciascuno il report finale dell’Osservatorio. In formato digitale ovviamente.

E se potessimo fare in modo che le persone non solo possano scaricare il report, ma poi possano dimostrare di averlo fatto e di essere in possesso di quello specifico report?

Potrebbe sembrare un’applicazione di poco conto se parliamo di un documento semplice, magari senza valore legale. Ma prova a immaginare lo stesso problema applicato per esempio ad un documento di proprietà o su un contratto. Poter dimostrare in modo certo e senza possibilità di corruzione del sistema, di essere in possesso di un documento che certifica la proprietà di un bene.

Se solo ci fosse qualcosa in grado di permettere tutto questo… in effetti esiste. Si chiama blockchain. 

Per il problema dei report dell’Osservatorio, la soluzione che abbiamo creato si avvale di uno Smart Contract su Ethereum che, se invocato, invia dei token alle persone (o meglio agli indirizzi dei wallet che “firmano digitalmente” il messaggio), che poi potranno utilizzare quel token per scaricare il report e quindi dimostrarne il possesso. Attenzione: i report del nostro use case non sono tutti uguali. Si tratta di report numerati. Quindi l’utente non avrà il possesso di un report generico ma ad esempio proprio del report numero 3. E di report numero 3 ne esiste solo una copia al mondo.

Detto così sembra molto semplice. In verità si aprono un milione di domande ed obiezioni. 

Esempio: non tutti gli ospiti presenti alla giornata conclusiva dell’osservatorio, così come del resto la stragrande maggioranza delle persone, hanno un wallet. 

Un ulteriore problema che occorre affrontare quando si crea un wallet, è che occorre anche inserire delle criptovalute all’interno del wallet per poter compiere delle operazioni (ad esempio “reclamare” il proprio token). Magari molti di noi hanno avuto modo di creare un wallet, ma comprare ether o bitcoin è un passaggio successivo e non scontato (e costa!). Non tutti hanno ether sul proprio wallet. Ma le transazioni su blockchain vanno pagate (come abbiamo accennato in questo post). Se voglio che gli utenti possano richiedere un token occorre pagare l’operazione, ovvero quando chiedo ad uno Smart Contract di inviare un token sul mio wallet, devo spendere dei soldi per fare in modo che l’operazione venga eseguita. Inoltre non tutti potrebbero essere disposti a pagare per ricevere il report. 

Ulteriore problematica: l’intento principale del progetto è di rendere il sistema assolutamente imparziale, corretto, trasparente, inattaccabile e decentralizzato. Anche la sola operazione di creare un wallet si potrebbe scontrare con la tentazione di un custodial wallet. 

Un custodial wallet è basato su un’architettura in cui un intermediario detiene chiave pubblica e chiave privata del wallet ma provvede nel fornire all’utente un’interfaccia di facile utilizzo. I custodial wallet sono la soluzione più diffusa sul mercato per detenere il possesso di un wallet. I custodial wallet hanno però come punto debole principale il fatto di scivolare verso un ritorno alla “centralizzazione” del sistema introducendo ulteriori attori garanti (in questo caso chi detiene per tua comodità di utilizzo chiave pubblica e privata).

Ma l’obiettivo del progetto è di proporre un sistema che consenta la distribuzione di token attraverso l’utilizzo di QR code e che non richieda, da parte dell’utente, il possesso di software particolari o di conoscenze approfondite sulla blockchain.

Come colmare i vuoti del sistema

Ecco quindi le principali proprietà che abbiamo voluto colmare grazie all’implementazione della Piattaforma K:

 

Frizione minima dell’utente per il processo di onboarding

Nessun wallet deve essere richiesto prima di procedere al processo di onboarding, così come nessun altro strumento. Allo stesso modo non deve essere richiesto il pagamento di nessuna fee per poter ricevere un token associato ad uno dei report dell’Osservatorio.

 

Sistema decentralizzato

Il sistema deve poter essere decentralizzato: le chiavi pubbliche e private dell’utente non devono essere conosciute o custodite da nessuno al di fuori dell’utente a cui appartiene il wallet. Breve parentesi: se non conosci il concetto di chiave pubblica e chiave privata immagina questo, per semplicità: la chiave pubblica è l’indirizzo del wallet, come se fosse il codice IBAN. Mentre la chiave privata è come se fosse la password che serve per accedere al tuo wallet.

 

Massima trasparenza

Deve essere possibile assegnare i report agli utenti in modo del tutto casuale, come in una lotteria imparziale dove decide la sorte.

KNOBS | token per piattaforma K blockchain

3) La semplicità dell'esperienza utente

Prima di vedere insieme qualche dettaglio relativo all’architettura del sistema, per comprendere la facilità di utilizzo della Piattaforma K dal punto di vista dell’utente finale, vogliamo descrivere la semplicità dei passaggi compiuti dall’utente.

Perché è importante questo aspetto?
Perché nonostante la tecnologia sottostante e le sfide risolte dalla Piattaforma K, l’esperienza utente non viene assolutamente intaccata. Anzi, come accennato (e come vedremo meglio ora) il processo di onboarding per l’utente è assolutamente semplice ed intuitivo.

Ecco ciò che avviene lato utente: 

  • L’utente riceve un gettone di plastica con un QR code stampato.
  • L’utente scansiona il QR code con il proprio smartphone.
  • Compare un popup che chiede all’utente se vuole aprire il link tramite web browser.
  • Il browser fa un redirect indirizzando l’utente verso un’applicazione web.
  • L’applicazione web su cui l’utente atterra dopo il redirect chiede all’utente la di compiere i seguenti passaggi:
    • cliccare sul bottone per creare un nuovo account (un nuovo wallet)
    • cliccare sul bottone per richiedere il riscatto del token associato al QR code
  • L’applicazione notifica l’utente che il token richiesto è stato ricevuto sul proprio wallet.
  • L’utente può cliccare su download e scaricare la sua copia del report

Alla fine di questo processo semplice ed intuitivo, l’utente è proprietario del token e può utilizzarlo per effettuare il download del report personalizzato ad esso associato. Tra le altre funzionalità presenti, la Piattaforma K permette all’utente di esportare le credenziali del proprio wallet in modo da poter trasferire il wallet stesso su altre applicazioni (come ad esempio Metamask). 

4) L'architettura del sistema della piattaforma K.

Quella appena descritta è l’esperienza utente. In pochi click e senza quasi accorgersene l’utente ha potuto interagire con la blockchain di Ethereum, creare un wallet, riscattare un token. Semplice a dirsi ed a farsi…per l’utente. Ma il meccanismo che regola queste azioni, rispettando i principi di massima trasparenza e decentralizzazione enunciati sopra, non è così semplice. Ecco cosa avviene dietro le quinte.

 

Creare dei QR code e dei non-custodial wallet! 

Tutto inizia da dei semplici QR code. Dei QR code stampati su 500 gettoni di plastica (come il numero degli invitati all’evento) che chiunque può prendere e toccare, dei gettoni fisici. 

Un QR code permette di fare una cosa molto semplice: indirizzare ad una determinata pagina web. E così è anche nel caso dei nostri QR code. Ogni QR code indirizza alla stessa pagina, quella della Piattaforma K, ma ogni QR code contiene anche un’informazione diversa. 

Quale informazione? Ogni token è collegato ad una precisa chiave pubblica di una particolare credenziale, di uno specifico wallet. Il QR code è creato combinando l’indirizzo della pagina della web application (a cui ogni QR code rimanda) con una chiave privata. Ogni chiave privata corrisponde alla chiave pubblica della credenziale a cui è associata. È come se nel QR code di ogni gettone fosse nascosta la password associata al codice IBAN a cui quella password corrisponde. Tu inquadri il QR code e vieni catapultato all’interno di un conto corrente di cui hai la password già in mano. 

Una cosa molto importante: a ciascun QR code è associato un token distribuito tramite Ethereum. Il token però non è associato di default ad un report specifico. Cosa significa? Vuol dire che se io ho il gettone numero 1, non è detto che riceverò il report numero 1.

 

Gestione dell’indirizzo URL

Il file HTML della pagina web a cui l’utente viene indirizzato, viene fornito grazie al sistema IPFS (Interplanetary File System). Abbiamo fatto un esperimento molto interessante utilizzando IPFS e blockchain e ne abbiamo parlato in questo post, dove puoi trovare anche una spiegazione dettagliata di cosa sia IPFS. Per ora possiamo riassumere IPFS in questo modo: un archivio web decentralizzato che presenta due caratteristiche importanti per il nostro esperimento: 

  • essendo IPFS uno spazio di archiviazione file decentralizzato, evita il problema della centralizzazione delle informazioni su un unico server.
  • garantisce all’utente che l’applicazione che sta utilizzando sul proprio browser non è stata alterata / modificata / hackerata da nessuno in quanto i file all’interno di IPFS sono indicizzati tramite l’HASH del proprio contenuto (se la cosa ti crea un po’ di confusione ti consiglio di visitare questa pagina per dissipare la nebbia: knobs.eth.link)

Lo Smart Contract, nel momento in cui riceve una chiamata ad emettere un token, attiva una funzione del contratto che in modo casuale sorteggia un report tra i 500 disponibili. In questo modo non è possibile prevedere deterministicamente, basandosi sul QR code in nostro possesso, quale token riceverò nel momento in cui farò richiesta di scaricare un report.

Per semplificare l’associazione report-token, abbiamo deciso di utilizzare dei token ERC721. Si tratta di token non fungibili, unici, ma facilmente trasferibili. Tipicamente si tratta di una tipologia di token che rappresenta un bene preciso ed unico, come appunto può essere il possesso di un report numerato dell’Osservatorio Blockchain del Politecnico di Milano. Vedremo meglio questo concetto più avanti.

Quindi ogni token, una volta creato all’interno dello Smart Contract ed associato all’utente che l’ha richiesto, fa riferimento ad uno  specifico report (estratto casualmente dallo Smart Contract) e ne rappresenta il possesso.

Ma attenzione, abbiamo ancora un problema. Dicevamo poco sopra che non tutti hanno un wallet … come fare? Scansionando il QR code accade la prima magia. La piattaforma K in verità si comporta come un wallet. Come il tuo portafoglio digitale che ti permette di ricevere ed eventualmente scambiare token e criptovalute. 

Quindi la cosa davvero interessante è questa: anche se non hai un wallet (essenziale per ricevere i token), ti basta cliccare su “Crea Wallet” per creare istantaneamente il tuo wallet su Ethereum all’interno del browser con cui stai navigando ed ottenere la tua copia di chiave pubblica e chiave privata. 

Senza nessuna fatica, nessun lungo processo, nessuna complicazione, nessun dato da fornire. Ti basta un click ed ecco che si crea il tuo wallet non-custodial (ovvero un tipo di wallet decentralizzato) direttamente all’interno del tuo browser. 

In questo modo hai tutto quello che ti serve per poter ricevere il token.

KNOBS | use case blockchain piattaforma K

Nella foto qui sopra viene riportata la schermata iniziale della Piattafroma K da cui è possibile creare il proprio wallet semplicemente cliccando sul bottone “Crea wallet”. Lo screenshot rappresentava la pagina web a cui venivi indirizzato scansionando il QR code presente sul gettone dell’immagine precedente.

 

Generare dei token non fungibili associati ad un report unico. 

Una volta creato il proprio wallet è possibile cliccare su “richiedi token”.

In questo modo viene chiamata la funzione dello Smart Contract che genera e rilascia un token KDT. KDT è un nome arbitrario deciso internamente dal team per nominare i token generati dallo Smart Contract della piattaforma K. 

KDT sta per “KNOBS Demo Token”. 

Ora che hai un token KDT significa che hai il possesso di un report associato a quel token ed hai diritto a scaricare il tuo report personalizzato.

Perchè personalizzato? Perchè i report sono tutti diversi uno dall’altro per due motivi. 

1 – come abbiamo detto sopra, ogni report è numerato;

2 – Inoltre, una piccola percentuale di report ha una copertina diversa dagli altri. Li abbiamo chiamati “Golden Report”. 

Il token viene distribuito da uno Smart Contract creato ad hoc e può essere riscattato solo dagli utenti che dimostrano di averne il diritto. In che modo? 

Lo Smart Contract implementa dei token non fungibili e ad ognuno di essi associa un pdf contenente un report dell’Osservatorio. Inoltre lo stesso Smart Contract contiene al suo interno un set di chiavi pubbliche che rappresentano gli utenti abilitati a richiedere il riscatto del token.

Tutti i report dell’Osservatorio sono precedentemente archiviati su IPFS (vedi sopra). In questo modo ad ogni documento è associato un HASH che viene registrato su blockchain e associato ad ogni nuovo token non fungibile stampato dallo Smart Contract. I token non fungibili (a cui è associato l’HASH di un report specifico) e le chiavi pubbliche sono archiviate in due liste differenti e sono associate tra loro in modo dinamico durante il processo di riscatto del token. Questo vuol dire che l’associazione tra il token ed una certa chiave pubblica viene effettuata in modo casuale durante il processo di generazione del token non fungibile. La chiave pubblica corrispondente ad una chiave privata può essere in questo modo distribuita agli utenti e potrà essere utilizzata per generare una firma che dimostra il diritto ad ottenere il proprio token. 

Complesso? Sì, ma proviamo a semplificare in questo modo: scansionando il QR code (che contiene la password per autenticarti) vieni indirizzato su una pagina in cui puoi creare un conto corrente che a questo punto diventa tuo in quanto solo tu conosci la sua chiave privata (una volta dentro il conto corrente puoi vedere sia il codice IBAN, la chiave pubblica, che la sua password, la chiave privata). 

Nel momento in cui clicchi sul tasto che ti permette di richiedere il tuo token, invii un messaggio, firmato con la tua password segreta stampata sul Qr code che serve solo per per autenticarti. Il messaggio contiene la richiesta di inviare il token a un certo IBAN, che è proprio quello del conto corrente che hai appena generato all’interno della piattaforma. 

Quando lo Smart Contract riceve, da qualunque mittente, un messaggio di questo tipo, verifica che sia firmato correttamente dalla password segreta stampata sul corrispondente QR code, e poi assegna all’indirizzo del codice IBAN contenuto nel messaggio un token non fungibile (che rappresenta il possesso di un pdf) scelto in modo casuale. Una volta ricevuto il tuo token sul tuo conto corrente personale, cliccando su “download” puoi scaricare il pdf unico associato al token di cui sei ora in possesso.

In questa schermata puoi vedere come si presenta l’interfaccia di un wallet. La prima stringa alfanumerica che vedi in alto è l’indirizzo del tuo wallet, il tuo codice IBAN a cui chiedere la spedizione di un token. Il saldo di Ether e di token al momento della creazione del wallet ovviamente è a zero: 0 ETH e 0 KDT token. Cliccando però sul bottone verde “Richiedi Token”, ricevi sul tuo wallet il token KDT ed il saldo viene aggiornato a 1.

Cosa significa token non fungibile? 

Una divisione basica ma utile in merito ai tipi di token è quella che divide i token tra fungibili e non fungibili. I token fungibili sono i token interscambiabili tra loro, come se fossero dei dollari. Bitcoin è un token fungibile, una moneta di scambio. I token non fungibili (o ERC721) possono rappresentare invece il possesso di oggetti o asset digitali o fisici unici, uno diverso dagli altri (come il tuo codice fiscale, o un quadro). Nel nostro esempio il possesso di token certifica la proprietà di un report specifico e numerato.

 

Ricevere dei token senza pagare nulla? 

Non proprio. Questo è stato uno di quei grattacapi di cui ti ho raccontato all’inizio del post. 

Non è possibile compiere transazioni su Ethereum senza pagare il “gas”, cioè senza pagare la fee (la tassa richiesta dalla blockchain di Ethereum per effettuare la transazione) al miner che minerà il blocco che contiene la transazione richiedente il token. 

Il costo delle transazioni in questo caso è stato preso in carico da KNOBS. 

Come è possibile? 

Lo Smart Contract che deve rilasciare il token è progettato in modo tale da poter ricevere un messaggio, da qualunque mittente, che deve interpretare per decidere se portare a termine o meno la richiesta di rilascio di un token. In particolare, lo Smart Contract verifica che il messaggio ricevuto sia effettivamente firmato da una delle chiavi private presenti all’interno dei QR code stampati sui gettoni fisici. In caso affermativo, legge all’interno del messaggio l’indirizzo (il nuovo IBAN da te creato) del conto corrente (wallet) a cui deve inviare il token, scelto a caso tra quelli non ancora assegnati.

I possessori dei gettoni possono quindi creare un nuovo conto, e poi firmare il messaggio con la chiave privata contenuta all’interno del QR code stampato sul loro gettone. Il messaggio firmato può essere a quel punto inviato da chiunque (loro stessi o anche un terzo) allo Smart Contract. In quest’ottica, KNOBS ha realizzato un server che rimane in attesa di messaggi firmati, e li inoltra allo Smart Contract non appena ricevuti. L’applicazione presente su IPFS, alla pressione del tasto “richiedi token”, non fa altro che firmare il messaggio ed inviarlo a questo server, che si occuperà quindi di inoltrarlo allo Smart Contract, pagando le commissioni (fee) relative alla transazione verso lo Smart Contract.

KNOBS | Blockchain wallet della piattaforma K

Ogni report ha un HASH diverso. E su Etherscan puoi controllare la transazione.

Verificando nel tuo wallet puoi notare che il report ha un suo hash identificativo (utilizzato come una specie di indice, un indirizzo sulla blockchain) e diverso da quello degli altri report. Se non hai chiaro il concetto di hash puoi leggere questo post.

All’interno del wallet, cliccando su “Controlla su Etherscan”, puoi verificare che la transazione su blockchain tramite cui lo Smart Contract rilascia un token verso il tuo wallet è avvenuta con successo. Questa operazione significa che ora il possesso del token, quindi del report, è tuo.

Etherscan è semplicemente uno dei siti che permettono di vedere, tramite una semplice interfaccia grafica, tutte le transazioni che vengono registrate sulla blockchain Ethereum.

5) Conclusione

Leggendo questo post è molto probabile che ti sia accorto di due cose. 

  1. La prima è che dietro la facilità estrema di utilizzo di un wallet come quello appena descritto, si nasconde in verità un meccanismo molto complesso e possono nascere una serie di problematiche tecniche non indifferenti. 
  2. La seconda questione interessante è la seguente: pensa a quante possibilità si possono aprire provando a ragionare in ottica blockchain. 
    1. Poter emettere degli asset digitali che rappresentano un certo valore (o come in questo caso il possesso di un bene, di un oggetto unico). 
    2. Poter dimostrare in maniera certa di avere il possesso del bene. 
    3. Potersi scambiare facilmente e senza intermediari (pur certificando senza sorta di dubbio, anzi) i token ed il valore da essi rappresentato.

Se ti sembra ancora tutto difficile da capire, non ti preoccupare. 

Possiamo darti due consigli. 

Il primo consiglio è di non perderti troppo nella parte tecnica al momento. Concentrati sul livello macro e pensa alle potenzialità di ciò che stai scoprendo: trasparenza, asset digitali, decentralizzazione, certificazione del possesso di un bene, emissione di token. 

Il secondo consiglio è quello di leggere questo post (link al primo post) in cui proviamo a spiegare in modo semplice cos’è la blockchain. 

Non basta un post per spiegare l’argomento, sarebbe impossibile. Questo è semplicemente il primo passo di un percorso alla scoperta della blockchain, un percorso che possiamo fare insieme. Registrandoti alla nostra newsletter potrai scoprire passo dopo passo tutti gli aspetti e le potenzialità di questa incredibile tecnologia. Riceverai aggiornamenti continui ed approfondimenti tecnici spiegati attraverso un linguaggio semplice e concreto.

Share on facebook
Share on twitter

non perderti tutte le news, i nostri report gratuiti e gli aggiornamenti sui trend blockchain