Gli Smart Contract: cosa sono e come funzionano su blockchain

Contratto automatico intelligente”.
Ecco come potremmo tradurre, in modo esauriente, l’espressione “Smart Contract”.

Ma concretamente di cosa stiamo parlando?
Cosa sono di fatto gli Smart Contract?
E perché sono uno strumento così determinante nella tecnologia blockchain?
Proviamo a rispondere a queste domande in modo semplice e chiaro, in stile KNOBS.

Indice argomenti

1. Cosa sono gli smart contract

Una definizione chiara, in stile KNOBS

Partiamo dalle basi e dalla terminologia.
Più che di “contratto” sarebbe giusto parlare in realtà di “programma” o meglio ancora di “codice”.

Lo Smart Contract, infatti, è un codice che viene memorizzato ed eseguito sui nodi di una blockchain.

Determina un cambiamento di stato della blockchain stessa e, nella maggior parte dei casi,  “innesca” un trasferimento di valore.

Questo codice esegue le clausole che sono state stabilite al momento della “stipula del contratto” e reagisce a specifiche condizioni operative che possono verificarsi “in corsa”. Ogni volta che una di queste si realizza, il codice si attiva in automatico.

Per comprendere meglio, proviamo a semplificare.

Possiamo immaginare in atto il meccanismo IFTTT, l’IF-THIS-THEN-THAT proprio della logica computazionale.
Ecco come funziona.
 

Se (IF) specifiche condizioni hanno luogo secondo una sequenza ordinata e prestabilita (IF-THIS/THEN-THAT), allora (THEN) il codice esegue un determinato set di istruzioni.

Questa semplificazione permette di capire la logica sottostante uno Smart Contract.

In realtà, i contratti intelligenti non sono delle semplici istruzioni IFTTT ma dei veri e propri pezzi di codice Turing completi.

In linea di principio, questo significa che gli Smart Contract potrebbero essere usati per risolvere qualsiasi problema di calcolo. Non è necessario che ci addentriamo nella definizione di programma Turing complete. Ti basta sapere che gli Smart Contract possono gestire calcoli estremamente complessi ed eseguire operazioni ben più importanti di un semplice IFTTT.

Li definiamo “contratti” perché, come i contratti veri e propri, quelli provvisti di valenza giuridica, vincolano due o più parti tra loro in un accordo da rispettare, uno scambio di valore. E di questo scambio dettano modalità, tempi e regole.

Dalla teoria alla pratica: pensa ad una slot machine

Ecco un esempio pratico per capire meglio natura e caratteristiche degli smart contract.

Pensa ad una slot machine. Si, esatto, una di quelle macchine piene di luci e suoni che subito fanno venire in mente l’atmosfera cupa e un po’ equivoca di casinò e angoli seminascosti nei bar.

Per attivarla, basta inserire la monetina e abbassare la leva, giusto?

Siamo di fronte ad una versione molto semplice del già citato meccanismo if/then.

Se (IF) inserisco la monetina, (THEN) allora la slot si attiva, in un tripudio di suoni e luci.

Quando tiro la leva, infatti, attivo un programma che la macchina esegue in automatico.

Altro non è che un accordo “smart”, in forma molto semplificata.

Quando attivi una slot machine, però, non vedi esattamente cosa avviene dall’altra parte.

Non sai se i meccanismi che fanno girare le figure sul display sono randomici o se esistono delle regole diverse per la loro esecuzione. E verificarli sarebbe estremamente complesso.

Immagina se fosse possibile implementare la slot machine con la blockchain e con uno “Smart Contract”, ossia con un contratto digitale creato ad hoc per rendere il suo funzionamento tracciabile e trasparente.

Implementazioni di questo tipo, in effetti, esistono già: ne è un esempio interessante PoolTogether, la lotteria creata su Ethereum in cui nessuno può perdere.

