logo academy

Cosa sono gli Smart Contract di Ethereum e come funzionano?

29 agosto, 2022

10 min

Cosa sono gli Smart Contract di Ethereum e come funzionano?
Principiante

Cosa sono gli smart contract? Software costruiti su blockchain per automatizzare e decentralizzare qualunque tipo di applicazione. Le applicazioni decentralizzate, create attraverso questi codici, si chiamano in breve DApp: costituiscono la base della Finanza Decentralizzata (DeFi) e del Web3. Come nascono gli smart contract e come funzionano? Seguiamo l’evoluzione della tecnologia fino agli smart contract Ethereum e proiettiamoci nel futuro: gli smart contract sostituiranno i contratti tradizionali?

Smart Contract: cosa sono?

Le regole sono fondamentali per la stabilità di ogni società umana. Per questo si stipulano i contratti: una garanzia che gli accordi vengano rispettati dalle parti coinvolte. L’efficacia dei contratti tradizionali, però, non è istantanea: i termini e le condizioni passano da un circuito burocratico di intermediari (i contraenti stessi, avvocati, giudici, notai) prima di entrare in vigore, venire modificati o essere applicati. Ciò risulta in un processo spesso lento e macchinoso, talvolta in un’interpretazione arbitraria del contratto stesso. 

Gli accordi registrati negli smart contract, invece, generano automaticamente le logiche conseguenze quando le condizioni dichiarate si verificano. In poche parole, gli smart contract definiscono una serie di catene causa-effetto, in base a formulazioni di tipo “se…allora”: ad esempio, SE pago l’affitto il primo del mese ALLORA il proprietario mi lascia usare l’appartamento. Praticamente, come funziona uno smart contract? Innanzitutto, una delle parti coinvolte nell’accordo genera una transazione (se…), come l’invio di un certo quantitativo di criptovalute, o una trasmissione di informazioni. Questa transazione è presa in carico dallo smart contract di riferimento che, valutandola nel rispetto delle regole, genera a sua volta una o più transazioni (…allora). Questo risultato potrebbe consistere nell’invio di fondi al secondo soggetto, coinvolto nell’accordo, oppure nello sblocco dell’accesso ad un oggetto reale, come un appartamento nel nostro caso. 

Questi “contratti” sono “intelligenti” perché concretizzano i risultati in modo ottimale, riducendo all’essenziale il meccanismo che regola i rapporti tra le parti. Inoltre, un contratto di questo tipo è “smart” non in quanto “razionale”, ma perché non ammette eccezioni o interpretazioni, agendo in modo programmato e predeterminato. 

Quindi, cos’è uno smart contract? Essenzialmente un software sviluppato ed eseguito sulla blockchain, composto da codici che definiscono le regole per il funzionamento del programma stesso. Gli smart contract, infatti, hanno le stesse caratteristiche della tecnologia alla base delle criptovalute:

  • Immutabilità: una volta creati, gli smart contract non possono essere modificati; come i blocchi che contengono le transazioni di Bitcoin, non possono essere “riscritti”. 
  • Decentralizzazione: gli smart contract sono distribuiti tra tutti i nodi appartenenti al network di una blockchain. Come abbiamo detto, infatti, gli smart contract generano transazioni, se attivati, e i nodi devono raggiungere il consenso sulla validità di queste risultanti, prima di registrarle nella blockchain. Pertanto ogni nodo, singolarmente, ripete il processo di richiesta allo smart contract, così da valutare la sua risposta: se la maggior parte dei nodi riceve il medesimo riscontro, allora la transazione è ritenuta valida. Questo è possibile perché ogni nodo conserva una copia del codice di tutti gli smart contract.
  • Trustless: il consenso raggiunto dai nodi sulle conseguenze di un accordo è sufficiente a rendere efficace uno smart contract. I soggetti che interagiscono, attraverso di esso, non hanno bisogno di avere fiducia l’uno nell’altro, tantomeno in un intermediario garante. 
  • Trasparenza/privacy: i codici degli smart contract, essendo ospitati in una blockchain, possono essere consultati da chiunque. Questa completa visibilità, però, non sacrifica la privacy: gli utenti che usano gli smart contract conservano l’anonimato, perché si identificano con i propri indirizzi wallet o con chiavi crittografiche.

