Cos’è uno smart contract?

Sebbene la denominazione “contratti intelligenti” possa fare pensare che si trattino di contratti legali, gli smart contract non sono altro che programmi automatizzati, crittografati e memorizzati sulla blockchain. Automatizzano gli accordi tra il creatore e il destinatario, rendendoli immutabili e irreversibili. Il loro scopo principale è quello di automatizzare l'esecuzione di un accordo senza la presenza di intermediari, garantendo che tutte le parti possano confermare istantaneamente la sua conclusione. Inoltre, possono essere programmati per avviare un flusso di lavoro in base a circostanze specifiche.

Che cos'è un executed contract? Un executed contract si riferisce al completamento con successo dell'accordo programmato nello smart contract. Una volta che tutte le condizioni specificate nel codice dello smart contract sono soddisfatte e le azioni richieste vengono eseguite, l’accordo è considerato eseguito. Resi popolari dalla blockchain Ethereum, gli smart contract hanno portato alla creazione di una serie di applicazioni decentralizzate (DApp) e di altri casi d'uso del network. 

Uno dei vantaggi principali delle reti blockchain è l'automazione di attività che tradizionalmente richiedono un intermediario esterno. Ad esempio, invece di avere bisogno dell'approvazione di una banca per il trasferimento di fondi da un cliente a un libero professionista, il processo può avvenire automaticamente grazie a uno smart contract. In questo modo si riducono i tempi e i costi di esecuzione dei contratti tradizionali.

Un altro esempio potrebbe essere l'autogestione decentralizzata delle dispute mediante smart contract: un processo che consente di risolvere le controversie tra le parti senza dover ricorrere a un sistema legale tradizionale o a un'autorità arbitrale centralizzata. In caso di disaccordo tra le parti, lo smart contract riceverebbe prove e argomenti da entrambe le controparti: la gestione del contenzioso verrebbe quindi gestita automaticamente tramite il contratto, utilizzando un elenco predeterminato di regole specificate da entrambe le parti, oppure una rete decentralizzata di regole. Una volta raggiunta una decisione, lo smart contract la eseguirà automaticamente, ad esempio trasferendo i fondi alla parte vincitrice, o rilasciando il prodotto o il servizio alla parte appropriata.

Questo articolo spiegherà la storia degli smart contract, il loro funzionamento e perché sono così importanti.

Come funzionano gli smart contract?

Pensate agli smart contract come degli accordi digitali "if-then" (se vengono soddisfatte le condizioni "X", allora accadrà "Y", n.d.r.) tra due o più parti. Se le richieste di un gruppo sono soddisfatte, l'accordo può essere rispettato e il contratto è considerato completo. 

Supponiamo che un banco chieda a un agricoltore 100 spighe di grano. Il primo blocca i fondi in uno smart contract che può essere approvato quando il secondo effettua la consegna. Quando l'agricoltore consegnerà il suo prodotto, i fondi saranno immediatamente sbloccati. Tuttavia, se l’agricoltore non rispetterà la scadenza, lo smart contract verrà annullato e i fondi verranno restituiti al banco.

Naturalmente, questo è un caso d'uso banale. Tra gli altri vantaggi, gli smart contract possono essere programmati per sostituire i controlli governativi nelle transazioni al dettaglio. Inoltre, gli smart contract potrebbero eliminare la necessità di portare certe controversie in tribunale, facendo risparmiare alle parti tempo e denaro.

Questa sicurezza è in gran parte dovuta al codice con cui vengono scritti gli smart contract. Su Ethereum, ad esempio, gli smart contract sono scritti nel linguaggio di programmazione Solidity, che è Turing-complete. Ciò significa che le regole e le limitazioni degli smart contract sono integrate nel codice della rete e che nessun malintenzionato può manipolare tali regole. Idealmente, queste restrizioni attenuerebbero le truffe o le alterazioni nascoste dei contratti.

