Smart contract su blockchain Ethereum, cosa sono e come funzionano

L'idea degli smart contract nasce durante la fine degli anni 90 e consiste nella digitalizzazione di contratti veri e propri che vengono conservati in un database (che sono in genere server nel caso centralizzato e blocchi nel caso della blockchain). L'esempio che viene subito in mente è quello di Kickstarter, una delle piattaforme più famose per progetti che si finanziano tramite crowdfunding. La blokchain rende uno smart contract molto più sicuro e soprattutto condiviso con tutti coloro che partecipano alla proof of work (o proof of stake) della catena di blocchi scelta per la creazione del proprio smart contract. Nell'articolo, dopo l'introduzione sui contratti, vedremo gli smart contract su blockchain concentrandoci sulla creazione di questi su blockchain Ethereum, a cui seguiranno alcuni esempi pratici di codice con Solidity.

Introduzione

Un contratto classico è un accordo "firmato" da una o più parti che vincola queste a rispettare un certo tipo di accordo. Il contratto quindi funge da garanzia tra le parti, contenendo al suo interno non solo le condizioni affinché questo venga rispettato e/o terminato, ma anche tutta una serie di clausole e forme che devono essere onorate affinché un terzo garante ne valuti la validità o ponga rimedio a controversie. Tutto questo richiede del lavoro che in termini di tempo e denaro pesa non poco sugli attori in gioco. Ciò può essere portato a termine automaticamente tramite contratti digitalizzati ovvero smart contract. Di questi abbiamo già moltissimi esempi che possiamo definire “classici”, pur restando centralizzati sono comunque del tutto moderni. In generale uno smart contract consiste in un codice programmabile che pone delle condizioni tra due o più parti affinché succeda una determinata azione conseguenza di un “if” rispettato, a seguito del quale il contratto viene risolto in modo automatico senza l’intervento di una terza parte e senza la partecipazione di un garante che ne deve fornire validità e sicurezza. Prendiamo ad esempio Kickstarter: quando una persona o un’azienda decide di lanciare una campagna per il crowdfunding, esistono una serie di obiettivi posti come “traguardi” rispetto ai fondi raccolti. Ma più importante di questo è la condizione affinché il progetto venga effettivamente realizzato ponendo una soglia minima che va raggiunta durante la campagna. Lo smart contract fa in modo che, nel caso in cui la soglia venga raggiunta, i fondi vengono effettivamente rilasciati ai responsabili del progetto, nel caso contrario invece i fondi tornano automaticamente a chi aveva "donato" una quantità di denaro, in genere in cambio del prodotto finito o di qualche bonus particolare. Un altro esempio può essere fatto con un semplice acquisto di una macchina o di un immobile, ovviamente esistono tutta una serie di procedure prima di riuscire effettivamente a entrare in possesso della macchina o dell’immobile: il metodo di pagamento totale o rateizzato (quindi con un finanziamento, anche questo richiedente una certa procedura e tutta una serie di condizioni), l’immatricolazione e/o il passaggio di proprietà, l’assicurazione, la documentazione e la registrazione. Se tutti i vari procedimenti venissero integrati tramite smart contract su blockchain, il tutto sarebbe molto più rapido, molto più economico e specialmente meno soggetto a falsificazioni, truffe ed errori. Se lo smart contract conferma il vostro possesso della macchina e quindi l’identità del proprietario insieme a tutti i dati relativi alla parte burocratica, chiunque abbia accesso al ledger può verificare la legittimità delle informazioni senza una terza parte, garantendo inoltre una certa sicurezza da attacchi di terzi e/o falsificazione dei documenti. Le possibilità con gli smart contract sono davvero infinite, qualsiasi condizione, qualsiasi processo nel tempo può essere introdotto nella blockchain che grazie al suo sistema decentralizzato fa in modo che una copia del contratto sia distribuita e convalidata dalla rete, così da non dover contare su un unico sistema centralizzato con tutti i rischi che questo comporta.

Figura 1. Un contratto "smart" accessibile direttamente da smartphone

Smart contract su blockchain

L’idea degli smart contract era già stata valutata per la blockchain Bitcoin, ma le origini di BTC riguardano ben altro, in effetti la blockchain più funzionale e conosciuta studiata da zero per integrare al suo interno gli smart contract è Ethereum, non a caso la troviamo tra le più discusse in ambito blockchain non solo per le migliaia di progetti che sono stati realizzati sfruttandone la tecnologia, ma anche per le possibilità che gli smart contract consentono facendo forza sulla decentralizzazione e sulla sicurezza della blockchain. Ethereum non è la sola blockchain che consente lo sviluppo di smart contract, infatti lo stesso scopo è stato perseguito da diversi progetti tra i quali ricordiamo: Cardano (una blockchain che permette la programmazione di smart contract e che vanta la partecipazione di diversi attori che provengono dal mondo accademico delle più importanti università del pianeta), Qtum (che vanta di poter far girare al suo interno applicazioni realizzate su blockchain Bitcoin ed Ethereum, prima nel suo genere) ed EOS (la cui forza nella realizzazione di smart contract consiste nell’elevatissimo numero di transazioni per secondo). Importante sottolineare che queste blockchain hanno in funzione o stanno lavorando a una proof of stake che ne consente la generazione dei blocchi, non tramite mining ma tramite la presenza di nodi che detenendo una certa quantità di monete lavorano alla conferma dei blocchi. Per capirne il funzionamento facciamo un esempio: Alice e Bob hanno entrambi 10 ETH sul proprio wallet, nella rete anche gli smart contract hanno un wallet al loro interno e possono ricevere e inviare ETH (ma uno smart contract può anche avere un balance nullo). L’unica differenza è che, mentre Alice e Bob hanno il controllo del proprio wallet, lo smart contract è regolato da un codice realizzato da chi lo ha programmato e che non può essere modificato una volta che questo viene lanciato sulla blockchain, garantendone l’imparzialità, il corretto funzionamento e soprattutto la sua originalità. Gli smart contract possono anche contenere informazioni, immaginiamo ad esempio che 1001 utenti decidano di fare una votazione per votare SI o NO a una certa proposta. Si può realizzare uno smart contract che contiene al suo interno due valori impostati a zero, ogni utente della rete può inviare allo smart contract il proprio voto tramite token (appositamente creati) e in tal modo ogni volta che viene ricevuto un token per il SI o per il NO quel valore aumenta di uno, fornendo alla fine della votazione la quantità di SI e quella di NO. Si può fare lo stesso ragionamento per un datore di lavoro, realizzando uno smart contract che contiene al suo interno un certo valore di ETH e che ogni mese elabora i dati di ogni lavoratore e invia al loro wallet lo stipendio in base a una serie di parametri pre-impostati (riducendo quasi del tutto il rischio di errore o attacco esterno, dato che nessuno ha il potere di modificare lo smart contract). Vedremo un esempio del genere più avanti.

Figura 2. Un esempio di avvenimenti in seguito alla "firma" di uno smart contract

Come si crea uno smart contract su ETH

Il linguaggio di programmazione utilizzato per la realizzazione di smart contract su blockchain Ethereum è Solidity (una guida al codice di programmazione la trovate qui https://solidity.readthedocs.io/en/v0.5.2/solidity-in-depth.html); un lnguaggio ispirato a C++, Python ma soprattutto a JavaScript. Dato che, [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2084 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

2 Commenti

  1. Avatar photo Mariangela.Mone 30 Marzo 2020
    • Avatar photo Carlo Ciaravino 19 Aprile 2020

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend