Cosa sono gli smart contract?
Home
Articoli
Cosa sono gli smart contract?

Cosa sono gli smart contract?

Intermedio
Pubblicato Sep 16, 2019Aggiornato Jun 9, 2023
9m

Introduzione

Nick Szabo ha descritto per la prima volta gli smart contract negli anni '90. Allora, definì uno smart contract come uno strumento che formalizza e protegge le reti informatiche combinando dei protocolli e delle interfacce utente.

Szabo ha discusso del potenziale utilizzo degli smart contract in vari campi che coinvolgono gli accordi contrattuali, come i sistemi di credito, l'elaborazione dei pagamenti e la gestione dei diritti sui contenuti.

Nel mondo delle criptovalute, possiamo definire uno smart contract come un'applicazione o programma eseguito su una blockchain. In genere, funzionano come un accordo digitale controllato da un determinato insieme di regole. Queste regole sono predefinite da un codice informatico, il quale viene replicato ed eseguito da tutti i nodi del network.

Gli smart contract sulla blockchain rendono possibile la creazione di protocolli trustless. Questo significa che due parti possono assumere impegni attraverso la blockchain, senza doversi conoscere o fidarsi l'una dell'altra. Possono essere certi che, se le condizioni non vengono soddisfatte, il contratto non sarà eseguito. Inoltre, l'utilizzo di smart contract può rimuovere la necessità di intermediari, riducendo significativamente i costi operativi.

Nonostante il protocollo Bitcoin supporti gli smart contract da molti anni, questi sono stati resi popolari dal creatore e co-fondatore di Ethereum, Vitalik Buterin. E' importante ricordare, però, che ogni blockchain può avere un metodo differente per l'implementazione di smart contract. 

Questo articolo si concentrerà sugli smart contract eseguiti sulla Ethereum Virtual Machine (EVM), una parte essenziale della blockchain di Ethereum.


Come funzionano?

In poche parole, uno smart contract funziona come un programma deterministico. Esegue un'operazione particolare se e quando vengono soddisfatte determinate condizioni. Quindi, un sistema smart contract segue spesso costrutti "if… then…". Nonostante la terminologia popolare, però, gli smart contract non sono contratti legali, né intelligenti. Sono soltanto un frammento di codice in esecuzione su un sistema distribuito (blockchain).

Sul network di Ethereum, gli smart contract sono responsabili dell'esecuzione e della gestione di operazioni blockchain che avvengono quando gli utenti (indirizzi) interagiscono tra di loro. Qualsiasi indirizzo che non sia uno smart contract viene chiamato conto di proprietà esterna (EOA, dall'inglese externally owned account). Quindi, gli smart contract sono controllati da codice informatico, e gli EOA sono controllati dagli utenti.

Fondamentalmente, gli smart contract di Ethereum sono composti da codice contrattuale e due chiavi pubbliche. La prima chiave pubblica è quella fornita dal creatore del contratto. L'altra chiave rappresenta il contratto stesso, agendo come identificatore digitale unico per ogni smart contract.

L'implementazione di qualsiasi smart contract avviene attraverso una transazione sulla blockchain, e può essere attivato solo quando chiamato da un EOA (o da altri smart contract). Tuttavia, la prima attivazione è sempre causata da un EOA (utente).


Caratteristiche principali

Uno smart contract di Ethereum presenta spesso le seguenti caratteristiche:

Distribuito. Gli smart contract vengono replicati e distribuiti in tutti i nodi del network di Ethereum. Questa è una delle differenze fondamentali rispetto ad altre soluzioni basate su server centralizzati.

Deterministico. Gli smart contract eseguono solo le azioni per cui sono stati progettati, quando i requisiti sono soddisfatti. Inoltre, il risultato sarà sempre lo stesso, a prescindere da chi li esegue.