A differenza della maggior parte delle reti blockchain, descritte come un libro mastro distribuito, Ethereum è considerato una macchina a stati distribuiti, contenente la cosiddetta Ethereum Virtual Machine (EVM). Questa macchina a stati, di cui tutti i nodi di Ethereum accettano di conservare una copia, memorizza il codice degli smart contract e le regole che questi accordi devono rispettare. Poiché ogni nodo ha le regole incorporate nel codice, tutti gli smart contract di Ethereum hanno le stesse limitazioni.

In termini più tecnici, l'idea di uno smart contract può essere scomposta in alcune fasi, come illustrato di seguito:

Various steps for building a smart contract

Identificare le parti e stabilire i termini dell’accordo

Il primo step per creare uno smart contract è identificare le parti coinvolte e arrivare a un accordo sui termini e sulle condizioni del contratto. I termini, gli obblighi di ciascuna parte e gli standard per l’esecuzione vanno tutti descritti in questo accordo.

Definire le condizioni per l’esecuzione dell’accordo

Il secondo step è quello di specificare le condizioni che devono sussistere affinché l’accordo sia eseguibile.

Scrivere il codice dello smart contract

Il terzo step è di scrivere il codice dello smart contract. Il codice specificherà nel dettaglio i passaggi che devono essere fatti per eseguire l’accordo qualora sussistano i requisiti.

Implementare il contratto su una piattaforma blockchain

L’implementazione dello smart contract sulla blockchain è il quarto step. Consiste nel convalidare la legittimità dell’accordo caricando il codice sulla rete blockchain.

Auto-attivazione dell'esecuzione del contratto

L'esecuzione dello smart contract è il quinto step. Quando le condizioni prestabilite sono soddisfatte, lo smart contract viene eseguito automaticamente e la rete blockchain lo attiva.

Registrazione dei dettagli dell’accordo sul libro mastro della blockchain

Le informazioni dello smart contract vengono inserite nella rete blockchain quando viene eseguito. Si tratta dei termini dell’accordo, dei prerequisiti per l'esecuzione e della data e dell'ora di esecuzione. Le specifiche dello smart contract sono immutabili una volta inserite nel libro mastro della blockchain, il che significa che non possono essere modificate o rimosse.

È inoltre importante notare che gli smart contract sono diversi dai contratti “scritti” tradizionali sotto molti aspetti, come illustrato nella tabella seguente:

Written contract vs Smart contract

Cenni storici sugli smart contract

Che ci crediate o no, gli smart contract sono antecedenti alla tecnologia blockchain. Sebbene Ethereum, introdotto nel 2014, sia l'implementazione più popolare del protocollo, il crittografo Nick Szabo ne ha lanciato l'idea negli anni Novanta.

All'epoca, Szabo ideò una valuta digitale chiamata Bit Gold. Sebbene l'asset non abbia mai preso vita, questo predecessore di Bitcoin ha evidenziato il caso d'uso degli smart contract: transazioni senza fiducia su Internet.

Tuttavia, gli smart contract non hanno iniziato a ricevere molta attenzione fino all'avvento della tecnologia blockchain, alla fine degli anni Duemila. La tecnologia blockchain ha reso possibile la costruzione di reti decentralizzate e affidabili che non richiedono un'autorità centralizzata per eseguire gli smart contract.

Molti, compreso il sito web di Ethereum, paragonano gli smart contract a un distributore automatico. I distributori automatici hanno lo scopo di fornire all'utente un prodotto, senza la necessità di una persona fisica che prenda i soldi e consegni il prodotto. Gli smart contract hanno lo stesso scopo, ma sono molto più versatili.

Gli smart contract hanno fatto passi da gigante nel corso del tempo. Sono nati come semplici algoritmi “if-then” che un programmatore può creare e implementare. Ora vengono utilizzati per un'ampia varietà di applicazioni, tra cui la gestione della supply chain, le transazioni immobiliari e persino i sistemi di voto. Il potenziale degli smart contract di rivoluzionare il modo in cui gli affari vengono condotti e le persone interagiscono tra loro è vasto: il loro sviluppo è un'area di innovazione entusiasmante nello spazio blockchain.

Benefici degli smart contract

Gli smart contract implementati su blockchain offrono diversi vantaggi, tra cui: velocità, efficienza, accuratezza, fiducia, trasparenza, sicurezza e risparmio.

