Introduzione
I contratti intelligenti sono stati descritti per la prima volta negli anni '90 da Nick Szabo. Ha definito un contratto intelligente come uno strumento che formalizza e protegge le reti informatiche, combinando protocolli con interfacce utente.
Szabo considerava l'uso dei contratti intelligenti in vari settori legati, ad esempio, a accordi contrattuali, sistemi di credito, elaborazione dei pagamenti e diritti di proprietà sui contenuti.
Nel mondo delle criptovalute, un contratto intelligente è un'applicazione che funziona su blockchain. Funziona come un accordo digitale supportato da un insieme di regole. Queste regole sono definite da codice informatico che viene copiato e elaborato da tutti i nodi della rete.
I contratti intelligenti consentono di creare protocolli senza necessità di fiducia. Ciò significa che entrambe le parti possono interagire tramite la blockchain senza la necessità di fidarsi l'una dell'altra. I partecipanti al processo possono essere certi che la mancata conformità ai termini del contratto comporterà la sua annullamento. Inoltre, l'uso di contratti intelligenti elimina la necessità di intermediari, riducendo significativamente i costi delle operazioni.
Anche se il protocollo Bitcoin supporta i contratti intelligenti da molti anni, la loro popolarità è dovuta al creatore e co-fondatore di Ethereum, Vitalik Buterin. Ogni blockchain può utilizzare il proprio modo di implementare i contratti intelligenti.
L'argomento principale di questo articolo sono i contratti intelligenti che funzionano sulla macchina virtuale Ethereum (EVM), che è una parte fondamentale della blockchain di Ethereum.
Come funziona?
In parole semplici, un contratto intelligente funziona come un programma deterministico. Esegue determinate azioni quando vengono soddisfatte condizioni specifiche. Da questo punto di vista, il sistema dei contratti intelligenti utilizza spesso espressioni come "se... allora...". Nonostante la terminologia comune, i contratti intelligenti non sono né contratti in senso giuridico né "intelligenti" (dal termine inglese smart). Sono semplicemente frammenti di codice eseguiti in un sistema distribuito (sulla blockchain).
Sulla rete Ethereum, i contratti intelligenti sono responsabili dell'esecuzione delle operazioni tra gli utenti (indirizzi). Qualsiasi indirizzo che non è un contratto intelligente è chiamato account personale (EOA). Pertanto, i contratti intelligenti sono gestiti da codice informatico, mentre gli account personali sono gestiti dagli utenti.
Essenzialmente, i contratti intelligenti di Ethereum consistono nel codice del contratto (che contiene le condizioni di esecuzione) e due chiavi pubbliche. La prima chiave pubblica è fornita dal creatore del contratto. L'altra chiave rappresenta il contratto stesso, fungendo da identificatore digitale unico per ogni contratto intelligente.
L'esecuzione di qualsiasi contratto intelligente avviene durante una transazione blockchain, e possono essere attivati da un account personale (o da un altro contratto intelligente). Tuttavia, la sequenza di contratti intelligenti viene sempre avviata da un account personale (cioè dall'utente).
Caratteristiche principali
Un contratto intelligente di Ethereum ha spesso le seguenti caratteristiche:
Distribuzione. I contratti intelligenti sono replicati e distribuiti su tutti i nodi della rete Ethereum. Questa è una delle loro principali differenze rispetto ad altre soluzioni che usano server centralizzati.
Determinismo. I contratti intelligenti eseguono azioni per cui sono stati progettati quando vengono raggiunti i requisiti stabiliti. Inoltre, il risultato sarà sempre lo stesso indipendentemente da chi esegue i requisiti.
Autonomia. I contratti intelligenti possono automatizzare ogni tipo di attività, funzionando come un programma autoeseguente. Nella maggior parte dei casi, se un contratto intelligente non è stato avviato, si trova in "inattività" e non esegue nessuna azione.
Immutabilità. Non è possibile modificare il funzionamento di un contratto intelligente dopo la sua creazione e attivazione. Le modifiche possono essere apportate solo se gli sviluppatori hanno implementato in precedenza una determinata funzione. Pertanto, possiamo dire che i contratti intelligenti possono garantire protezione contro l'hacking del codice tramite una prova di autenticità.
Personalizzazione. I contratti intelligenti possono essere codificati in vari modi, ad esempio per la creazione di diversi tipi di applicazioni decentralizzate (DApps). Ciò è dovuto al fatto che Ethereum è stato creato in base alla completezza di Turing.
Assenza di fiducia. Due o più parti possono interagire attraverso i contratti intelligenti, senza conoscersi e senza fiducia reciproca. Inoltre, la tecnologia blockchain garantisce l'accuratezza e la registrazione di tutti i dati.
Trasparenza. Poiché i contratti intelligenti si basano su blockchain pubblica, il loro codice sorgente è accessibile a tutti.
Posso modificare o eliminare un contratto intelligente?
Gli utenti di Ethereum non possono aggiungere nuove funzionalità dopo l'attivazione di un contratto intelligente. Tuttavia, se lo sviluppatore include nel codice del contratto una funzione chiamata SELFDESTRUCT, in seguito potrà eliminarlo e sostituirlo con uno nuovo. Senza questa funzione, sarà impossibile eliminare un contratto intelligente.
È interessante notare che i cosiddetti contratti intelligenti aggiornabili offrono agli sviluppatori l'accesso alle modifiche del codice, offrendo così maggiore flessibilità rispetto ai contratti immutabili. Ci sono molti modi per creare questo tipo di contratti intelligenti di varia complessità.
Consideriamo questo con un semplice esempio. Immaginiamo che un contratto intelligente sia suddiviso in diversi piccoli contratti. Alcuni di essi non possono essere modificati, mentre altri possono essere eliminati, grazie alla funzione menzionata sopra. Ciò significa che una parte del codice (un certo numero di contratti intelligenti) può essere eliminata e sostituita con un'altra, mentre le altre funzionalità rimangono invariate.
Vantaggi e opzioni di utilizzo
Poiché si tratta di codice programmabile, i contratti intelligenti possono essere facilmente configurati e sviluppati in modi diversi, offrendo vari tipi di servizi e soluzioni.
Come programma decentralizzato e autoeseguente, i contratti intelligenti possono garantire maggiore trasparenza e ridurre i costi operativi. A seconda dell'ambito di attività, possono anche migliorare l'efficienza e ridurre i costi burocratici.
I vantaggi dei contratti intelligenti si manifestano in particolare quando si tratta di trasferimenti di denaro o scambi di fondi tra due o più parti.
In altre parole, i contratti intelligenti possono essere sviluppati per una varietà di casi d'uso, inclusa la creazione di asset tokenizzati, sistemi di voto, portafogli crittografici, scambi decentralizzati, giochi e applicazioni mobili. Possono anche essere implementati insieme ad altre soluzioni blockchain in settori come la sanità, la beneficenza, la catena di approvvigionamento, la gestione e la finanza decentralizzata (DeFi).
ERC-20
I token emessi sulla blockchain di Ethereum seguono lo standard ERC-20, che descrive le loro funzioni principali. Sono spesso chiamati token ERC-20 e costituiscono la maggior parte delle criptovalute esistenti.
Molte aziende e startup sviluppano contratti intelligenti per emettere i propri token digitali sulla rete Ethereum. Dopo l'emissione, la maggior parte di esse distribuisce i propri token ERC-20 attraverso un'offerta iniziale di monete (ICO). I contratti intelligenti consentono di scambiare e distribuire fondi in modo sicuro ed efficiente.
Svantaggi
I contratti intelligenti consistono in codice informatico scritto da persone. Questo è la causa di numerosi rischi, poiché il codice è soggetto a vulnerabilità ed errori. Idealmente, lo sviluppo dovrebbe essere effettuato da programmatori esperti, soprattutto quando si tratta di informazioni riservate o grandi somme di denaro.
Si ritiene che i sistemi centralizzati possano fornire la maggior parte delle soluzioni e delle funzioni dei contratti intelligenti. La principale differenza è che i contratti intelligenti vengono eseguiti in una rete distribuita peer-to-peer (P2P), e non su un server centralizzato. E poiché i contratti intelligenti si basano sulla blockchain, di solito sono immutabili o troppo complessi da modificare.
A volte l'immutabilità è utile, ma non sempre. Ad esempio, nel 2016, gli hacker hanno violato l'organizzazione autonoma decentralizzata The DAO e rubato milioni di dollari in Ether (ETH) sfruttando vulnerabilità nel codice del contratto intelligente.
Poiché il contratto intelligente The DAO era immutabile, gli sviluppatori non sono riusciti a correggere il codice. Questo ha portato a un hard fork e alla creazione di una seconda catena Ethereum. In parole semplici, una catena ha annullato l'hack e restituito i fondi ai legittimi proprietari (questa catena è parte dell'attuale blockchain di Ethereum), mentre l'altra non ha reagito all'hack, seguendo l'idea che gli eventi sulla blockchain non dovrebbero mai essere modificati (quest'ultima catena è ora chiamata Ethereum Classic).
Va notato che il problema non è sorto a causa del funzionamento della blockchain di Ethereum. Invece, l'errore è stato causato da una realizzazione errata del contratto intelligente.
Un altro svantaggio dei contratti intelligenti è legato al loro status giuridico incerto. E questo non è solo dovuto al fatto che in molti paesi questa tecnologia è in una "zona grigia", ma anche perché i contratti intelligenti non si conformano all'attuale quadro normativo.
Ad esempio, uno dei requisiti principali di molti contratti è l'identificazione rigorosa dei partecipanti e l'età di almeno 18 anni. L'anonimato garantito dalla tecnologia blockchain, combinato con l'assenza di intermediari, può ostacolare la conformità a tali requisiti. Anche se esistono soluzioni potenziali a questo problema, l'aspetto legale dei contratti intelligenti è uno dei principali problemi, soprattutto quando si tratta di scala globale e reti distribuite.
Critiche
Alcuni appassionati di blockchain vedono nei contratti intelligenti una soluzione che potrebbe sostituire e automatizzare gran parte dei sistemi commerciali e burocratici esistenti. Anche se ciò è sicuramente realizzabile, i contratti intelligenti sono lontani dall'essere un uso normale in questo campo.
I contratti intelligenti sono sicuramente una tecnologia interessante. Ma la loro natura distribuita e deterministica, così come la trasparenza e la parziale immutabilità, li rendono meno attraenti per l'uso in alcune situazioni.
Essenzialmente, tutta la critica si basa sul fatto che i contratti intelligenti non sono una soluzione adatta a molti problemi reali. E in effetti, ad alcune organizzazioni è più facile e conveniente utilizzare normali server alternativi.
Rispetto ai contratti intelligenti, i server centralizzati sono più semplici ed economici da mantenere. Inoltre, possono anche garantire maggiore efficienza in termini di velocità operativa e interazione con altre reti (funzionalità compatibile).
Riepilogo
Senza dubbio, i contratti intelligenti hanno avuto un grande impatto sul mondo delle criptovalute e hanno sicuramente rivoluzionato il campo delle tecnologie blockchain. Poiché gli utenti finali potrebbero non interagire direttamente con i contratti intelligenti, potrebbero in futuro servire da base per una vasta gamma di applicazioni: dai servizi finanziari alla gestione della catena di approvvigionamento.
Il potenziale congiunto dei contratti intelligenti e della blockchain potrebbe avere un impatto significativo su quasi tutti gli aspetti della vita sociale. Ma solo il tempo dirà se queste tecnologie innovative riusciranno a superare le barriere all'adozione su larga scala.

