“Blockchain” è un termine che incute ancora timore a una fetta del grande pubblico, che fatica a farsi un’idea di chiara di cosa si nasconda dietro questa tecnologia. Il tutto è molto più semplice di quanto in realtà si creda. La “blockchain” è una tecnica di salvataggio di informazioni, e la si può immaginare come un immenso libro mastro in formato digitale, proprio come quelli del Dare e Avere di quotidiano utilizzo, dove vengono registrate delle transazioni. La differenza principale, rispetto ai “mastrini” a cui siamo abituati, è che sulla blockchain ogni transazione viene crittografata e resa immutabile grazie al fatto di essere concatenata in modo indissolubile a un’altra transazione (da cui il concetto di “catena”). Ci sono poi delle sottigliezze tecniche, legate all’ottimizzazione della velocità delle registrazioni o a diverse gestioni dell’immagazzinamento dei dati, ma il concetto fondamentale è che, quando parliamo di blockchain, ci stiamo riferendo a un immenso archivio di transazioni crittografate e non modificabili.
Che cosa si intende per Web 3.0
Grazie alla sua natura digitale, la blockchain nel corso degli anni si è evoluta da semplice database di registrazioni a un ambiente di sviluppo capace di ospitare diversi tipi di applicazioni dedicate ai più svariati scopi, dalla finanza allo storage di file. Questo è stato possibile grazie all’introduzione degli Smart Contract, ossia porzioni di codice eseguibile nello spazio della blockchain. Gli Smart Contract sono programmabili esattamente come delle qualsiasi applicazione, espongono proprietà e metodi, e ci sono diversi linguaggi di programmazione dedicati al loro sviluppo, che cambiano a seconda della blockchain con cui devono interagire.
La programmabilità della blockchain ha dato origine al fenomeno noto oggi come Web 3.0, ossia quella costellazione di applicazioni ospitate su un’interfaccia web capaci però di eseguire Smart Contract sulla blockchain.
Front end e back end nel mondo blockchain
Il pattern di sviluppo sulla blockchain prevede, come le applicazioni più diffuse oggigiorno, una suddivisione tra un’interfaccia front end, che permette all’utente di visualizzare i dati e di lanciare richieste di modifica, e un motore back end, che si occupa di eseguire le effettive operazioni CRUD sulla blockchain. Non essendo i linguaggi dedicati allo sviluppo web in grado di interagire con la blockchain, è stato necessario arricchirli con delle librerie dedicate al lancio di comandi interpretabili dai nodi validatori, ossia quei server della blockchain in grado di manipolare effettivamente le informazioni crittografate.
Si può immaginare un nodo validatore esattamente come un endpoint di un servizio web, che riceve istruzioni tramite chiamate asincrone, e le esegue compiendo una scrittura su un archivio (in questo caso la blockchain) oppure restituendo delle informazioni. Il primo e più diffuso di questi linguaggi è stato Web3.JS, ossia l’ambiente di sviluppo creato dalla Ethereum Foundation per permettere di realizzare interfacce per la blockchain Ethereum.
Come integrare Web3.JS nel tuo sito web
Arricchire il proprio sito web con la possibilità di interagire con la blockchain è un’attività tutto sommato indolore. Web3.JS è distribuito nella forma di un modulo Javascript, che si può incorporare nel proprio progetto con un’utility di gestione pacchetti come NPM. Ci sono diverse librerie che compongono Web3.JS, ognuna specializzata in un determinato ambito funzionale della blockchain. Ci sono funzioni dedicate all’interazione con il wallet, ossia il portafoglio digitale in cui un utente conserva il saldo dei propri asset, funzioni specializzate nelle comunicazioni asincrone con i nodi della rete, funzioni di storage capaci di gestire il salvataggio di dati e file in modo sicuro e crittografato. Web3.JS è correlato da un’esauriente documentazione che illustra nel dettaglio come creare istanze delle classi di ogni modulo, accedere alle loro proprietà, e inviare istruzioni ai nodi della blockchain. Web3.JS è nato inizialmente per la blockchain Ethereum, ma la sua capacità di imporsi come standard è stata tale da essere portato su altre blockchain, che ne hanno una loro versione dedicata, come ad esempio Solana, in modo da permettere agli sviluppatori di avere riferimenti già noti anche lavorando al di fuori di Ethereum.
Background tecnico di Web3.JS
Come già scritto, Web3.JS non si occupa dell’effettiva creazione dello Smart Contract, attività da effettuarsi con Solidity o con l’equivalente ambiente di sviluppo per blockchain non Ethereum. Lo scopo di Web3.JS è di realizzare siti web o client in grado di interagire con la blockchain, cioè che siano in grado di leggere e scrivere informazioni tramite gli Smart Contract.
Per capire l’operatività di Web3.JS in relazione agli Smart Contract, l’analogia migliore è di pensare al funzionamento di una chiamata AJAX. Web3.JS parla con la blockchain per mezzo di una chiamata JSON RPC, cioè con un protocollo basato su Remote Procedure Call. Ethereum è una rete P2P che immagazzina una copia di tutti i dati presenti sulla blockchain in nodi, interrogabili singolarmente per mezzo delle chiamate JSON RPC.
Il meccanismo finale è molto simile all’utilizzo di una libreria come Jquery per fare operazioni di lettura e scrittura dati per mezzo di API web che supportino il protocollo JSON. Per utilizzare Web3.JS non è obbligatoriamente necessario avere un proprio nodo di rete, ma è possibile anche collegarsi a un nodo della blockchain tramite utility realizzate proprio per questo scopo, come ad esempio Infura, che permettono con una veloce configurazione di effettuare chiamate JSON RPC a nodi sulla rete Ethereum senza avere l’obbligo di gestirne uno.