Contratti e smart contracts
Contratti e smart contracts
Xxxxxxxx Xxxxxx Xxxxxxx-Università di Bologna
Istituto Universitario Europeo, Firenze
• Art. 1321 Codice civile. Il contratto è l'accordo di due o più parti per costituire, regolare o estinguere tra loro un rapporto giuridico patrimoniale
• Art. 1322. Le parti possono liberamente determinare il contenuto del contratto nei limiti imposti dalla legge
• Un atto istituzionale:
– Le parti dichiarano la loro volontà di realizzare un certo
risultato giuridico (mediante la loro dichiarazione)
– La legge riconosce questa volontà: fa sì che la dichiarazione realizzi effettivamente il suo contenuto
• Esempio:
– Xxxxx e Xxxx dichiarano che Xxxxx vende a Caio il suo PC al prezzo di 100 Euro, da pagare entro una settimana (cioè che Xxxxx trasferisce a Caio il suo PC e che Xxxx è obbligato a pagare 100 Euro)
– In seguito alla dichiarazione il computer non appartiene più a Tizio, ma a Caio, e Xxxx ha l’obbligo di pagare 100 euro entro una settimana.
Transizione tra stati istituzionali delle parti
• Da Prop (T, PC) & -Prop (C, PC) a -Prop (T, PC) & Prop (C, PC)
• Da –Ob(Paga(T,C, 100)) a Ob(Paga(T,C,100))
• La norma generale sui contratti stabilisce che
– Se due persone dichiarano una transizione ammessa tra le
loro posizioni giuridiche, la transizione si verifica
– La transizione può consistere nel passaggio di un diritto (verso terzi) dall’uno all’altro, oppure nella nascita o nell’eliminazione di un obbligo dell’uno verso l’altro.
• Alcuni effetti si verificano automaticamente, in seguito alla formazione del contratto (il passaggio di proprietà dal venditore al compratore)
• Gli obblighi del contratto nascono automaticamente (e.g., l’obbligo di pagare il prezzo), ma il risultato finale richiede che le parti adempiano ai loro obblighi.
• Il contratto può stabilire che taluni obblighi o trasferimenti, si verificano in conseguenza di eventi futuri (obbligo di pagare penale il seguito a trasferimento, cancellazione contratto in seguito a disdetta)
• Il contratto produce gli effetti stabiliti dalle parti, ma:
– Interpretazione Una clausola nel contratto può essere ambigua e richiedere interpretazione, in caso di disaccordo da parte del giudice (C possiede due PC, quale dei due è oggetto della vendita?)
– Completamento. Il contratto può non specificare alcuni aspetti (dove deve essere consegnato il PC?) e la legge li può integrare automaticamente
– Rimozione. Il contratto può contenere clausole illegali (il contratto esclude ogni responsabilità per danni derivanti da difetti del computer), prive di effetto
– Invalidità Il contratto può essere nullo, o annullabile a richiesta della parte, quando presenta certi difetti nel contenuto (illegale), nella forma, o nella formazione (errore, violenza, dolo)
– Risoluzione. Gli effetti possono venire meno (risoluzione del contratto) per fatti successivi. (se T non paga il prezzo del computer, C può chiedere che il contratto venga risolto)
• Trattative
• Stesura: forma scritta (linguaggio naturale), atto pubblico, registrazione e certificazione
• Esecuzione: adempimento degli obblighi, esercizio dei diritti (e.g., di usare il bene ricevuto in comodato) e dei poteri stabiliti dal contratto
• Controllo sull’esecuzione della controparte, attuazione coercitiva (enforcement): attivazione di clausole penali, eccezione di inadempimento,
• Controversia: Ricorso a arbitro o giudice nel caso di controversia (inadempimento, annullamento risoluzione)
• Smart contract: ”a set of promises, specified in digital form, including protocols within which the parties perform on these promises “ (Xxxxx)
• Spesso il termine “Smart contract” è usato per indicare qualsiasi software che possa operare su un “distributed ledger”, in particolare su un block chain:
• Lo smart contract-software può non corrispondere ad un contratto giuridico:
– Può stabilire il pagamento in esecuzione a un contratto già fatto off-chain (e.g. un pagamento in cryptocurrency da effettuarsi in una certa data)
– Può essere un meccanismo per processo non contrattuale (ad esempio, per votare su un’inziativa che non sarà giuridicamente vincolante)
• Lo smart contract-software può corrispondere a un contratto giuridico
– Quale mecanismo per attuare un contratto giuridico specificato in linguaggio naturale o in altro linguaggio non eseguibile sul blockchain
– Quale dichiarazione contrattuale giuridicamente vincolante.
• Qualsiasi software per un distributed ledger
• Software per un distributed ledger che attua a promesse mediante modifiche del ledger (tra le le parti)
• Software che per un distributed ledger che esegue un contratto giuridico esterno al ledger
• Software che per un distributed ledger che specifica un contratto giuridico computabile
• Il contratto giuridico crea effetti istituzionali: crea, modifica, trasferisce diritti, doveri e poteri (condizionati o incondizionati)
• Lo smart contract stabilisce un processo computazionale.
• Lo smart contract che sia anche un contratto giuridico effettua le due cose
• Qual è il rapporto tra i due:
– Lo smart contract-software cambia le registrazioni che attestano la titolarità dei diritti e degli obblighi, in conformità al contratto giuridico
– Se un obbligo stabilito nel contratto giuridico può essere adempiuto mediante una modifica del distributed ledger (e.g., pagamento in cryptocurrency) l’esecuzione dello smart contract-software compie l’adempimento
– Se un risultato può essere ottenuto mediante una computazione esterna attivata dalle registrazioni, allora lo smart contract può attivare il risultato (e.g., blocco di automobile per rata non pagata)
• Lo smart contact-software con effetto giuridico ha una duplice funzione
– Esprime la dichiarazione Intesa a realizzare un contenuto istituzionale (obblighi e diritti tra le parti)
– La sua esecuzione “Attua” quel contenuto istituzionale
• Problema
– Qual è il contenuto istituzionale del contratto, il significato della dichiarazione contrattuale?
• Quello compreso dalle parti (che fare nel caso di errore)
• Quello risultante dall’esecuzione del contratto
• Interpretazione
– Qual è la qualificazione del contratto: per esempio, un trasferimento di azioni a fronte di un pagamento è una vendita o un mutuo
– Qual è il contenuto del contratto, se il risultato dell’esecuzione è diverso da quanto una parte si aspettava, anche sulla base di precedenti interazioni o indicazioni (e.g., il pagamento dovuto eccede quanto concordato). Difficoltà di capire il contenuto del programma
• Clausole illegali
–
– Che accade se una clausola è illegale, per esempio stabilisce un interesse usuraio? Come sostituire l’interesse usuario con quello legale?
• Clausole indeterminate (non implementabili):
– Ragionevole richiesta,
– Massima diligenza (best effort).
– Sollecita risposta
– In buona fede
– Ecc.
• Contratto invalido:
– Il contratto invalido non ha effetto (se nullo), o può essere privato di effetti retroattivamente (se annullabile)
– Il contratto valido può essere risolto (con efficaicia retroattiva) date certe condizioni (tipicamente inadempimento)
– Problema: Come annullare gli effetti di uno smart contract corrispondente a un contratto giuridico invalido. Che rimedi per le parti
• Trigger che blocca il contratto incalido
• Nuovo contratto che inverte gli effetti già realizzati dal
contratto invalido
• Danni (e.g. da inadempimento, frode, comportemento inatteso del software predisposto da una delle parti)
• Controllo su traffici illeciti
• Oggi per gli smart contracts si usano linguaggi procedurali (Solidity)
• Numerose ricerche di AI & law hanno suggerito di usare invece linguaggi dichiarativi la stesura e l’attuazione (compliance) dei contratti. Event-calculus, Defeasible logic, Legal RuleML, Various logical languages, etc.
• Article1.0: =>[Forb licensee] use
• Article1.1: getLicense =>[Perm licensee] use
• Article2.1: =>[Forb licensee] publish [Compensated] [Obl licensee] remove
• Article2.2: getApproval =>[Perm licensee] publish
OPPORTUNITA’
• Vicinanza al linguaggio naturale (migliore comprensione, meno problemi di interpretazione)
• Compattezza (rapidità di redazione, meno errori)
• Controllabilità, verificabilità PROBLEMI
• Come eseguire le inferenze: on-chain o off-chain (costo vs sicurezza)
• Come controllare la correttezza delle inferenze
• Come collegare qualifiche dichiarative a istruzioni che modificano blockchain
Dai contratti giuridici a smart contracts giuridici
• Affiancare a un contratto in linguaggio naturale uno smart contract eseguibile
• Redigere contratti compositi, che uniscano clausole in
linguaggio naturale (non computabili) e smart clauses
• Scrivere smart contracts usando linguaggi dichiarativi anziché procedurali
• Predisporre la possibilità di interventi esterni che blocchino l’esecuzione dello smart contract e ne invertano l’operazione nel caso di clausole invalide o di risoluzione
• Tutela di utenti e consumatori (ma anche professionisti) rispetto a clausole non comprensibili, standard, controlli, certificazione, autorità, ecc.
• Ecc.
Grazie per l’attenzione!