Autonomo. Gli smart contract possono automatizzare ogni sorta di operazione, agendo da programma autoeseguibile. Nella maggior parte dei casi, se uno smart contract non viene attivato, rimarrà "dormiente" e non eseguirà nessuna azione.

Immutabile. Gli smart contract non possono essere modificati una volta implementati. Possono soltanto essere "cancellati" se è stata aggiunta in precedenza una particolare funzione. Quindi, potremmo dire che gli smart contract possono fornire codice a prova di alterazione.

Personalizzabile. Prima del rilascio, gli smart contract possono essere codificati in molti modi diversi. Quindi, possono essere utilizzati per creare molti tipi di applicazioni decentralizzate (DApp). Questo è legato al fatto che Ethereum è una blockchain Turing complete.

Trustless. Due o più parti possono interagire attraverso smart contract senza conoscersi o fidarsi l'una dell'altra. Inoltre, la tecnologia blockchain garantisce che i dati siano accurati.

Trasparente. Dato che gli smart contract sono basati su una blockchain pubblica, il loro codice sorgente non è solo immutabile ma anche visibile a chiunque.


Posso modificare o cancellare uno smart contract?

Una volta implementato, è impossibile aggiungere nuove funzioni a uno smart contract di Ethereum. Tuttavia, se il suo creatore include nel codice una funzione chiamata SELFDESTRUCT , potrà "cancellare" lo smart contract in futuro - e sostituirlo con uno nuovo. Invece, se la funzione non viene inclusa in anticipo nel codice, non potranno cancellarlo.

Tuttavia, i cosiddetti smart contract aggiornabili permettono agli sviluppatori di avere una maggiore flessibilità sull'immutabilità dei contratti. Ci sono molti modi per creare smart contract aggiornabili, con diversi gradi di complessità.

Prendendo un esempio semplificato, immaginiamo che uno smart contract sia diviso in diversi contratti più piccoli. Alcuni di questi sono progettati per essere immutabili, mentre altri hanno abilitato la funzione 'cancella'. Questo significa che parte del codice (smart contract) può essere cancellata e sostituita, mentre altre funzionalità rimangono intatte.


Vantaggi e casi d'uso

Come codice programmabile, gli smart contract sono altamente personalizzabili e possono essere progettati in tanti modi differenti, offrendo vari tipi di servizi e soluzioni.

Come programmi decentralizzati e autoeseguibili, gli smart contract possono fornire una maggiore trasparenza e costi operativi ridotti. A seconda dell'implementazione, possono anche aumentare l'efficienza e ridurre le spese burocratiche.

Gli smart contract sono particolarmente utili in situazioni che coinvolgono il trasferimento o lo scambio di fondi tra due o più parti.

In altre parole, gli smart contract possono essere progettati per una vasta gamma di applicazioni. Alcuni esempi includono la creazione di asset tokenizzati, sistemi di voto, wallet crittografici, exchange decentralizzati, giochi e applicazioni mobile. Possono anche essere rilasciati insieme ad altre soluzioni blockchain che stanno portando innovazioni in vari settori, tra cui quello della sanità, beneficenza, filiera produttiva, governance e finanza decentralizzata (DeFi).


ERC-20

I token emessi sulla blockchain di Ethereum seguono uno standard conosciuto come ERC-20. Lo standard descrive le funzioni fondamentali di tutti i token basati su Ethereum. Quindi, questi asset digitali vengono spesso chiamati token ERC-20, e rappresentano gran parte delle criptovalute esistenti.
Molte società e startup blockchain hanno utilizzato smart contract per emettere i propri token digitali sul network di Ethereum. Dopo l'emissione, la maggioranza di queste società ha distribuito questi token ERC-20 attraverso eventi chiamati Initial Coin Offering (ICO). Nella maggior parte dei casi, l'uso di smart contract ha permesso lo scambio di fondi, e la distribuzione dei token, in modo trustless ed efficiente.


Limiti