PoolTogether è un’applicazione che trasforma il risparmio di denaro degli utenti in un gioco, unendo tecnologia blockchain, Smart Contract e Decentralized Application (Dapp). Come in qualsiasi lotteria del mondo, comprando i biglietti, si partecipa all’estrazione del premio, al termine di ogni settimana.
Ciò che rende questo gioco unico, però, è il fatto che anche i giocatori che non vincono ricevono indietro i soldi del biglietto.

I premi di PoolTogether sono finanziati con gli interessi che i biglietti acquistati maturano sulla piattaforma di prestito DeFi Compound Finance. E i vincitori che li ricevono sono selezionati tramite Smart Contract completamente automatizzati. Il codice è open-source, puoi consultarlo tu stesso su GitHub: https://github.com/pooltogether

Ecco appena descritta una lotteria che funziona nella massima trasparenza e tracciabilità.

2. Un po’ di storia: gli smart contract dalla chiave digitale alla blockchain

Il concetto alla base degli Smart Contract ha oltre mezzo secolo!

Se guardiamo al mondo digitale, ecco un esempio che affonda le radici nell’origine stessa degli Smart Contract e precorre di decenni l’invenzione della blockchain.

Decenni, si. Gli Smart Contract, infatti, hanno trovato nella blockchain il loro contesto ideale, ma la loro storia inizia ben prima della creazione di questa tecnologia.

Il principio che sta alla loro base risale agli anni ’70.

Fu allora che nacque l’esigenza di gestire l’attivazione o disattivazione di una licenza software in funzione di una condizione fondamentale, il pagamento da parte del cliente.

La licenza di determinati software venne così gestita tramite una chiave digitale, che permetteva il funzionamento del software se il cliente aveva pagato la licenza e ne cessava il funzionamento alla data di scadenza del contratto. 

Semplicemente, in modo molto basico, era uno Smart Contract.

Quando nascono ufficialmente gli Smart Contract?

La teorizzazione ufficiale degli Smart Contract risale soltanto al 1994, quando il famoso informatico e giurista Nick Szabo pubblica il primo lavoro sul tema e introduce l’idea di regolare relazioni economiche e non solo (rapporti d’affari, ma anche personali come i matrimoni!) attraverso protocolli digitali.

Nel 1996, nel suo “Smart Contracts: Building Blocks for Digital Free Markets”, Szabo definisce lo Smart Contract come “un insieme di promesse, specificate in forma digitale, inclusi i protocolli all’interno dei quali le parti eseguono queste promesse”.

Secondo Szabo, è proprio la natura digitale di queste “promesse” a garantire, molto più degli strumenti tradizionali, alcuni aspetti fondamentali del contratto, in particolare:

osservabilità, cioè la possibilità per gli attori coinvolti di monitorarne il rispetto e documentarlo ad agenti esterni
verificabilità, cioè il controllo della sua esecuzione in modo certo e indiscutibile
applicabilità, cioè la possibilità di eseguirlo in modo esatto
privacy, cioè la riservatezza delle informazioni, diffuse solo nella misura strettamente necessaria all’esecuzione del contratto stesso

Quando gli Smart Contract diventano uno strumento cardine della blockchain?

Gli Smart Contract nascono quindi come event-driven software per automatizzare le obbligazioni contrattuali.

Niente a che fare con la blockchain. Non in origine almeno.

Ma perché allora oggi, quando ne parliamo, pensiamo subito ad uno degli strumenti cardine di questa tecnologia?

Come e quando gli Smart Contract sono approdati alla tecnologia blockchain e vi si sono legati in modo indissolubile?

È storia recente.

Nel luglio 2015, Vitalik Buterin inaugura la piattaforma blockchain Ethereum, proprio con l’obiettivo di sviluppare ed eseguire su blockchain contratti automatici decentralizzati.

È il grande passo: gli Smart Contract diventano ufficialmente contratti in esecuzione sui nodi blockchain.