Per comprendere appieno cos’è uno smart contract, però, dobbiamo ancora approfondire i motivi che hanno portato alla sua creazione nel mondo crypto. Perché è necessaria l’esecuzione automatica di software immutabili e distribuiti? Scopriamolo ricostruendo la storia degli smart contract: dall’origine del concetto alla prima implementazione di successo in Ethereum

La storia degli smart contract: da Nick Szabo a Vitalik Buterin

Chi ha inventato gli smart contract? La forma in cui li conosciamo oggi è un’idea di Vitalik Buterin, il creatore di Ethereum, ma l’origine del concetto è antecedente. È stato Nick Szabo, infatti, ad aver coniato il termine “smart contract”, definendolo nel 1994 come “un protocollo di transazione computerizzato che esegue i termini di un contratto.” 

L’ideatore di Bit Gold, una moneta decentralizzata basata su crittografia e Proof-of-Work (come Bitcoin), per questo candidato all’identità di Satoshi Nakamoto, nello stesso documento elenca i possibili vantaggi degli smart contract. Innanzitutto, la riduzione dei costi di esecuzione dei contratti e della dipendenza da intermediari, ma anche la creazione di nuovi modelli di business e istituzioni sociali. Infatti, Szabo propose di creare e scambiare asset sintetici, così come di trasferire “diritti di voto” attraverso gli smart contract: quest’ultima funzione è stata effettivamente implementata nelle DAO, come vedremo dopo, così come l’emissione di token derivati è oggi comune nella DeFi

L’evoluzione del concetto, dunque, ci ha condotto alla sua prima versione moderna, gli Smart Contract Ethereum: l’implementazione su blockchain di Vitalik Buterin ha messo in pratica l’idea di Szabo. Il codice di Ethereum, infatti, è nato per andare oltre gli scambi di valore peer-to-peer (P2P) di Bitcoin: creare software per qualsiasi applicazione decentralizzata, proprio attraverso gli smart contract. 

Per creare un vero ecosistema di Finanza Decentralizzata (DeFi) e, più in generale, tutti i prodotti e servizi che oggi riconosciamo come Web3, infatti, serviva sostituire le terze parti tradizionali con la programmazione di codici. Gli smart contract avrebbero automaticamente condotto gli accordi ai risultati predeterminati, senza l’intervento umano: un obiettivo complesso, perché questi programmi dovevano, allo stesso tempo, rispettare le caratteristiche della blockchain, elencate in precedenza, ed essere relativamente “semplici” da creare. In poche parole, c’era bisogno di un linguaggio standard e comprensibile a tutti gli sviluppatori, così come di un ambiente condiviso che ospitasse tutte le “regole” degli smart contract. Ethereum è stata dotata di entrambi: scopriamo Solidity e l’Ethereum Virtual Machine (EVM). 

Solidity e EVM

Gavin Wood, uno dei fondatori di Ethereum nonchè di Polkadot, propose il linguaggio di programmazione per gli smart contract Ethereum: Solidity. La sua sintassi a “parentesi graffe” deriva dal C++, il linguaggio in cui Wood inizialmente implementò il whitepaper di Ethereum, e supporta librerie di codici riutilizzabili, ovvero funzioni standard richiamabili da ogni smart contract. 

Gli smart contract vengono scritti in Solidity ma, per essere utilizzati, devono essere eseguiti sulla blockchain di Ethereum; per fare ciò, vengono “compilati”, ovvero tradotti in bytecode: una sequenza di comandi, chiamati OP CODE. Queste istruzioni descrivono passo passo delle operazioni, svolte dalla Ethereum Virtual Machine (EVM): una “macchina virtuale”, ovvero l’ambiente in cui tutti gli smart contract vengono eseguiti. Immaginalo come un “world computer” in grado di supportare qualsiasi tipo di programma, avendo abbastanza tempo e spazio. Vitalik Buterin ha anche descritto l’EVM come un “coltellino svizzero”, un insieme di strumenti (software) e regole adatto potenzialmente a qualsiasi bisogno. 