Gli smart contract sfruttano i protocolli informatici per automatizzare le azioni, snellendo vari processi commerciali e risparmiando tempo prezioso. Eliminando la necessità di intermediari – come i broker per convalidare i contratti legali – il rischio di manipolazione da parte di terzi è notevolmente ridotto.

L'assenza di intermediari negli smart contract non solo attenua i rischi, ma si traduce anche in un risparmio economico. Grazie alla completa visibilità e all'accesso ai termini e alle condizioni dell'accordo, tutte le parti interessate sono ritenute responsabili una volta apposta la propria firma. Ciò garantisce che la transazione sia trasparente e non negoziabile, promuovendo la fiducia e la responsabilità di tutte le parti coinvolte.

Inoltre, tutti i documenti conservati sulla blockchain vengono duplicati più volte, consentendo il ripristino degli originali in caso di perdita di dati. Gli smart contract sono criptati e la crittografia protegge tutti i documenti da eventuali manomissioni. Infine, gli smart contract eliminano anche gli errori dovuti alla compilazione manuale di diversi moduli.

Punti deboli degli smart contract

Sebbene gli smart contract siano un'innovazione promettente, non sono privi di difetti. È essenziale ricordare che questi accordi e la tecnologia blockchain sottostante sono sviluppati da esseri umani, il che li rende suscettibili di errori di scrittura del codice. In alcuni casi, gli errori nel codice possono portare a violazioni della sicurezza, come si è visto nel famigerato attacco all'organizzazione autonoma decentralizzata (DAO) di Ethereum nel 2016. Gli aggressori hanno sfruttato una vulnerabilità nello smart contract della raccolta fondi e hanno sottratto denaro al progetto.

Inoltre, la mancanza di chiarezza normativa sugli smart contract rappresenta un'altra sfida. Sebbene l'idea di un trasferimento sicuro ed efficiente di fondi sia allettante, è necessario affrontare questioni come la tassazione e la supervisione governativa. Se da un lato gli utenti possono desiderare un controllo completo sui propri dati, dall'altro è fondamentale considerare come le agenzie governative possano accedere alle informazioni richieste.

L'incapacità degli smart contract di recuperare dati da fonti esterne alla rete blockchain è uno dei loro svantaggi. Questo rappresenta un problema perché molte applicazioni del mondo reale hanno bisogno di dati esterni per avviare o eseguire le clausole contrattuali. Per esempio, i dati meteo esterni potrebbero essere richiesti da uno smart contract che basa i pagamenti assicurativi sulle condizioni meteorologiche.

È qui che entrano in gioco gli oracoli, ossia servizi di terze parti che consentono agli smart contract di comunicare con fonti di dati esterne alla blockchain, come API e pagine web. Fanno da ponte tra lo smart contract e la fonte di dati esterna, fornendo i dettagli necessari per eseguire i requisiti dell'accordo.

Con la crescita della tecnologia blockchain e dell'utilizzo degli smart contract, persistono le preoccupazioni relative alla scalabilità e alla congestione della rete. Ciò può influire sulle prestazioni e sull'affidabilità del sistema, soprattutto nei periodi di maggiore utilizzo. Inoltre, gli smart contract sono auto-esecutivi e non negoziabili, il che può rappresentare uno svantaggio se i termini del contratto devono essere modificati a causa di eventi imprevisti.

Casi d’uso e applicazioni degli smart contract

Al di là dell’esempio del banco e dell’agricoltore menzionato sopra, ci sono numerose potenziali implementazioni degli smart contract in grado di automatizzare processi di lavoro quotidiani e renderli più efficienti.

Identità digitale

Su Internet, l'informazione è denaro. Le aziende traggono profitto dalla conoscenza degli interessi degli utenti e le persone non sempre hanno il controllo di come vengono acquisiti i dati, tantomeno ne traggono profitto. Con gli smart contract, le persone riassumerebbero il controllo.

In un futuro basato sulla blockchain, le identità saranno tokenizzate. Idealmente, questo significherà che l'identità di ogni persona esisterà su una blockchain, al sicuro da eventuali malintenzionati. Al giorno d’oggi, se un utente vuole iscriversi ai social media o inviare documenti a una banca per un prestito, non può trarre profitto dal primo caso e controllare il processo di transazione nel secondo.