Un’evoluzione naturale e quasi obbligata: per loro stessa natura, infatti, gli Smart Contract possiedono proprio le caratteristiche di automatismo, trasparenza e sicurezza che sono anche alla base della blockchain.

L’esecuzione su blockchain non fa altro che amplificare questi vantaggi, garantendo inoltre la piena affidabilità del contratto senza che sia necessaria la presenza di un intermediario.

3. Come funziona uno smart contract?

Proof of Work, Oracoli e il principio di self-execution

Ma come funziona uno smart contract?

Tutto inizia con un passaggio preliminare fondamentale: la stesura del contratto con tutte le relative clausole e la sua successiva esatta programmazione in linguaggio macchina.

Una volta che l’accordo ha assunto una veste digitale, è necessario validarlo affinché possa entrare a far parte di un blocco della blockchain. In termini meno tecnici, questo significa che dobbiamo caricare il codice dello smart contract su blockchain.

Come avviene questa validazione

Servono due elementi: la firma tramite chiave privata di tutti i partecipanti al contratto e un algoritmo di consenso Proof of Work (puoi approfondire i due temi nei post dedicati del blog di KNOBS).

Solo a validazione avvenuta, il blocco contenente lo Smart Contract viene integrato nella blockchain (di solito Ethereum). 

Da questo momento in poi, chiunque può interagire con lo Smart Contract, inviando “istruzioni” codificate che contengono le informazioni necessarie all’operazione desiderata, e chiunque può osservarlo in esecuzione in qualunque momento.

E se lo Smart Contract avesse bisogno di dati che non sono sulla blockchain? 

Come fa lo Smart Contract ad avere i dati necessari per far eseguire determinate condizioni scritte nel codice?

Per svolgere questa importante funzione lo Smart Contract può dialogare con programmi dedicati, gli Oracoli, che raccolgono informazioni offchain e le trasmettono onchain (approfondiremo proprio il tema degli Oracoli in uno dei prossimi post del nostro blog). 

Le informazioni inviate fanno sì che lo Smart Contract diventi operativo, cioè che entri in esecuzione ed esegua le azioni previste al suo interno.

Questa esecuzione automatica, self-execution, non può in alcun modo essere interrotta o alterata a posteriori.

4. Quali sono i campi di applicazione degli smart contract?

Grazie all’estrema adattabilità e versatilità, gli Smart Contract hanno un raggio d’azione molto ampio, che tocca settori eterogenei e molto diversi tra loro: da servizi finanziari e legali all’ambito dell’energia e delle infrastrutture, alla sanità e al campo assicurativo fino alla tracciabilità di merci e operazioni societarie e alla tutela della proprietà intellettuale.

Alcune loro funzioni potrebbero essere svolte anche da programmi informatici ben sviluppati, con l’eccezione però di un dettaglio fondamentale e preziosissimo.

I programmi informatici, anche se molto evoluti, non sono in grado di garantire condizioni certe di verificabilità, immutabilità e piena trasparenza del loro operato, che l’impiego di blockchain e Smart Contract invece assicurano appieno. 

Proviamo a capire insieme la differenza

In un qualsiasi programma informatico non caricato su blockchain, il codice del programma si trova su un server centralizzato a cui è possibile accedere tramite credenziali

Il possessore delle credenziali potrebbe modificare il contenuto del programma e nessuno avrebbe evidenza delle modifiche. O meglio, ci si potrebbe accorgere di eventuali modifiche solo a fatto compiuto perché qualcosa non funziona.
Immagina di dare i tuoi soldi ad un programma informatico che ti promette di restituirli dopo una settimana.
 
Ti fideresti? O inizieresti a indagare su chi gestisce il programma, qual è la società “dietro” il programma? Andresti in cerca di garanzie che ti confermino la ricezione del denaro come promesso. 

E cosa succede se qualcuno modifica il programma dopo che tu hai deciso di investire i tuoi soldi?

