GliΒ smart contract sono protocolli informatici che facilitano, verificano, o fanno rispettare, la negoziazione o lβesecuzione di unΒ contratto, essi quindi specificano le condizioni di un accordo tra parti diverse. Sono la versione informatica dei contratti fisici tra le persone validati da un notaio.
Il termine smart si riferisce al fatto che le condizioni sono specificate ed eseguite sotto forma di codice eseguito in una Blockchain, anzichΓ© su un foglio di carta conservato da un notaio.
La blockchain Γ¨ lβinfrastruttura informatica che si sostituisce al notaio in quanto garantisce, intrinsecamente,Β sicurezza, affidabilitΓ e accessibilitΓ . Io potrei, potenzialmente, scrivere i miei smart contract con un normale software ma questo non sarebbe trasparente ne sicuro. Si sfrutta quindi la blockchain per poter far girare degli script βvalidatiβ intrinsecamente. E quando si parla di milioni di dollari questa condizione Γ¨ fondamentale.
Differenze tra contratto tradizionale e smart contract
Il contratto tradizionale trova il proprio meccanismo di salvaguardia nel suo essere giuridicamente vincolante, in quanto protetto da una fonte normativa esterna al contratto, ovvero, dallβordinamento giuridico. Infatti, Γ¨ lβordinamento giuridico a prevedere, nel caso in cui una delle parti dovesse essere inadempiente, la possibilitΓ per la parte soccombente a questo tipo di condotta, di adire lβautoritΓ giudiziaria per modificare, annullare o far eseguire le obbligazioni pattuite.
Il contratto intelligente, a differenza del contratto tradizionale, pone il suo meccanismo di vincolativitΓ nella peculiare tecnologia dellaΒ blockchainΒ e delloΒ smart contractΒ che impedisceΒ ab initioΒ lβinadempimento delle parti. Per il nodo Γ¨ tecnicamente impossibile violare volontariamente le condizioni prestabilite. Tutto questo pone in secondo piano le problematiche attinenti alla condotta del singolo ai fini dellβadempimento.
Smart contract sulla blockchain Ethereum
Ethereum Γ¨ la blockchain piΓΉ utilizzata per la definizione di smart contract. Vediamo velocemente i passaggi per poter inserire un nuovo contratto allβinterno di essa.
- Definizione dellβaccordo: Per prima cosa vi deve essere un accordo univoco tra le parti, oppure una procedura standard, da tradurre in linguaggio macchina. Gli smart contract sono scritti in numerosi linguaggi di programmazione (tra cui Solidity, Web Assembly e Michelson).
- Inserimento nella blockchain: Una volta scritto questo deve essere trascritto nella blockchain. Ethereum, in quanto permissionless, permette a tutti di effettuare questa operazione. CβΓ¨ una verifica sulla disponibilitΓ dei fondi dellβutente che registra il contratto.
- Creazione del blocco: La rete dei dispositivi interconnessi garantisce il mantenimento, lβaccessibilitΓ e il corretto aggiornamento di un Distributed Ledger. Lo smart contract entra a far parte di un blocco (identificato univocamente da un codice hash) che viene validato dai partecipanti della blockchain
- Validazione: in Ethereum la validazione di un blocco Γ¨ attraverso il Proof of Work, quindi la soluzione di un problema matematico. Il nodo che trova la soluzione e registra un contratto riceve una remunerazione in Ether.
- Aggiunta alla catena: una volta validato il nodo viene aggiunto alla catena, la quale Γ¨ certificata. Lβoperazione Γ¨ pubblica e mostrata sulla piattaforma. Ogni nodo aggiunge un hash alla catena in modo che questa sia sicura e non contraffabile
- Lβoracolo: per definizione uno smart contract non puΓ² accedere a dati off-chain, quindi fuori dalla blockchain. In questi casi Γ¨ necessario utilizzare gli oracoli (oracles in inglese) che sono programmi terzi che fungono tra bridge tra dati on-chain e off-chain. Esistono anche oracoli decentralizzati come Chainlink.
- Esecuzione: ricevuto lβinput dallβoracolo avviene lβesecuzione del contratto, qualora le condizioni siano rispettate. per eseguire uno smart contract sulla rete Ethereum, Γ¨ necessario versare una commissione denominata βgasβ (Γ¨ chiamata cosΓ¬ perchΓ© le commissioni consentono alla blockchain di funzionare).
Esempi
- Etherisc: assicurazione sui viaggi aerei decentralizzata, che opera sulla piattaformaΒ Ethereum. LoΒ smart contractΒ interroga delle Api (alla fine Γ¨ codice, quindi le sue potenzialitΓ sono infinite) per avere informazioni sugli orari di partenza e, in caso di ritardo del volo garantito dalla polizza, fa scattare automaticamente il rimborso
- Uniswap: una piattaforma di negoziazione decentralizzata che consente agli utenti, tramite smart contract, di scambiare alcuni tipi di criptovaluta senza alcuna autoritΓ centrale che stabilisca i tassi di cambio.
- Compound: una piattaforma che utilizza gli smart contract per consentire agli investitori di guadagnare interessi e ai richiedenti di ottenere immediatamente un prestito, senza lβintermediazione di un istituto bancario.Β
Eliminazione
Uno smart contract, una volta inserito in una blockchain non Γ¨, teoricamente, eliminabile. Come fare quindi se non le parti non vogliono piΓΉ utilizzare tale contratto? Potrebbe essere anche una clausola del contratto stesso la sua eliminazione. In alcune blockchain evolute (come Ethereum) Γ¨ stata implementata la possibilitΓ di effettuare il kill o funzione di autodistruzione delloΒ smart contract. Questa funzione Γ¨ stata pensata per rimuovere i programmi non piΓΉ impiegati, con la finalitΓ di efficientare leΒ performanceΒ dellaΒ blockchain, ma puΓ² essere anche utilizzata dal nodo che ha creato lo smart contract per, attraverso lβinoltro di una transazione e immettendo nellaΒ blockchain il corrispondente codice elettronicamente firmato, ovvero, le parti potrebbero anche inserire la funzione di autodistruzione allβinterno delloΒ smart contractΒ e nellβeventualitΓ prevedere, in un accordo a latere, i casi di attivazione della medesima.
Limiti
- Non tutto Γ¨ traducibile in linguaggio informatico: nella realtΓ Γ¨ facile riscontrare casi in cui per gestire alcuni accordi si rende necessario conferire un certo grado di ambiguitΓ e discrezionalitΓ che Γ¨ impossibile tradurre in codice
- Le parti che sottoscrivono tale contratto possono non essere dei programmatori, essi quindi si troverebbero nella condizione di chiedere a terzi programmatori che si occuperebbero di trasporre il linguaggio naturale in linguaggio formale comprensibile alla macchina. Ho quindi un dispendio economico e una delega a terzi, che di fatto sono gli intermediari che dovrebbero, teoricamente, non servire piΓΉ con lβavvento di questa tecnologia.
- Il programmatore che scrive il contratto potrebbe compiere degli errori, sia di interpretazione che di programmazione. Questi errori porterebbero dei risultati inattesi senza la possibilitΓ di modificare tale contratto.
- Essendo la blockchain una tecnologia per definizione internazionale, in caso di controversie quale sistema giuridico utilizzare?
Conclusione
Definiti i vantaggi e i limiti, loΒ smart contractΒ Γ¨ una soluzione estremamente innovativa e conveniente in presenza di accordi standard definiti univocamente e poco complessi. In quel caso basta programmare una sola volta lo smart contract e poi numerosi enti lo potranno utilizzare senza temere bug o ambiguitΓ .
Pensare di sostituire qualsiasi accordo commerciale con uno smart contract ad oggi Γ¨ difficile, ma si possono fare dei passi in avanti per la regolamentazione e giustiziabilitΓ di tali contratti in modo da poter utilizzare, potenzialmente, una soluzione ibrida.
La finanza centralizzata, o DeFi, Γ¨ lβapplicazione piΓΉ concreta ed utilizzata di smart contract e permette di investire denaro, o di ottenerlo tramite prestiti, senza passare per una banca o un exchange, riducendo quindi i costi senza rinunciare alla sicurezza.