Sviluppare applicazioni per Blockchain: da dove si parte
Indice dell'articolo
Da quando le criptovalute hanno fatto il loro ingresso nella società, anche il termine blockchain è diventato assolutamente popolare. Questa tecnologia infatti è nata contemporaneamente al Bitcoin e quindi al concetto stesso di criptovaluta. Originariamente, la blockchain nasce come sistema di memorizzazione di Bitcoin ma col tempo ha dimostrato così tante potenzialità che Bitcoin stesso è iniziato a sembrare solo una delle tante possibili applicazioni della blockchain.
Una blockchain è una versione elettronica di un libro mastro in cui vengono registrate transazioni in maniera permanente e immutabile. Se si pensa al mondo delle criptovalute, tali transazioni corrispondono ai passaggi di valore, ma in generale queste possono riguardare annotazioni di dati di qualsiasi tipo, che si vogliano scrivere in modo permanente.
Una delle caratteristiche salienti della blockchain è che rappresenta una struttura decentralizzata, ovvero non accumula informazioni a livello centrale detenute da un unico amministratore. Con la blockchain il meccanismo della fiducia è distribuito. Le transazioni vengono raccolte in blocchi, protetti e autenticati con crittografia, che costituiscono quella catena che prende appunto il nome di “blockchain”. Tutto ciò sarà gestito da una rete di nodi ognuno dei quali possiederà una copia intera della blockchain: in questo modo nessuno sarà in grado di manomettere i dati presenti al suo interno.
dApp: applicazioni decentralizzate
Le blockchain sono quindi un sistema di memorizzazione efficiente ma al contempo offrono un modo per poter eseguire passaggi di valore, che sono in genere nominati nella criptovaluta corrispondente. Per esempio, una delle blockchain che ha maggiormente attratto i programmatori è quella di Ethereum, associata alla criptovaluta ether (ETH), ma portatrice anche dell’interessante costrutto degli Smart Contract. Con essi, è possibile realizzare delle dApp (decentralized App) realizzate con il linguaggio Solidity in cui tutte le funzionalità sono raccolte in uno Smart Contract e con cui interfacce web possono dialogare tramite apposite librerie. Chi dovesse provenire dallo sviluppo web, potrebbe associare concettualmente questi Smart Contract alle API REST in grado di offrire un tramite verso un sistema server.
Il paragone è assolutamente sensato. Gli Smart Contract possono essere infatti considerati un’interfaccia di programmazione che permette a pagine web o applicazioni client di interagire con una blockchain salvandovi dati, ma anche gestendo passaggi di valore con criptovalute. Inoltre, non tutti i dati, soprattutto in grandi quantità, sono adatti per essere salvati su blockchain o ne hanno necessità. Questi scenari applicativi possono quindi essere estesi per integrare nelle applicazioni dati di diverso tipo, per esempio facendo storage di file e database che sono in qualche modo collegati alla blockchain.
Sviluppare dApp senza scambiare criptovalute
Il problema di iniziare a sviluppare dApp consiste per lo più nella necessità di impiegare criptovalute e avere a disposizione una blockchain: questo rischierebbe di fermare la sperimentazione che può essere attuata all’interno di aziende o da singoli professionisti.
Fortunatamente, esistono piattaforme di test semplicemente installabili che possono essere utilizzate per la sperimentazione di Smart Contract senza avere a disposizione una reale blockchain o delle criptovalute.
Essenzialmente, dobbiamo organizzarci su due step: il primo consiste nell’imparare il linguaggio Solidity, il secondo nel mettere a disposizione un ambiente di test con blockchain e ether di simulazione.
Imparare il linguaggio Solidity
Il linguaggio Solidity ha una propria sintassi che non risulta particolarmente complessa soprattutto per chi ha già alle spalle esperienza da programmatore. Lo si può studiare gratuitamente grazie al progetto Remix che mette a disposizione un IDE online completo e molto efficiente.
Il primo impatto con il linguaggio sarà piuttosto amichevole infatti si costruiranno sin da subito degli Smart Contract all’interno di una struttura sintattica che prende il nome di contract.
Lo studio procederà con la conoscenza dei tipi di dato, dei costrutti condizionali, dei cicli, enum, struct e una serie di altri concetti tra cui alcuni spunti particolarmente interessanti come l’ereditarietà applicabile tra Smart Contract e la gestione degli eventi.
Fino a questo punto Solidity potrebbe sembrare un linguaggio come un altro ma una volta presa confidenza con la sua sintassi di base è necessario iniziare ad affrontare gli aspetti maggiormente legati al mondo della blockchain. Sarà necessario infatti prendere confidenza con gli indirizzi (immaginiamoli, per semplificare, come una sorta di IBAN per gli scambi di valore in criptovalute ma rappresentano molto di più) e operazioni di trasferimento di valore vero e proprio.
Per entrare in questo ambito, è indispensabile disporre di una blockchain e di criptovalute ma gli strumenti che vedremo permetteranno di avere il tutto in un ambiente di test senza alcun investimento.
Allestire un ambiente di test per blockchain
Per assurgere a questo scopo, esistono vari strumenti ma qui presentiamo un’accoppiata molto nota, composta da Truffle Suite e Ganache. Il primo è un ambiente completo per la gestione di Smart Contract comprendendo anche compilazione, debug e deploy.
Il suo avvio è tra l’altro semplicissimo in quanto si basa su Node.js, un diffusissimo runtime con cui possiamo utilizzare JavaScript al di fuori del browser. Per mettere il tutto al lavoro, basterà quindi installare Node.js e avviare al suo interno Truffle come una normale libreria.
Ganache invece mette a disposizione una blockchain di prova con una chiara interfaccia in cui vengono mostrati dieci conti ognuno con il proprio indirizzo e con un saldo che è pari a 100 eth. La figura che segue ne fornisce un’idea molto chiara.
Grazie a questa coppia di strumenti potremo contemporaneamente sviluppare una nostra dApp, metterla al lavoro, utilizzarla per normali interazioni anche dell’interfaccia web e sperimentare contestualmente lo scambio di valori.
Per condurre infatti una completa sperimentazione dovremmo utilizzare gli Smart Contract come interfacce per la gestione dell’interazione con gli utenti da un punto di vista applicativo facendo corrispondere ad alcune di queste operazioni dei pagamenti in criptovalute. Per esempio potremmo immaginare di gestire, tramite un’interfaccia web, un sito di donazioni. Tali donazioni rappresenterebbero le transazioni da registrare nei blocchi della blockchain e pertanto porterebbero con sè contemporaneamente sia i dati relativi alla donazione sia l’importo della donazione che viene accumulato su uno dei conti di prova che Ganache mette a disposizione.
Parte della sperimentazione, come già anticipato, potrebbe essere l’affiancamento di ulteriori sistemi di memorizzazione di massa alla blockchain in modo da registrare su questa solo le transazioni vere e proprie e immettere, per esempio, su database un insieme più ampio di informazioni non strettamente legate alla transazione economica.
Immaginiamo per quest’ultimo caso una sorta di e-commerce che concederebbe lo scaricamento di un file PDF – supponiamo un e-book – direttamente dal proprio storage registrando tutti i dati del cliente sul database ma gestendo la transazione in criptovalute sulla blockchain. Utilizzeremmo così tre tipologie di memorizzazione diverse – blockchain, file e database – tutte a corredo dello stesso applicativo arricchendo il tutto con un meccanismo di scambio di valore nativo.
Conclusioni
Questa breve introduzione ha cercato di trasmettere non solo l’importanza della blockchain negli scenari attuali ma anche la facilità con cui si può iniziare a sperimentare grazie agli strumenti che permettono di addestrare programmatori senza il bisogno di una reale blockchain nè di criptovalute.
Il primo passo sarà proprio pensare ai propri business e iniziare a pensare a quali di questi possa essere applicata questa fantastica tecnologia per poi immaginare molti altri scenari possibili da proporre ai propri clienti.