Proprio questo, infatti, era l’obiettivo della creazione di Ethereum: decentralizzare ogni servizio e fornirlo attraverso la tecnologia blockchain. Un impegno reale, perché oggi le applicazioni decentralizzate (DApp) più utilizzate si trovano su Ethereum, a fianco delle più grande Organizzazioni Autonome Decentralizzate (DAO); tuttavia, cosa sono le DApp e cos’è una DAO? 

Cosa sono DApp e DAO?

Cosa differenzia DApp e smart contract? Semplicemente, le DApp sono applicazioni costruite su blockchain, le cui funzioni corrispondono a diversi smart contract; un insieme di codici per i più disparati casi d’uso: oltre la finanza, gaming e social network, ad esempio.

Il protocollo di Bitcoin per lo scambio p2p di criptovalute, in realtà, potrebbe essere la prima DApp crypto, ma la rappresentazione più accurata deriva ancora da uno scritto di Nick Szabo: un distributore automatico, che fornisce prodotti e servizi in cambio del giusto numero di monete. Quindi, inviando criptovalute, o spesso solo pagando una commissione (gas fee), potrai sfruttare le funzioni di uno smart contract: riprendiamo gli esempi di DApp citati per capire meglio.

  • Finanza: esistono DApp Ethereum per i prestiti decentralizzati, come Aave, ed exchange decentralizzati (DEX) per scambiare token crypto, come la DApp Uniswap. Se vuoi approfondire la ricerca su smart contract e DApp, i fondatori di questi progetti, Stani Kulechov e Hayden Adams, hanno storie interessanti da raccontarti.
  • GameFi: il videogioco Axie Infinity è nato su Ethereum, un esempio di DApp Game Finance
  • Social Network: è ancora del fondatore di Aave il progetto di un social network Web3, sebbene non ne sia il primo esempio (ricordiamo Steemit e Voice). Essenzialmente si tratta di una DApp simile a Twitter, ma basata su token e smart contract: il Lens Protocol

Gli smart contract, però, possono supportare anche funzioni sociali: le Organizzazioni Autonome Decentralizzate (DAO) riuniscono virtualmente i possessori di una certa criptovaluta (token holder), aventi dunque diritto ad esprimersi su temi d’interesse per la DAO. Il diritto di voto è la base di tutte le funzioni di governance, appunto realizzate attraverso smart contract: la gestione della tesoreria di un progetto, la proposta e l’attuazione degli aggiornamenti del protocollo, la definizione e la modifica della roadmap e molto altro. Le DAO dei possessori di UNI e AAVE sono ugualmente ospitate dalla blockchain di Ethereum, ma ne esistono altri esempi: Yearn Finance (YFI), Ethereum Name Service (ENS) e Compound (COMP). Tutti i token di riferimento sono anch’essi emessi da un particolare tipo di standard smart contract nativo di Ethereum, l’ERC-20

Il futuro degli Smart Contract

Gli smart contract sembrano la soluzione ideale per decentralizzare servizi Web3 ed applicazioni in DApp, ma hanno dei limiti. Innanzitutto, essendo gli smart contract scritti da umani, è possibile che contengano errori: i codici hanno bisogno di tempo per essere revisionati, quindi sottoposti ad audit. La sicurezza della tecnologia blockchain, così come della DeFi che da essa deriva, deve ancora essere debitamente testata.

Infine, programmare la variabilità e la casualità, caratteristiche del mondo reale, è estremamente complesso: gli smart contract non hanno ancora una “flessibilità” tale da includere il fattore umano. L’integrazione con la tecnologia degli oracoli (Chainlink) porta on-chain eventi ed informazioni del mondo reale, così come l’Intelligenza Artificiale (AI) potrebbe analizzare i processi degli smart contract per ottimizzarli e fare utili previsioni, ma creare software per gestire le infinite sfaccettature del comportamento umano rimane estremamente difficile. Questo svantaggia la blockchain rispetto alle soluzioni tradizionali centralizzate: per risolvere articolate dispute ci rivolgeremo ancora a giudici e avvocati, ma forse un giorno gli smart contract riusciranno a chiarire tutto in stringhe di codice. 

Correlati