In questo articolo voglio spiegarti al meglio cosa si intende per smart contracts e quali sono le tre leggende metropolitane – quindi credenze errate – ad essi legate.
Per la prima volta descritti dal crittografo Nick Szabo nel documento del 1994 intitolato “Smart Contracts”, Szabo descrive il concetto come ” un protocollo di transazione computerizzata che esegue i termini di un contratto”. Oggi l’ascesa della blockchain di Ethereum ha facilitato il facile sviluppo di questo concept in ambiente pubblico.
Ma questo ha portato un po’ di confusione circa gli smart contract. (Se sei poco pratico di smart contracts, questo articolo potrebbe darti una mano).
Ma prima di addentrarci nell’argomento, vorrei dire che credo che il numero di possibilità e utilizzi degli smart contracts è enorme e potrebbe davvero cambiare le cose in tantissimi settori industriali. Comunque, lavorando in diverse aziende, ho notato che molte faticano a capire cosa siano realmente gli smart contracts, come funzionano e cosa possono fare.
Queste sono le tre leggende metropolitane che girano maggiormente.
1. “Gli Smart contracts sono codice, non contratti”
Una frase comune che è spesso citata è “gli smart contract non sono né intelligenti né contratti, sono solo codici muti”.
In alcuni casi questo potrebbe essere vero, come quando stai creando un’applicazione decentralizzata che non prevede il trasferimento di valore. Comunque, in altri casi, gli smart contracts possono avere molte più caratteristiche dei contratti convenzionali.
Quando parliamo di contratti convenzionali, la semantica del contratto consiste per lo più di due elementi:
- Semantica operativa, che consiste nell’interpretazione operativa del contratto. Descrive le precise azioni così come concordate dalle parti coinvolte. Questo è tipicamente ciò che viene programmato in uno smart contract.
- Semantica denotazionale, ovvero l’interpretazione legale e non operativa dell’intero contratto, incluso, ma non limitato, ogni riferimento ad altri documenti, giurisdizione, ecc. Questa è l’interpretazione che ne darebbe un avvocato se leggesse il contratto. Questo elemento, nella maggior parte dei casi, non è incluso negli smart contracts, sebbene alcuni riferimenti potrebbero essere aggiunti come commenti all’interno del codice.
Perché la gente sottoscrive dei contratti? La maggior parte perché non si fida ciecamente dell’altro per l’esecuzione di un accordo (a differenza di un accordo a voce) o come prova per terze parti che un trasferimento di beni è legittimo.
Tenendo presente questo e l’elemento operativo della semantica di un contratto, se uno smart contract è il risultato di un accordo tra due o più parti e “firmato” da tutte le parti, questo potrebbe essere visto come costituente la parte semantica operativa di un contratto tradizionale, sebbene si sia scritto in una lingua sconosciuta.
La gestione di eventuali conflitti potrebbe seguire più o meno lo stesso percorso di tutti i contratti tradizionali, vale a dire tribunali, mediazioni, ecc…
La differenza principale sarebbe che in molti casi il trasferimento di valore come risultato dell’esecuzione automatica di un contratto sarebbe già avvenuto.
2. “Gli Smart contracts possono operare in modo completamente autonomo”
Questo ci porta al secondo errore.
Uno degli errori più comuni è che la gente ha la percezione che uno smart contract possa attivamente scansionare il proprio ambiente ed eseguire una risposta in base ai cambiamenti avvenuti, cioè che uno smart contract possa interrogare in modo proattivo un database esterno e cambiare il proprio stato in base ai risultati della query.
La blockchain, nella sua essenza, è un’operazione guidata. Questo vale anche per gli smart contract anche se gli smart contract sono reattivi.
Il codice di uno smart contract viene eseguito solo quando messo in atto da una transazione o un messaggio che viene inviato allo smart contract stesso. Questo può essere effettuato da un account esterno (in possesso di una persona fisica o da un’azienda) inviando una transazione o da un altro smart contract che invia un messaggio all’altro smart contract.
Inoltre, l’informazione disponibile allo smart contract durante l’esecuzione è abbastanza limitata.
Così come si legge nella documentazione di ethereum, “Questa esecuzione ha bisogno di essere completamente deterministica, il suo solo contesto è la posizione del blocco sulla blockchain e tutti i dati disponibili”. Inoltre, “non è solo in modalità sandbox, ma è completamente isolato, il che vuol dire che il codice che corre in EVM non ha accesso al network, file di sistemi o altri processi. Gli smart contract hanno accesso limitato agli altri smart contract.”
I dati disponibili sono i dati inviati al contratto nella transazione o messaggio più i dati che si trovano nella memoria del contratto.
Mentre uno smart contract può richiamare altri smart contract, (per es. leggere i saldi degli altri smart contract) la re-entrancy non è raccomandata da diversi esperti che dicono che dovrebbe essere utilizzata solo come ultima risorsa.
Inoltre, gli smart contract possono solo fare calcoli base come addizione, sottrazione e divisione. Non sono capaci di eseguire grandi analisi di dati.
Quindi, quando si tratta di definire i processi che includono gli smart contract, sappi che a questo punto sono reattivi, hanno informazioni limitate su cui possono lavorare, possono fare calcoli base e hanno limitate possibilità di interazione.
3. “LO smart contract”
Non esiste LO smart contract.
Così come la gente spesso sbaglia nel parlare de “LA blockchain”, invece di riferirsi ad una specifica blockchain (per es. bitcoin, ethereum, hyperledger, ecc.), lo stesso errore viene compiuto quando si parla di smart contract.
La maggior parte delle blockchain non hanno la possibilità di far girare gli smart contract e, se possono, hanno forme molto limitate. Gli strumenti che uno smart contract può possedere differiscono a seconda della blockchain di riferimento.
Quindi, quando vuoi creare delle soluzioni che hanno bisogno di smart contract, non esiste LO smart contract. Per creare uno smart contract che si adatta alle tue necessità devi stare attento nello scegliere quale blockchain utilizzare.
Commenti
Una risposta
Ciao Amelia,
grazie per l’interessante articolo.
Da un anno l’argomento mi ha completamente sedotto e mi sono ridotto a leggere solo white paper.
Hai scritto qualcosa, sicuramente di interessante, su Kodak?