Nei social media decentralizzati nessun intermediario controllerà la rete. Gli utenti sceglieranno quali loro informazioni rendere pubbliche e quali tenere private. Se vorranno scambiare attivamente le proprie informazioni potranno creare uno smart contract e scegliere i dati da transare, anziché limitarsi a condividere tutto ciò che li riguarda. Una terza parte non sarà lì per prendere una parte dei fondi o per immagazzinare e vendere segretamente quei dati: solo l'utente ne trarrà profitto.

Lo stesso vale quando si tratta di gestire i rapporti con le banche e le altre istituzioni finanziarie. La comunicazione prevederà solo l'invio dei documenti richiesti e delle informazioni vitali. Non ci sarà il rischio che la banca memorizzi il vostro indirizzo e-mail per poi venderlo ad altre società di credito. Queste informazioni saranno interamente sotto il controllo dell'utente.

Settore immobiliare

Nel mondo tradizionale, gli agenti immobiliari sono entità necessarie. Dato che la vendita di una casa è un processo molto complesso, i proprietari assumono un intermediario per gestire le parti complicate, come pratiche burocratiche e ricerca degli acquirenti. Sebbene questa possa sembrare un'opzione vantaggiosa per il venditore, va sottolineato che l’agente percepisce una commissione significativa sul prezzo di vendita della casa.

Uno smart contract può prendere il posto dell’agente, semplificando il processo di trasferimento della casa e garantendo al contempo la stessa sicurezza offerta da un intermediario. È qui che entra in gioco il termine "trustless".

Immaginate che l'atto di proprietà della vostra casa sia tokenizzato sulla blockchain di Ethereum. Se siete pronti a venderla, creerete uno smart contract con l'acquirente: l'accordo sarà tenuto in sospeso fino a quando i fondi dell'acquirente non saranno stati inviati in modo corretto. Con questo sistema tutti vincono: il venditore risparmia denaro (non dovendo pagare un intermediario), mentre l'acquirente ottiene la casa molto prima di quanto avrebbe fatto altrimenti.

Assicurazioni

Le polizze assicurative potrebbero facilmente beneficiare degli smart contract. In sostanza, la sottoscrizione di una polizza comporterebbe la stipula di uno smart contract con un fornitore. Tutti i requisiti della polizza verrebbero scritti all’interno di tale accordo, che l'utente leggerebbe ed eventualmente firmerebbe.

L’accordo rimarrebbe “aperto” fintanto che l’utente non ne avrà bisogno. A quel punto, basterà caricare i moduli richiesti che dimostrano la necessità di pagare l'assicurazione e i fondi saranno sbloccati. Questo tipo di accordo elimina la necessità di comunicare con gruppi assicurativi ed individui. Sebbene l'utente abbia ancora bisogno di documenti per dimostrare le proprie esigenze, il successivo processo di presentazione e finanziamento sarà quasi istantaneo.

Per quanto riguarda l'aspetto dell'identità, vale la pena ricordare che tutti i conducenti avranno a disposizione un registro dei loro rapporti sugli incidenti e altre importanti informazioni assicurative. Questa accessibilità potrebbe determinare tariffe più basse per i conducenti virtuosi che non hanno problemi di guida.

Supply chain

Probabilmente, una delle implementazioni più popolari della tecnologia blockchain e degli smart contract è all'interno delle catene di approvvigionamento.

Negozi di alimentari, magazzini, uffici, agricoltori e altri ancora hanno tutti un ruolo specifico in una catena di approvvigionamento. A causa della complessità di queste reti, per le aziende è sempre più difficile tracciare la custodia dei prodotti e seguire i pagamenti: gli smart contract possono automatizzare i processi di tutte le parti della catena di fornitura per migliorarne la tracciabilità.

Supponiamo che un'azienda in Europa voglia acquistare una spedizione di merci da un fornitore in Asia. Potrebbe automatizzare ogni fase della transazione, dall'ordine alla consegna, utilizzando uno smart contract. Tutte le informazioni pertinenti, come le specifiche del prodotto, le informazioni sulla spedizione, i termini di pagamento e le scadenze per l'adempimento, sarebbero incluse nello smart contract.