Su blockchain funziona diversamente

Una volta che lo Smart Contract è caricato su blockchain, il codice è verificabile da chiunque. Chiunque può leggere il codice, vedere come funziona e nessuno, nemmeno chi l’ha scritto, può modificarne il contenuto!

Queste caratteristiche proprie della blockchain ti permettono con ragionevole certezza di “dare” i tuoi soldi ad un programma che li gestisce per te, secondo alcune condizioni che hai potuto verificare in maniera preventiva.

Che i soldi ti verranno restituiti dopo una settimana è scritto in un programma informatico verificabile, immutabile ed incorruttibile

Inoltre, per la prima volta nella storia puoi dare del denaro ad un programma informatico che lo gestisce.

Puoi programmare il trasferimento di valore in automatico in base al verificarsi di determinate condizioni.

Etherisc

Uno degli esempi più famosi di applicazione di questo strumento blockchain è la polizza “Flight Delay” della startup tedesca Etherisc, un’assicurazione sui viaggi aerei decentralizzata che opera sulla piattaforma Ethereum.

Ecco come funziona.

Il viaggiatore acquista un biglietto aereo.

Grazie ad Etherisc, il possessore del biglietto può acquistare l’assicurazione sul ritardo del volo.

Attraverso gli Oracoli, lo Smart Contract riceve le informazioni relative agli orari di partenza e di arrivo dei voli.

Se viene rilevata un’alterazione degli orari programmati, causata da un ritardo o da una cancellazione, scatta in automatico l’esecuzione dell’accordo e il rimborso previsto dalla polizza. Questo rimborso avviene automaticamente in ETH, ma, su richiesta del cliente, può essere convertito, esternamente allo Smart Contract, in una delle principali valute a corso legale, dollari, euro o sterline.

A differenza dei sistemi assicurativi tradizionali, dove occorre dimostrare all’ente assicurativo che il volo è arrivato in ritardo, nel sistema sopra descritto, implementato su blockchain, il rimborso avviene in automatico nel momento in cui il volo atterra in ritardo.

Non esiste un ente assicurativo che fa da intermediario tra le parti: i fondi sono gestiti direttamente dal programma informatico.

Gli Smart Contract nei progetti di KNOBS

Come software house specializzata in tecnologia blockchain, KNOBS ha curato lo sviluppo tecnologico di Smart Contract in tanti suoi progetti.

Basta uno sguardo al suo portfolio per farsi subito un’idea delle potenzialità e dell’ampio raggio di applicazione di questo strumento.

Pensa, ad esempio, a piattaforme come xToken, che permette di prenotare e gestire l’ingresso ad esercizi commerciali e servizi pubblici e privati attraverso l’emissione di token, a Piattaforma K, per la distribuzione certificata dei report di ricerca dell’Osservatorio Blockchain & Distributed Ledger, Satellite, la rivoluzionaria app di messaggistica basata su blockchain, oppure a progetti di ambito finanziario, come Microcredito 2.0, dedicato alle donazioni, e ICON, per la raccolta dilazionata e progressiva di capitale.

In tutti questi casi, i ticket emessi sotto forma di token, gettoni digitali, sono gestiti e implementati con Smart Contract, per assicurare la piena tutela e dimostrabilità delle scelte effettuate dagli utenti e proteggerne attività e sicurezza.

Opportunità

È assodato, insomma, che stiamo parlando di uno strumento agile, versatile, “smart” nel senso proprio del termine.

Essendo veri e propri programmi informatici, gli Smart Contract hanno molteplici campi di applicazione e consentono, grazie alla tecnologia blockchain sottostante, di implementare logiche di business prima inimmaginabili.

