Come creare contratti con Solidity per la blockchain Ethereum

pittogramma Zerouno

Tech InDepth

Come creare contratti con Solidity per la blockchain Ethereum

Una guida per iniziare a programmare in Solidity, il linguaggio della blockchain Ethereum, e integrare gli Smart Contract nella propria infrastruttura IT con l’impiego dell’interfaccia Web3.js.

12 Gen 2022

di Pablo Cerini

Quando Satoshi Nakamoto (o il gruppo celato dietro questo pseudonimo) inventò il Bitcoin, pensò la prima criptovaluta solo come un token scambiabile per mezzo di transazioni digitali, senza che il White Paper prevedesse alcuna possibile interazione oltre alla semplice circolazione di capitale.
Nel 2015, Vitalik Butler ampliò il concetto iniziale del Bitcoin aggiungendo all’idea di token la possibilità di eseguire brevi porzioni di codice. Da questa intuizione nacque Ethereum, una criptovaluta che alla circolazione del token aggiunge anche la possibilità di eseguire Smart Contract. Lo Smart Contract è, appunto, un programma che viene eseguito in automatico nel momento in cui un utente autorizza la transazione.

Come realizzare uno Smart Contract

L’interattività di Ethereum poggia sulla cosiddetta EVM, ossia la Ethereum Virtual Machine. EVM è una sorta di super computer distribuito sulla blockchain, in grado di eseguire codice in maniera decentralizzata. Gli Smart Contract parlano con le librerie che risiedono sulla EVM e vengono abilitati a gestire transazioni e analisi sui dati.
Gli Smart Contract vengono creati in un ambiente di sviluppo chiamato Solidity. Il linguaggio Solidity è stato creato con molte somiglianze al Java Script, per rendere più morbida la curva di apprendimento per i nuovi sviluppatori. Lo sviluppo in Solidity abbraccia due concetti principali: le funzioni, ovvero il codice, e gli stati, ossia i dati. Le funzioni sono responsabili dell’effettiva esecuzione delle istruzioni, mentre lo stato rappresenta i dati che risiedono sulla blockchain, con cui le funzioni interagiscono.
Le funzioni all’interno di uno Smart Contract hanno diverse capacità: possono immagazzinare informazioni, interrogare portafogli digitali (i cosiddetti “wallet”) e spostare coin da un portafoglio all’altro.

WHITEPAPER
Le fasi del mining: stabilire un obiettivo e la criptovaluta. Scopri di più
Blockchain
Criptovalute

La necessità dell’interfaccia

Una volta scritto il nostro programma in Solidity nasce il problema di come fare per utilizzarlo. Per eseguire direttamente gli script in Solidity è necessario avere speciali autorizzazioni o partecipare attivamente alla gestione della blockchain. Nello specifico, occorre avere accesso oppure essere il proprietario di un nodo, ossia uno dei server distribuiti che garantiscono il funzionamento di Ethereum.

Gestire un nodo è un’operazione complessa, sia in termini di competenze informatiche richieste, sia di tempo necessario da dedicare all’attività. Se questo prerequisito fosse necessario per poter interagire con uno Smart Contract, lo sviluppo in ambiente Ethereum diventerebbe un campo limitato a pochi guru di settore, che produrrebbero programmi difficilmente fruibili dal grosso pubblico. Si è perciò resa necessaria l’esistenza di un’interfaccia che permetta di eseguire gli Smart Contract anche in assenza di questi prerequisiti.

L’interfaccia Web3.JS

Quando il team di Ethereum si è interrogato su quale fosse la soluzione migliore per fare accedere il maggior numero possibile di utenti all’ambiente della EVM, la risposta è caduta spontaneamente su un’interfaccia basata sulla navigazione via browser. Hanno perciò creato Web3.JS, che è una collezione di librerie che permettono di interagire con un nodo Ethereum remoto o locale da qualsiasi browser. Le librerie Web3 permettono di invocare gli Smart Contract necessari alla gestione del wallet e delle transazioni in criptovalute, ma arricchiscono le capacità native dell’ambiente Ethereum con funzionalità di accesso allo storage, broadcast, e interazione con altre dApps (Applicazioni Decentralizzate, ossia non residenti su un server, ma distribuite sulla blockchain). Il vantaggio delle librerie Web3.JS è che possono venire richiamate da una qualsiasi pagina HTML, rendendo estremamente semplice la fruibilità degli Smart Contract anche per chi non ha accesso diretto a un nodo della blockchain.

Commissioni di esecuzione

Non esistendo il concetto di installazione su un server centralizzato o su un cloud definito, l’economia dell’ambiente Ethereum è radicalmente differente da quella di qualsiasi altra soluzione software. Per utilizzare le librerie Ethereum non è necessario acquistare una licenza o sottoscrivere un canone. L’ambiente di sviluppo è accessibile gratuitamente e la realizzazione di un’applicazione è senza costo. Il modello economico della blockchain è puramente a consumo: quando uno Smart Contract viene eseguito, all’utente che lo ha chiamato vengono addebitate delle commissioni, che gli vengono scalate direttamente dall’importo di criptovalute che detiene sul proprio portafoglio digitale. Se sul wallet non è presente un importo sufficiente da coprire le commissioni, la transazione richiesta non va a buon fine.

Il futuro con Ethereum 2.0

Uno dei problemi principali dell’ambiente Ethereum sono le alte commissioni di esecuzione addebitate ogni volta che si attiva uno Smart Contract. In questo ultimo anno, con l’aumento dell’interesse verso il mondo delle criptovalute, si è assistito a un incremento esponenziale delle interazioni con gli Smart Contract, che hanno generato diversi disservizi sulla rete Ethereum. Oltre a un rallentamento della velocità delle transazioni, si è assistito anche a un incremento esponenziale delle commissioni. Di fronte alle lamentele di numerosi utenti e alle difficoltà incontrate dai nuovi progetti, il team di sviluppo Ethereum ha messo in cantiere una revisione dell’ambiente, che ha portato alla creazione della blockchain Ethereum 2.0. Questa nuova versione aveva promesso un abbattimento dei costi di transazione, ma da numerosi feedback sembra che il problema sia ancora presente. Il team guidato da Butler è ancora al lavoro per rendere Ethereum un ambiente ottimale in cui sviluppare applicazioni decentralizzate, e fare in modo che EVM possa reggere la competizione con le nuove blockchain come Solana, che offrono alte velocità di esecuzione e commissioni davvero contenute.

Pablo Cerini

Giornalista

Sviluppatore software, cresciuto nel mondo ERP, ma appassionato del mondo DEV a 360°. Affascinato dalla statistica e dal machine learning, con un chiodo fisso per le candele giapponesi

Argomenti trattati

Approfondimenti

B
Bitcoin
Tech InDepth

Articolo 1 di 4