Per garantire che gli articoli siano conformi alle aspettative dell'acquirente, lo smart contract includerebbe anche condizioni di qualità e quantità del prodotto. L'uso di intermediari, come banche o broker, e le relative commissioni non sarebbero necessari perché il contratto è auto-esecutivo e non negoziabile.

Una volta attivato lo smart contract, il denaro verrebbe tenuto in sospeso fino a quando il fornitore non certificherà che i prodotti sono stati consegnati. La blockchain tiene traccia e salva i tempi di consegna e le informazioni sulla spedizione, dando a entrambe le parti visibilità e trasparenza complete.

Quando la merce viene consegnata e l'acquirente certifica che soddisfa i parametri concordati, lo smart contract rilascerà immediatamente i pagamenti al fornitore. Grazie all'assenza di intermediari e alla riduzione del rischio di frode, questo metodo sarebbe efficace, efficiente e sicuro.

Anche Bitcoin ha smart contract?

L'aggiornamento Taproot è un traguardo importante per le funzionalità smart contract di Bitcoin. Risolve il problema della scalabilità, consentendo alla rete di gestire più firmatari e le loro transazioni complesse senza il rischio di intasamento. Con Taproot, la blockchain di Bitcoin può ospitare gli smart contract, consentendo alla rete di eseguire transazioni più sofisticate.

Inoltre, Bitcoin può supportare smart contract su protocolli come Lightning Network, che si basa su transazioni a più firme chiamate Hashed Time-Locked Contracts (HTLC). Gli HTLC facilitano i micropagamenti Bitcoin istantanei e a basso costo, e garantiscono che le parti coinvolte nell'instradamento dei pagamenti ricevano una piccola commissione senza compromettere la sicurezza dei fondi.

È possibile creare smart contract senza saper programmare?

Sì, è possibile creare smart contract senza saper programmare grazie alle diverse piattaforme che offrono modelli di facile utilizzo. Queste piattaforme forniscono interfacce utente drag-and-drop ed editor visuali che consentono agli utenti di sviluppare in maniera rapida e semplice smart contract senza alcuna competenza di programmazione.

Ad esempio Ethereum Studio, un ambiente di sviluppo integrato (IDE) web-based, fornisce modelli per la creazione di smart contract utilizzando Solidity, il linguaggio di programmazione di Ethereum. Un IDE è un'applicazione software che fornisce un insieme completo di strumenti e funzionalità agli sviluppatori per scrivere, testare ed eseguire il debug del codice in modo efficiente.

BlockApps Strato è un’altra piattaforma blockchain che offre un editor visivo di facile utilizzo per la creazione di smart contract. Supporta diversi linguaggi informatici, come Solidity e JavaScript, e offre agli utenti un'ampia varietà di opzioni e di modelli.

Il futuro degli smart contract

Gli smart contract sono senza dubbio la strada da seguire per rendere più efficienti gli accordi relativamente semplici: questi contratti possono essere eseguiti automaticamente ogni volta che vengono soddisfatte le condizioni preliminari.

Le varie piattaforme di smart contract faranno risparmiare tempo e denaro alle aziende di tutto il mondo, rivoluzionando al contempo le modalità di interazione nella catena di fornitura e con i clienti. Di conseguenza, il ridotto coinvolgimento umano libererà i decision maker dalla gestione della banale amministrazione e della burocrazia, consentendo loro di concentrarsi sul miglioramento del prodotto stesso. Gli smart contract, infatti, si occuperanno di tutto ciò che è possibile automatizzare.

Gli smart contract vengono già utilizzati da molte banche e organizzazioni assicurative nelle loro operazioni quotidiane. In altre parole, gli smart contract vengono già utilizzati in scenari reali: non ci vorrà molto prima che entrino a far parte della nostra vita e routine. A prescindere da quanto detto, c'è ancora molta strada da fare prima che tutto sia governato da smart contract.

Traduzione a cura di Giorgio Libutti