Si pensi ad esempio ai flash loan, prestiti finanziari di qualunque entità che vengono corrisposti senza bisogno di fornire alcuna garanzia (la garanzia di restituzione è intrinseca nell’esecuzione), offerti dalle piattaforme di finanza decentralizzata, oppure alle stablecoin algoritmiche (ne parleremo in dettaglio in uno dei prossimi post).

 

…e limiti...

Ma fino a che punto sono “Smart”?

Sicuramente lo sviluppo della tecnologia li renderà sempre meno evidenti, ma ad oggi sugli Smart Contract pesano alcuni limiti di carattere tecnico e giuridico:

possibilità di attacchi informatici

Il fatto che il loro codice sia accessibile pubblicamente e la grande quantità di valore che spesso gestiscono rende gli Smart Contract particolarmente appetibili ad attacchi informatici. Per questo, richiedono una particolare attenzione alla sicurezza durante la fase di implementazione del codice, prima cioè che lo smart contract venga caricato su blockchain e diventi immutabile.

accessibilità totale delle interazioni

Come sappiamo, le informazioni registrate su blockchain sono sempre pubblicamente accessibili e questo vale anche per gli Smart Contract. Questo significa che è sempre possibile tracciare, seppur in maniera pseudonima, le interazioni tra un utente e uno Smart Contract e verificarne gli effetti sullo stato della blockchain. Diviene allora necessario tutelare la privacy degli utenti con soluzioni specifiche, tema su cui la community è molto attiva.

costo elevato

Ogni operazione su blockchain ha un costo. Per questo motivo la codifica di regole va analizzata a priori. Elaborazioni troppo complesse possono aumentare i costi al punto tale da rendere sconveniente l’utilizzo di questa tecnologia per un determinato campo di applicazione (le nuove soluzioni di “layer 2” o le sidechain nascono proprio con lo scopo di risolvere questo problema)

incertezza dello stato giuridico

I contratti tradizionali fanno riferimento ai singoli sistemi giuridici nazionali, mentre gli Smart Contract sono su blockchain, cioè su un registro pubblico “universale”. Questo rende spesso controverso stabilire la legislazione di riferimento

6. Smart contract e profilo giuridico : a che punto siamo?

Smart Contract, contratti tradizionali e validità legale

Quest’ultimo limite apre un capitolo fondamentale nella definizione degli Smart Contract: la loro validità a livello giuridico.

Questa è determinata da un lato dalle caratteristiche degli Smart Contract rispetto ai contratti tradizionali, legalmente vincolanti, e dall’altro dal riconoscimento ufficiale degli Smart Contract come strumento normativo.

Ecco i punti fermi che sono perno di tutte le discussioni sul tema.

Rispetto ad un contratto tradizionale, lo Smart Contract:

  1. richiede il supporto legale di un professionista, notaio o avvocato, solo al momento della stesura, ma non poi per la verifica e l’attivazione su blockchain. In più, una volta posto in essere, è immodificabile

     

  2. è steso con linguaggio macchina e risente di una rigida struttura logica, per cui non è in grado di codificare tutte le sfumature di una relazione contrattuale né concetti astratti come quelli di “forza maggiore” o “buon senso”, che piuttosto ortogonalizza

     

Come strumento normativo, lo Smart Contract:

è prima di tutto un “documento elettronico” e come tale dovrebbe godere già di per sé di validità legale. Questo, almeno, è ciò che è stato stabilito nel Regolamento UE 910/2014 (Regolamento eIDAS, art. 46) e, a livello italiano, dal Codice dell’Amministrazione Digitale (CAD, art. 20 comma 1bis), che pone come unica condizione imprescindibile la presenza di una firma digitale qualificata.
Per dirla in parole semplici, proprio il fatto di essere uno strumento tecnologico, con le caratteristiche di immutabilità, integrabilità e decentralizzazione che gli conferisce la blockchain, dovrebbe renderlo provvisto dei requisiti minimi di legge per avere validità legale.
 

Il quadro normativo

Dal punto di vista normativo, in realtà, le cose non sono così immediate e lineari.