Gli smart contract sono composti da codice informatico scritto da umani. Questo comporta diversi rischi dato che il codice è soggetto a vulnerabilità e bug. Idealmente, dovrebbero essere scritti e implementati da programmatori esperti, soprattutto quando andranno a gestire informazioni sensibili o grandi somme di denaro.

Oltre a questo, alcuni sostengono che i sistemi centralizzati possono fornire la maggior parte delle soluzioni e funzionalità offerte dagli smart contract. La differenza centrale è il fatto che gli smart contract vengono eseguiti su un network P2P distribuito, invece di un server centralizzato. Essendo basati su un sistema blockchain, tendono ad essere immutabili o molto difficili da modificare.

La loro immutabilità può essere perfetta in alcune situazioni, ma molto negativa in altre. Per esempio, quando una Organizzazione Autonoma Decentralizzata (DAO) chiamata "The DAO" è stata hackerata nel 2016, milioni di ether (ETH) sono stati rubati a causa di difetti nel codice del loro smart contract.

Dato che il loro smart contract era immutabile, gli sviluppatori non sono stati in grado di correggere il codice. Questo ha portato eventualmente a un hard fork, dando origine a una seconda catena di Ethereum. In parole povere, una catena ha "ripristinato" l'attacco e restituito i fondi ai legittimi proprietari (questa fa parte dell'attuale blockchain di Ethereum). L'altra catena ha deciso di non interferire con l'attacco, sostenendo che ciò che avviene su una blockchain non andrebbe mai modificato (questa catena prende ora il nome di Ethereum Classic).

E' importante notare che il problema non è derivato dalla blockchain di Ethereum. Invece, è stato causato dall'implementazione scorretta di uno smart contract.

Un altro limite degli smart contract è legato al loro stato giuridico incerto. Non solo perché è una zona grigia in gran parte dei paesi, ma anche perché gli smart contract non sono adatti all'attuale quadro normativo.

Per esempio, molti contratti richiedono che entrambe le parti siano identificate correttamente e abbiano più di 18 anni. La pseudo-anonimità fornita dalla tecnologia blockchain, combinata alla mancanza di intermediari, potrebbe compromettere questi requisiti. Anche se esistono potenziali soluzioni a questo problema, l'applicabilità giuridica degli smart contract è una vera e propra sfida - soprattutto quando si tratta di network distribuiti e senza frontiere.


Critiche

Alcuni entusiasti della blockchain vedono gli smart contract come una soluzione che presto sostituirà e automatizzerà gran parte dei nostri sistemi commerciali e burocratici. Anche se questa è una realtà possibile, è probabilmente ancora lontana dal diventare la norma.

Gli smart contract sono certamente una tecnologia interessante. Tuttavia, essendo distribuiti, deterministici, trasparenti e relativamente immutabili potrebbero risultare meno adatti in alcune situazioni.

Essenzialmente, le critiche si basano sul fatto che gli smart contract non sono una soluzione adeguata per molti problemi nel mondo reale. Infatti, ad alcune organizzazioni conviene utilizzare alternative convenzionali basate su server. 

Rispetto agli smart contract, i server centralizzati sono più facili e più economici da mantenere, e tendono a presentare una maggiore efficienza in termini di velocità e comunicazione cross-network (interoperabilità).


In chiusura

Non c'è dubbio che gli smart contract abbiano avuto un grande impatto nel mondo delle criptovalute, e hanno certamente rivoluzionato lo spazio della blockchain. Anche se gli utenti finali non interagiscono direttamente con gli smart contract, è probabile che questi permetteranno in futuro di realizzare una vasta gamma di applicazioni, spaziando dai servizi finanziari alla gestione della catena logistica.

Insieme, gli smart contract e la blockchain hanno il potenziale di rivoluzionare quasi tutte le aree della nostra società. Tuttavia, solo il tempo ci dirà se queste tecnologie all'avanguardia riusciranno a superare le molte barriere che si frappongono all'adozione su larga scala.