Smart Contract - Token-Economy-Book/ItalianTranslation GitHub Wiki
Uno smart contract è una applicazione software che viene elaborato da un ledger distribuito. È uno strumento di gestione dei diritti che può formalizzare ed eseguire accordi via Internet tra partecipanti tra i quali non esiste una relazione di fiducia, ed include regole di conformità e controllo. Gli smart contract possono ridurre i costi di formalizzazione ed esecuzione di un semplice accordo tra due parti, lo statuto di un'organizzazione, o creare diversi tipi di token.
Stipulereste un contratto con qualcuno che non avete mai incontrato, che quindi non conoscete e di cui non vi fidate? Diventereste un investitore in una piccola azienda in un paese straniero? Accettereste di prestare denaro a uno sconosciuto, come un contadino in Guatemala, un insegnante in Cina o un cassiere nel Regno Unito? O stabilireste un contratto legalmente vincolante per un acquisto di 1 euro su Internet, come comprare una canzone da un artista? La risposta in tutti i casi sopra citati è probabilmente no, poiché il costo della creazione del contratto legale necessario per assicurare la transazione è troppo alto. In alternativa, si potrebbero usare intermediari di fiducia per stipulare questi contratti, pagando loro delle commissioni per i loro servizi. I modelli di business di molti giganti della tecnologia Web2 come Amazon, eBay, Airbnb e Uber sono il risultato della mancanza di uno strato nativo di fiducia per la regolazione del valore e di sistemi di identità user-centrica. Gli smart contract in combinazione con i sistemi di identità user-centrica possono fornire una soluzione a entrambi i problemi. Possono formalizzare le relazioni tra persone e istituzioni e i beni che possiedono, interamente in modalità P2P, senza la necessità di intermediari fidati.
Sebbene il concetto di smart contract non sia nuovo, le reti blockchain sembrano essere il catalizzatore per la loro implementazione. Una forma primitiva di smart contract è un distributore automatico. Le regole di una transazione sono programmate in una macchina. Si seleziona un prodotto premendo un numero relativo al prodotto desiderato e si inserisce il denaro. Se si inserisce abbastanza denaro, la macchina è programmata per erogare il prodotto. In caso contrario, non riceverete il prodotto, o se la macchina ha finito il prodotto, riavrete i vostri soldi. I distributori automatici hanno reso obsoleti i venditori ambulanti, ma hanno anche ampliato il servizio, offrendo una disponibilità 24 ore su 24, 7 giorni su 7, invece del limitato orario di apertura e disponibilità di un punto vendita gestito da un operatore.
Accordi auto-esecutivi
Uno smart contract è un accordo auto-esecutivo, formalizzato come una applicazione software. Il codice contiene una serie di regole in base alle quali le parti di quel contratto accettano di interagire tra loro. Se e quando le regole predefinite sono soddisfatte, l'accordo viene automaticamente applicato dal consenso della maggioranza della rete blockchain. Gli smart contract forniscono meccanismi per gestire in modo efficiente i beni _tokenizzati _e i diritti di accesso tra due o più parti. Si può pensare ad essi come ad una scatola crittografica che sblocca il valore o l'accesso se e quando specifiche condizioni predefinite sono verificate. Gli smart contract offrono quindi un modo pubblico e verificabile per incorporare le regole di governance e la logica di business in poche righe di codice, che possono essere controllate e applicate dal consenso della maggioranza di una rete P2P.
Uno smart contract può essere invocato da entità interne (altri smart contract) o esterne (fonti di dati esterne) di una rete blockchain. I connettori di dati esterni, i cosiddetti "oracoli", iniettano dati rilevanti per lo smart contract prelevandoli dal mondo off-chain. Essi possono tener traccia delle prestazioni dell'accordo in tempo reale e possono quindi risparmiare costi, poiché la conformità e il controllo avvengono al volo. Gli smart contract riducono i costi di transazione degli accordi. In particolare, riducono i costi di (i) raggiungimento dell’accordo, (ii) formalizzazione, e (iii) applicazione. Se implementati correttamente, gli smart contract potrebbero fornire una sicurezza delle transazioni superiore al diritto contrattuale tradizionale, riducendo così i costi di coordinamento della revisione e dell'applicazione di tali accordi. I contratti intelligenti aggirano anche il dilemma principale-agente[^1] delle organizzazioni, fornendo più trasparenza e responsabilità, e riducendo la burocrazia (per approfondire: Parte 2 - Economia istituzionale delle DAO).
Il termine stesso "smart contract" è un po' infelice, poiché questi applicativi non sono particolarmente intelligenti né riflettono i contratti legali: (i) Uno smart contract può essere intelligente solo quanto le persone che lo codificano, tenendo conto di tutte le informazioni disponibili al momento della codifica; (ii) Mentre gli smart contract potrebbero avere il potenziale per far rispettare i contratti legali se certe condizioni sono soddisfatte, abbiamo prima bisogno di risolvere molte questioni tecnico-legali, che richiederanno tempo e un discorso interdisciplinare tra avvocati e sviluppatori di software.
Inoltre, la sicurezza degli smart contract è ancora un problema che deve essere risolto a livello tecnico. Devono essere implementate clausole contrattuali più sofisticate per renderli conformi ai contratti legali, compresi i meccanismi decentralizzati di risoluzione delle controversie. Mentre tali sviluppi potrebbero richiedere tempo per maturare, alcune interessanti soluzioni di risoluzione delle controversie sono già in fase di sviluppo. Esempi sono “Kleros,” “Openlaw,” or “Jur”. Probabilmente nei prossimi anni vedremo emergere una via di mezzo tra contratti legali e smart contract. Al momento della scrittura questo libro, le migliori pratiche sono ancora rare e richiederanno un processo di apprendimento collettivo. La tecnologia è ancora nella sua fase neonatale, e deve ancora recepire gli standard legali
Casi d’uso industriali
Esistono casi d'uso degli smart contract che vanno da quelli semplici a quelli più complessi. Possono essere utilizzati per semplici transazioni economiche come l'invio di denaro da A a B. Possono anche essere utilizzati per registrare qualsiasi tipo di proprietà e diritti di proprietà, come i registri fondiari e la proprietà intellettuale, o gestire il controllo di accesso intelligente a servizi per la sharing economy. I casi d'uso possono essere trovati in banche, assicurazioni, energia, e-government, telecomunicazioni, industria musicale e cinematografica, belle arti, mobilità, istruzione e molti altri. Ogni accordo, processo, compito o pagamento può essere gestito collettivamente. Molti intermediari tradizionali come avvocati, broker e banchieri, o amministratori pubblici, e piattaforme Internet potrebbero non essere più necessari, o almeno alcuni dei loro servizi potrebbero diventare obsoleti: le auto potrebbero usare contratti intelligenti per pagare al momento del rifornimento alla stazione di servizio, o della ricarica presso una torretta di ricarica elettrica. Le fatture potrebbero essere saldate all'arrivo di una spedizione di prodotti. Certificati azionari intelligenti - sotto forma di titoli tokenizzati - potrebbero essere programmati per provvedere al pagamento automatico dei dividendi (per approfondire: Parte 4 - Asset token e proprietà frazionata).
Gli smart contract possono fornire un livello di regolamentazione nativo per la sharing economy, attualmente mediato ed elaborato da operatori di piattaforme Internet. La natura P2P dei pagamenti abilitati dagli smart contract riduce i costi di transazione, il che significa che i micropagamenti potrebbero diventare economicamente più utilizzabili di quanto lo siano oggi[^2]. I controlli di accesso intelligenti tra due pari che non si fidano l'uno dell'altro potrebbero fornire una soluzione pratica per la sharing economy senza fornitori di piattaforme centralizzate, che attualmente possiedono una parte sproporzionata dei nostri dati, e conseguentemente del valore economico creato. Questo potrebbe portare ad una estremizzazione della economia della condivisione: appartamenti, automobili, lavatrici, biciclette, tosaerba - una volta che tutti questi dispositivi siano etichettati con il loro indirizzo blockchain (o DID), potrebbero essere gestiti da uno smart contract che agisce come una serratura digitale.
Un esempio più complesso di smart contract è il caso d'uso della foresta autogestita, oggetto del progetto “Terra0,” nel quale la gestione del taglio e della vendita di alberi da una foresta in Germania è eseguita mediante uno smart contract sulla blockchain di Ethereum. Droni e satelliti monitorano la crescita della foresta e innescano eventi nel contratto intelligente, come i contratti di subappalto per tagliare la foresta e vendere il legno.
Gli smart contract possono essere utilizzati per accordi molto più complessi tra una moltitudine di attori lungo una supply chain di fornitura di beni o servizi, o per governare un gruppo di persone che condividono gli stessi interessi e obiettivi senza la necessità di istituzioni tradizionali centralizzate. Le organizzazioni autonome decentralizzate (DAO) ne sono un esempio, e probabilmente rappresentano la forma più comune di smart contract complessi. Nelle DAO lo smart contract formalizza le regole di governance della organizzazione - come l'atto costitutivo, gli statuti, le regole di procedura - e sostituisce la gestione operativa quotidiana con un codice auto-applicativo.
I contratti intelligenti e le DAO potrebbero anche stravolgere i social media rispetto a come li conosciamo noi oggi. Le reti social basate sul Web2 generano ricavi monetizzando i dati degli utenti. Nel Web3, i contratti intelligenti possono abilitare ecosistemi guidati da uno scopo, in cui gli utenti possono beneficiare delle loro attività di rete venendo ricompensati con token di rete. Un esempio è rappresentato da "Steemit", un social network decentralizzato organizzato come una DAO e che ricompensa i contributi degli utenti con token della rete (per approfondire: Parte 4 - Steemit).
Gli smart contract e i ledger distribuiti possono rappresentare un catalizzatore anche per regolare gli accordi tra macchine che operano in un contesto di "Internet delle cose". Questo scenario, tuttavia, richiede che tutti gli oggetti in rete abbiano un'identità blockchain, e possano quindi essere indirizzati in modo univoco. L'indirizzabilità di ogni singola macchina o altro oggetto fisico deve essere a prova di manomissione. Questo può essere ottenuto etichettando o equipaggiando gli oggetti con un componente detto "acceleratore crittografico", abilitando per ciascuno di essi quello che viene comunemente chiamato "gemello digitale". Un acceleratore crittografico è un piccolo micro-controller ottimizzato per eseguire i più importanti algoritmi crittografici. Può avere le dimensioni di un adesivo che può essere applicato anche su un frutto, e quindi servire come base per casi d'uso come la trasparenza della supply chain. Con un gemello digitale, qualsiasi oggetto fisico può generare firme digitali uniche, o inviare e ricevere token. Proiettando l'attuale tasso di sviluppo di questa tecnologia nel futuro, e tenendo conto della convergenza con altre tecnologie emergenti come IoT, Big Data e AI, possiamo già immaginare un mondo in cui gli individui, le organizzazioni e le macchine possono interagire liberamente tra loro in modo semplice e ad una frazione dei costi attuali.
Gli smart contract possono inoltre essere utilizzati per creare e gestire token crittografici che possono rappresentare qualsiasi bene o diritto di accesso, o anche incentivare specifici comportamenti. I token potrebbero presto risultare una delle applicazioni più importanti degli smart contract, potenzialmente rivoluzionando la gestione degli asset come la conosciamo oggi. Per questa ragione le ultime due parti di questo libro sono dedicate interamente a questo argomento.
Oracoli
Le reti Blockchain e gli smart contract non possono accedere ai dati generati all'esterno della loro rete. Tuttavia, per poter prendere decisioni, spesso uno smart contract ha necessità di accedere a informazioni presenti nel mondo esternonni quanto possono essere rilevanti per l'accordo contrattuale. L’accesso ai dati esterni avviene utilizzando connettori di dati che vengono chiamati "oracoli", servizi che alimentano lo smart contract con informazioni esterne che possono innescare azioni predefinite dello smart contract, che a loro volta inducono cambiamenti di stato al ledger distribuito. Questi dati esterni possono provenire sia da applicazioni software (Big Data) sia da componenti hardware (Internet of Things).
Oracoli software: gestiscono dati informativi che provengono da fonti online, come la temperatura, i prezzi delle azioni o delle materie prime, gli orari di arrivo dei voli o dei treni, ecc.
Oracoli hardware: alcuni smart contract hanno bisogno di informazioni direttamente dal mondo fisico, per esempio un'auto che attraversa una barriera dove i sensori di movimento devono rilevare il veicolo e inviare i dati a uno smart contract, o i sensori RFID nel settore della supply chain.
Oracoli in ingresso: forniscono dati provenienti dal mondo esterno.
Oracoli in uscita: forniscono agli smart contract la capacità di inviare dati al mondo esterno.
Oracoli basati sul consenso: ottengono i loro dati dal consenso umano e dai mercati di previsione, come nel caso di "Augur" o "Gnosis". Tuttavia, usare solo una fonte di informazioni potrebbe essere inaffidabile, poiché i mercati possono essere manipolati; potrebbero essere necessari sistemi di valutazione per gli oracoli. Una combinazione di diversi servizi di oracoli potrebbe aumentare ulteriormente l'affidabilità dei dati se, per esempio, fosse richiesto l’accordo di tre oracoli su cinque per determinare il risultato di un evento.
La sfida principale con gli oracoli è che occorre potersi fidare delle fonti esterne di informazioni, siano esse un sito web o un sensore. Poiché gli oracoli sono servizi di terze parti che non fanno parte del meccanismo di consenso della blockchain, non sono soggetti ai meccanismi di sicurezza sottostanti che questa infrastruttura pubblica fornisce. Si potrebbero replicare attacchi di tipo “man-in-the-middle”[^3] tra i contratti e gli oracoli. La garanzia di robustezza di questo "secondo strato" è della massima importanza. Per risolvere questi problemi è possibile utilizzare diversi strumenti crittografici di fiducia e tecniche di calcolo. Se la sicurezza degli oracoli non è adeguatamente gestita, essa rappresenterà un ostacolo all'implementazione diffusa degli smart contract.
È importante notare che uno smart contract non aspetta passivamente che i dati provenienti da una fonte esterna confluiscano nel sistema: per poter accedere a dati esterni è necessario che il contratto venga invocato. Questo significa che per tale accesso è necessario spendere risorse di rete, con costi che si riflettono nelle fee di transazione. Nel caso di Ethereum questi costi prendono il nome di "Gas".
Caso d’uso: acquisto di una vettura d’occasione
Se due persone, diciamo Alice e Bob, non si conoscono e non si fidano l'uno dell'altro, di solito hanno bisogno di una terza parte fidata che funga da intermediario per verificare le transazioni e farle rispettare. Con gli smart contract e le reti blockchain, l’intervento di questi intermediari per l’esecuzione delle transazioni non è più necessario. Prendiamo l'esempio della compravendita di un'auto: se oggi Alice vuole acquistare un'auto da Bob, occorre ricorrere a una serie di terze parti fidate per verificare e autenticare l'accordo. Il processo varia da paese a paese, ma coinvolge sempre almeno una, ma normalmente più di una, terza parte fidata: ad esempio l'autorità di registrazione del veicolo, in combinazione con un notaio e/o una compagnia di assicurazione. Può essere un processo lungo e complesso, nonché costoso a causa del costo dei servizi degli intermediari. Se e quando tutte le autorità e le società coinvolte utilizzeranno i ledger distribuiti, si potrebbe utilizzare uno smart contract per formalizzare tutte le regole di una vendita valida di un'auto, comprese le norme relative a servizi aggiuntivi come l'acquisto di una polizza di assicurazione. Se Alice volesse comprare l'auto da Bob usando gli smart contract, il processo potrebbe assomigliare a questo:
- Bob cercherà su Internet un servizio dove può pubblicare la sua auto usata e definire i termini di vendita, usando ad esempio uno smart contract su qualche versione decentralizzata di eBay. Questo passo non è diverso da oggi, ma i servizi basati su smart contract devono essere compatibili con Web3 per poter comunicare con una rete blockchain. Il servizio di smart contract potrebbe anche prevedere la presenza di un garage intelligente che comunica anch'esso con una rete blockchain. Bob avrà quindi bisogno di scaricare un software compatibile con Web3 con un wallet incorporato, che gli fornirà un'identità blockchain unica - un indirizzo blockchain e una coppia di chiavi (pubblica-privata) ad esso associata (per approfondire: Parte 1 - Crittografia).
- Anche Alice userà Internet, esattamente come fa oggi. Cercherà sul web per trovare la versione decentralizzata di eBay, dove Bob ha pubblicato la sua auto. Alice avrà anche bisogno di scaricare un browser compatibile con Web3
- Se Alice trova un'auto che le piace e vuole comprarla - diciamo l'auto di Bob - cliccherà su "compra", e il servizio basato sullo smart contract userà una rete blockchain per controllare se Bob è il proprietario dell'auto, e se Alice ha abbastanza fondi disponibili. Le informazioni su entrambe le condizioni - i titoli di proprietà dell'auto che Bob dichiara di vendere e la quantità di token che Alice ha - sono registrate sul ledger. Facendo click su "compra", il servizio di smart contract potrebbe anche darle la possibilità di scegliere un piano di assicurazione tra selezionate compagnie di assicurazione anch’esse registrate sul ledger e connesse con lo smart contract che fornisce questa assicurazione (in questo scenario futuro il piano di assicurazione potrebbe essere calcolato al volo, con una tariffa basata sui dati dell'auto e la storia di guida di Alice).
- Se la rete verifica che entrambe le condizioni sono soddisfatte - Alice ha abbastanza fondi e Bob è davvero il proprietario dell'aut -, la rete blockchain registra Alice come nuovo proprietario dell'auto e i loro saldi vengono automaticamente aggiornati: Bob ora ha 20.000 token in più sul suo conto, mentre Alice ne ha 20.000 in meno nel suo wallet. Alice riceve quindi un codice di accesso alla serratura intelligente del garage. Inoltre, Alice è ora registrata presso la compagnia di assicurazione di sua scelta, che ha selezionato al momento dell'acquisto dell'auto, innescando un altro contratto intelligente.
- Bob può ora parcheggiare la sua auto nel garage. La sua auto, che ha anche un'identità unica sulla blockchain, sarà ora registrata come parcheggiata nel garage, e Alice riceverà una notifica su dove ritirare l'auto con il suo codice di accesso.
- Alice può ora recarsi a ritirare l'auto presso il garage specificato, che è protetto da una serratura intelligente collegata alla blockchain e gestita dal contratto intelligente che sia Bob che Alice usano. Alice può sbloccare il garage con la sua chiave privata, che la identifica come il legittimo proprietario dell'auto. L'auto è sua, è registrata a suo nome ed è assicurata.
Utilizzando gli smart contract possiamo evitare l'interferenza di alcune istituzioni come le autorità automobilistiche, le compagnie di assicurazione, e in alcuni paesi, anche i notai, nei casi in cui gli ambienti normativi lo permettono. Ogni computer che esegue il protocollo blockchain sarà in grado di controllare se qualcuno è il legittimo proprietario di un'auto o no. Rubare auto non sarà così facile come oggi, se le auto saranno dotate di chiavi digitali che utilizzano smart contract per il controllo degli accessi. Alcuni processi automatizzati richiederanno anche la convergenza degli smart contract con i dati provenienti da software e dispositivi hardware esterni, come ad esempio immagini fotografiche scattate nel garage per monitorare lo stato dell'auto. Il proprietario dell'auto potrebbe inoltre utilizzare uno smart contract per autorizzare altre persone a guidarla, previa registrazione della loro identità blockchain presso lo smart contract della vettura.
La sicurezza degli smart contract è una questione importante per l'adozione diffusa dei casi d'uso: (i) Sicurezza degli oracoli: assicurarsi che i dati provenienti da fonti esterne alla catena possano essere affidabili; (ii) Codifica sicura e verifica formale: controllo e test computerizzati del codice rispetto alle specifiche comportamentali; (iii) Sicurezza procedurale e risoluzione delle controversie: meccanismi aggiuntivi on-chain e off-chain per risolvere reclami o situazioni impreviste derivanti dall'uso degli smart contract. Un aspetto che potrebbe essere interessante affrontare è quello di linguaggi di programmazione degli smart contract alternativi a quelli oggi in uso, sia dal punto di vista della sicurezza che da quello dell'adozione da parte del mercato. La fusione di smart contract e contratti legali è un'altra questione importante che richiederà ricerca e sviluppo interdisciplinari. Inoltre, gli smart contract dovrebbero essere progettati in modo che i dati personali siano rivelati solo a quei soggetti che hanno effettivo bisogno di conoscere le informazioni esplicite nel corso di uno specifico processo. Gli smart contract dovranno essere conformi alle norme che preservano la privacy (privacy by design).
Come indicato sopra, molti casi d'uso degli smart contract saranno possibili solo interagendo con altre tecnologie come le applicazioni big data e l'IoT (Internet delle cose). Una simile integrazione di tecnologie potrà aprire nei prossimi decenni la strada a prodotti, servizi e categorie di attività completamente nuovi. Tuttavia potrebbero sorgere anche molte questioni socio-politiche. Una volta che tutti gli oggetti siano stati etichettati con un indirizzo blockchain univoco (identità), e possano quindi essere referenziati in modo univoco in una rete blockchain, se equipaggiati con software più o meno intelligente, essi potrebbero diventare agenti economici autonomi in una economia uomo-macchina. Tuttavia prima di progettare sistemi di questo tipo occorrerebbe affrontare pubblicamente questioni come (i) se e come trasferire il mandato dagli umani alle macchine, (ii) quali implicazioni socio-politiche potrebbero avere questi sviluppi, e (iii) come modellare tali fenomeni dal punto di vista sociale.
Storia degli Smart Contract
Sebbene il termine "smart contract" sia diventato _mainstream _con l'avvento prima di Bitcoin, e poi di Ethereum, la sua prima definizione - attribuita a Nick Szabo - risale al 1996, quindi prima dello sviluppo delle reti blockchain. Erano i primi tempi del Web quando Szabo ha sottolineato che la rivoluzione digitale non solo avrebbe creato nuove istituzioni, ma avrebbe anche potuto formalizzare le relazioni economiche e sociali. Questo accadeva vent'anni prima che Ethereum vedesse la luce e creasse una rinascita di questo termine. Szabo ha giustificato il termine "smart" con la funzionalità che risulta naturale per i contratti digitali affinché possano essere automaticamente verificati ed eseguiti: il mantenimento di un registro delle transazioni digitali che esegue automaticamente i termini di un accordo con l'obiettivo di soddisfare i termini contrattuali concordati. Gestione automatica delle relazioni e degli obblighi di tutte le parti coinvolte, ottenuta puramente tramite codice informatico.
Al contrario dei contratti tradizionali, che garantiscono la sicurezza contrattuale con procedure reattive utilizzando strumenti del sistema giuridico esistente, gli smart contract - secondo Szabo - potrebbero prevenire proattivamente questa sicurezza reattiva "dopo il fatto" attraverso meccanismi automatizzati, rendendo una potenziale violazione del contratto possibile ma costosa. Secondo Szabo il ricorso alle procedure reattive dei sistemi legali esistenti potrebbe essere minimizzato, ma mai completamente eliminato. Per fornire un tale livello di sicurezza proattiva, gli smart contract dovrebbero essere automatici e (a) osservabili, (b) verificabili e (c) applicabili. In ogni caso, Szabo ha indicato come (d) la privacy dei dati debba essere garantita rivelando solo i dati necessari, e solo alle parti contraenti che hanno il diritto di vederli.
Szabo è stato molto specifico nelle sue descrizioni di come formalizzare tecnicamente queste relazioni, elencando una varietà di metodi crittografici che potevano essere usati, come la crittografia a chiave pubblica e le firme digitali, e in particolare le firme cieche e la crittografia zero-knowledge-proof. Alcuni dei metodi crittografici descritti da Szabo si trovano nella implementazione di Bitcoin. Tuttavia, Szabo è stato molto più lungimirante nei suoi processi di pensiero rispetto a Satoshi e a molti altri sviluppatori di Bitcoin e di reti blockchain alternative, come Ethereum. Mentre lui si riferiva a metodi più rispettosi della privacy come le firme cieche e la zero-knowledge-proof nel 1996, questi metodi stanno solo ora trovando lentamente la loro strada nel mondo della blockchain. Tali tecniche di conservazione della privacy hanno anche il potenziale per soddisfare i requisiti di "Privacy by Design", specificati nel regolamento generale sulla protezione dei dati (GDPR) dell'Unione europea, molto meglio dei metodi crittografici che sono attualmente utilizzati nella maggior parte delle reti blockchain all'avanguardia (per approfondire: Parte 1 - Crittografia).
Szabo ha detto dei contratti intelligenti che "per essere incorporati nel mondo reale sotto forma di codice auto-applicativo" devono essere progettati per essere affidabili e resistenti sia agli attacchi intenzionali sia al vandalismo involontario. Tuttavia, a quel tempo Szabo non aveva idea di come decentralizzare completamente la fiducia e rendere un sistema di quel tipo resistente ai cosiddetti attacchi Sybil, e quindi descrisse la necessità di un intermediario fidato. Ha descritto la funzione di utilità economica di un potenziale attaccante e nel delineare le soluzioni proposte ha fatto riferimento a concetti di informatica teorica e di sicurezza informatica. Nel 1998 ha proseguito con lo sviluppo delle sue idee sugli smart contract nell'implementazione del trasferimento di valore P2P nella vita reale. Ha avuto un'idea per il denaro elettronico che sarebbe dovuto essere resistente all'inflazione come l'oro, che ha chiamato "Bit Gold". Bit Gold non è mai stato implementato perché Szabo non ha trovato un modo per sostituire l'intermediario di fiducia con un sistema resistente agli attacchi Sybil. Dieci anni dopo, la grande svolta di Bitcoin fu affrontare esattamente questo problema con l'introduzione della "Proof-of-Work".
Szabo ha immaginato che per formalizzare gli smart contract fosse necessario un intreccio di diverse discipline come il diritto, l'economia e la crittografia, ma ha espresso perplessità riconoscendo che difficilmente queste discipline comunicano tra loro. Tuttavia non è stato il primo a pensare all'automazione contrattuale. Due anni prima Ian Grigg ha descritto i suoi pensieri sui Contratti Ricardiani, specificando come rendere i contratti del mondo reale leggibili e applicabili da parte di una macchina. Voleva creare un sistema che preliminarmente alla esecuzione di un accordo permettesse la leggibilità umana delle intenzioni contrattuali e delle azioni risultanti, ottimizzando al contempo l'autenticazione e l'elaborazione della macchina utilizzando tecniche di crittografia come le funzioni hash e le firme digitali. Il suo obiettivo era quello di garantire il collegamento e l'elaborazione dei documenti legali e delle questioni correlate per fornire più trasparenza e sicurezza rispetto alle procedure legali tradizionali. Esistono le prime soluzioni ibride di contratti intelligenti e Contratti Ricardiani. "Openbazaar" è una piattaforma di e-commerce P2P che sta già lavorando con quel tipo di contratti.
Dall'avvento del progetto Ethereum, il termine "smart contract" ha visto una rinascita. Ethereum ha disaccoppiato il concetto di programmazione degli smart contract dalla rete blockchain sottostante che elabora gli accordi. Al contrario di Bitcoin, il protocollo Ethereum mira a fornire un'infrastruttura a basso costo dove si può creare qualsiasi tipo di smart contract con poche righe di codice. Ethereum ha ispirato molti altri progetti a lavorare su altre reti blockchain per smart contract, come “EOS”, “Cardano” o “Waves”, che presentano diversi gradi di maturità tecnica, scalabilità, sicurezza della rete, e spesso usano diversi linguaggi per programmare gli smart contract.
Riassunto del capitolo
Uno smart contract è un applicativo software che viene elaborato da un ledger distribuito. È uno strumento di gestione dei diritti che può formalizzare ed eseguire accordi via Internet tra partecipanti che non abbiano una relazione di fiducia reciproca, ed incorpora regole di conformità e controllo.
Gli smart contract possono ridurre i costi di formalizzazione e applicazione di un semplice accordo tra due parti, lo statuto di un'organizzazione, o possono essere utilizzati per creare diversi tipi di token.
Il termine "smart contract" è stato coniato per la prima volta da Nick Szabo nel 1996 e precede quindi lo sviluppo delle reti blockchain. Erano ancora i primi tempi del Web quando Szabo fece notare che la rivoluzione digitale non solo avrebbe creato nuove istituzioni, ma avrebbe anche potuto formalizzare le relazioni economiche e sociali.
I casi d'uso degli smart contract vanno dal semplice al complesso. La forma più complessa di uno smart contract è la DAO, o Organizzazione Autonoma Decentralizzata. I contratti intelligenti possono anche essere utilizzati per creare token.
Gli smart contract hanno il potenziale per sconvolgere molte industrie. Casi d'uso possono essere trovati in banche, assicurazioni, energia, e-government, telecomunicazioni, musica e industria cinematografica, belle arti, mobilità, istruzione e molti altri.
Gli oracoli forniscono i dati esterni necessari per lo smart contract e ne innescano l'esecuzione quando si verificano condizioni predefinite. Gli oracoli sono servizi che trovano e verificano eventi del mondo reale e presentano queste informazioni ad uno smart contract, innescando automaticamente cambiamenti di stato sulla blockchain. Il compito principale degli oracoli è quello di fornire questi valori allo smart contract in modo sicuro e affidabile. Questi flussi di dati possono provenire da applicazioni software (Big Data) o da dispositivi hardware (Internet of Things).
Riferimenti e approfondimenti
- Blocher, Walter; “The next big thing: Blockchain – Bitcoin –Smart Contracts,”, AnwBl 2016, S. 615; 2016
- Buterin, Vitalik: “SchellingCoin: A Minimal-Trust Universal Data Feed”, March 28, 2014, https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/
- Glatz, Florian: “What are Smart Contracts? In search of a consensus”, Dec 12, 2014: https://medium.com/@heckerhut/whats-a-smart-contract-in-search-of-a-consensus-c268c830a8ad
- Greenspan, Gideon: “Why Many Smart Contract Use Cases Are Simply Impossible”, Apr 17, 2016: https://www.coindesk.com/three-smart-contract-misconceptions
- Grigg, Ian; “The Ricardian Contract”, In Proceedings of the First IEEE International Workshop on Electronic Contracting, pages 25-31. IEEE, 2004: http://iang.org/papers/ricardian_contract.html
- Internet of Agreements: http://internetofagreements.com/
- Nisan, Noam; Ronen, Amir; „Algorithmic mechanism design“, Proceedings of the 31st ACM Symposium on Theory of Computing (STOC ‚99), pp. 129–140, 1999
- N.N.: “Hardware Pythias: bridging the Real World to the Blockchain”, Ledger Blog, 31 Aug 08 2016: https://blog.ledger.co/2016/08/31/hardware-pythias-bridging-the-real-world-to-the-blockchain/#.2zeggzh6f
- N.N.: “Understanding oracles” Oraclize Blog, Feb 18, 2016: https://blog.oraclize.it/understanding-oracles-99055c9c9f7b
- N.N.: "1,749,693 blocks later" Provable Things, Sep 16, 2016: https://medium.com/provable/1-749-693-blocks-later-4225f55c68f1
- N.N.: "A Visit to the Oracle Smart contracts are poised to revolutionize the ways that humans, machines, and organizations create and enforce contractual relationships" ConsenSys, Jun 1, 2016: https://media.consensys.net/a-visit-to-the-oracle-de9097d38b2f#.97rovs1ho
- N.N.: "Hardware Oracles: bridging the Real World to the Blockchain," Ledger Blog. Retrieved Nov 2, 2016: https://blog.ledger.co/hardware-oracles-bridging-the-real-world-to-the-blockchain-ca97c2fc3e6c#.2zeggzh6f
- Szabo, Nick: “Smart Contracts: Building Blocks for Digital Markets”, 1996: http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/ szabo.best.vwh.net/smart_contracts_2.html
- Szabo, Nick: “Formalizing and Securing Relationships on Public Networks” First Monday, Volume 2, Number 9 - 1 September 1997d: http://journals.uic.edu/ojs/index.php/fm/article/view/548/469
- Voshmgir, Shermin: “Blockchain, Smart Contracts und das Dezentrale Web”, Technologiestiftung Berlin, 2017: https://www.technologiestiftung-berlin.de/de/blockchain/
- Voshmgir, Shermin: “Smart Contracts, Blockchains und automatisch ausführbare Protokolle”, in: Braegelmann/Kaulartz (Hg.): Rechtshandbuch Smart Contracts, CH Beck Verlag, p. 13-27.
- Zhang, F., Cecchetti, E., Croman, K., Juels, A., Shi, E.: “Town Crier: An Authenticated Data Feed for Smart Contracts”, Published by ACM 2016, Published in: Proceeding CCS ‚16 Proceedings of the 2016, ACM SIGSAC Conference on Computer and Communications Security Pages 270-282: https://eprint.iacr.org/2016/168.pdf
- Cardano: https://www.cardano.org/en/home/
- Bernstein: https://www.bernstein.io/
- EOS: https://eos.io/
- Kleros: https://kleros.io/
- Open Bazaar: https://openbazaar.org/
- OpenLaw: https://media.consensys.net/introducing-openlaw-7a2ea410138
- Jur: https://jur.io/
- Terra0: https://terra0.org/
- Waves: https://wavesplatform.com/
Note a piè di pagina
[^1]: Il dilemma principale-agente si verifica quando qualcuno (l'agente) ha il potere di prendere decisioni che hanno un impatto su un'altra persona o istituzione (il principale), ma non riesce a farlo nel suo migliore interesse, come nel caso della relazione tra politici ed elettori, o manager e azionisti.
[^2]: Il problema dei micropagamenti oggi, è che la commissione applicata dai gestori del pagamento è più alta del micropagamento stesso.
[^3]: Nella sicurezza informatica, gli "attacchi man-in-the-middle" si riferiscono a incidenti in cui un aggressore trasmette ed eventualmente altera la comunicazione tra due parti che credono di comunicare direttamente o segretamente tra loro.