Senza dubbio, la consapevolezza di quanto gli Smart Contract siano utili ed efficienti come strumento contrattuale e di quanto sia urgente una loro regolamentazione giuridica sono ormai ampiamente diffuse.

In Europa e negli USA ci sono apposite commissioni che lavorano proprio per valutarne l’impatto e il valore legale ed esistono specifiche norme in merito.

L’Italia detiene il primato di secondo paese dell’Unione Europea, dopo Malta, ad aver riconosciuto lo status giuridico degli Smart Contract, anche nell’ottica di favorirne l’adozione e la diffusione tra le imprese.

Il primo recepimento ufficiale di questo strumento nella nostra normativa è comunque molto recente.

Tecnologia blockchain e Smart Contract fanno il loro ingresso nel nostro ordinamento nel 2019, con la conversione in legge (Legge 11 febbraio 2019, art. 8-ter) del “Decreto semplificazioni”. C’è però un problema di fondo: il decreto delega all’Agenzia per l’Italia Digitale la definizione degli standard tecnici per il pieno riconoscimento giuridico di queste innovazioni e questi standard purtroppo non sono ancora ad oggi disponibili.

Se l’accordo tra le parti avviene a livello nazionale, la legislazione di riferimento è naturalmente quella del paese di appartenenza dei contraenti.

Cosa succede però quando, come spesso avviene, lo Smart Contract definisce una relazione contrattuale che valica i confini nazionali?

Qual è in questo caso la legislazione di riferimento?

Il Regolamento UE “Roma I” fissa alcuni principi generali di supporto alla corte per stabilire di caso in caso la normativa cui riferirsi. Stabilisce, ad esempio, che il contratto deve essere regolato secondo la legge del Paese dove ha residenza il fornitore del servizio o, in casi residuali, dove risiede la parte che fornisce la “prestazione più caratteristica”.

 

Questi non sono che i primi passi verso il pieno recepimento e riconoscimento degli Smart Contract a livello legislativo.

La strada per una piena valorizzazione di questo strumento e delle sue potenzialità come strumento giuridico e contratto a tutti gli effetti è però ancora lunga.

7. Conclusioni

Alcuni immaginano che l’evoluzione degli Smart Contract sarà segnata dalla creazione di uno strumento ancora più evoluto, che unirà i vantaggi della rigida struttura e trasparenza del protocollo informatico con la flessibilità e la consistenza giuridica dei contratti tradizionali.

 

In un mondo sempre più digitalizzato e globalizzato, in ogni caso, il ruolo nelle relazioni contrattuali non potrà non divenire sempre più incisivo, grazie alle condizioni di assoluta efficienza, trasparenza e verificabilità che la blockchain garantisce.

Gli Smart Contract sono uno degli strumenti principali della tecnologia blockchain.
Ed è fondamentale chiarirne in modo semplice e fruibile caratteristiche e meccanismi di funzionamento, come abbiamo fatto in questo post.
 
Sono però solo uno dei tanti elementi, aspetti e applicazioni che caratterizzano la blockchain. 

Se vuoi continuare a scoprirli e restare sempre aggiornato su questa tecnologia innovativa, che già racconta come sarà il futuro, seguici e iscriviti alla nostra Newsletter!

Vuoi scoprire di più sulla tecnologia blockchain
e su come puo' far crescere il tuo business?

|   Chi siamo

KNOBS è una società di sviluppo software specializzata in tecnologia blockchain. Dal 2014.

|   KNOBS srl

Bastioni di Porta Volta, 9
20121 Milano (MI) – Italia
info@knobs.it
knobs@legalmail.it
P. IVA 08560240965
SDI X2PH38J

|   Orari di apertura

Dal lunedì al venerdì 9.00 – 18.00

|   Seguici

|   Newsletter

Iscriviti alla newsletter e ricevi subito il PDF
Blockchain in parole semplici