Condividi questo articolo

Gli smart contract blockchain necessitano di un nuovo tipo di due diligence

Due esperti legali sostengono che è necessaria una due diligence rafforzata prima che le transazioni con contratti intelligenti vengano scritte nella "pietra blockchain".

Più di 20 anni fa, Nick Szabo propose l'uso di uno "smart contract" per ridurre i costi di frode e di esecuzione associati ai tradizionali contratti cartacei. Il suo smart contract sarebbe stato implementato come un "protocollo di transazione computerizzato che esegue i termini di un contratto", in altre parole, un programma per computer.

Come qualsiasi altro software, un programma per computer "smart contract" riceverebbe input, eseguirebbe una serie di passaggi del programma e fornirebbe output. Ad esempio, lo smart contract potrebbe attendere che si verifichi una condizione predeterminata (ad esempio: un titolo raggiunge un prezzo particolare), ritenere automaticamente soddisfatti i termini del contratto e innescare una serie predeterminata di passaggi di prestazione (ad esempio: un pagamento) che verrebbero eseguiti automaticamente. Ben prima del suo tempo, l'idea non ha preso piede.

La storia continua sotto
Non perderti un'altra storia.Iscriviti alla Newsletter Crypto Daybook Americas oggi. Vedi Tutte le Newsletter

Facciamo un salto al 2016. Le blockchain abbondano e c'è un rinnovato interesse per i contratti intelligenti, in particolare con l'esecuzione decentralizzata dei contratti: contratti intelligenti sulla blockchain.

La blockchain Bitcoin è in funzione dal 2009 ma, nonostante vari sforzi, non sembra prestarsi a un'implementazione conveniente di contratti intelligenti. Al contrario, la blockchain originale Ethereum , annunciata nel 2014 e lanciata nel 2015, è stata specificamente progettata per consentire l'implementazione di contratti intelligenti.

Problemi in paradiso

Sin dal lancio, gli smart contract hanno iniziato a proliferare nell'ecosistema Ethereum . Tuttavia, la futura immutabilità degli smart contract Ethereum è incerta dopo l'ampiamente pubblicizzata “hard fork” EthereumL’etere esistente è diventato effettivamente “E[i]ther” – etere classico (ETC) e *nuovo* etere (ETH) – lasciando alle forze di mercato il compito di determinare se uno dei due, o entrambi, sopravviverà.

Il sistema Ethereum , come Bitcoin, associa la proprietà della valuta (ether) a un indirizzo. A differenza di Bitcoin , tuttavia, Ethereum fornisce anche un indirizzo per il codice del contratto eseguibile che viene eseguito sulla blockchain. Quando l'indirizzo del contratto riceve un messaggio appropriato da un utente o da un altro contratto, il codice viene eseguito. Gli smart contract Ethereum vengono archiviati sulla blockchain ed eseguiti su "macchine virtuali Ethereum " (EVM) da nodi di computer autoselezionati, comunemente noti come "miner". Tali nodi eseguono l'elaborazione necessaria per eseguire i corrispondenti passaggi del programma. A pagamento, ovviamente.

La commissione di elaborazione per ogni smart contract Ethereum è proporzionale alla sua complessità e all'uso di risorse di elaborazione. Addebitando una commissione proporzionale, si scoraggia l'uso improprio del sistema Ethereum che richiede molte risorse.

Ma l'uso eccessivo delle risorse Ethereum non è l'unico tipo di abuso possibile. Un recente articolo ha rilevato che tra i circa 19.000 contratti intelligenti Ethereum studiati, il 44% conteneva vulnerabilità. Poiché il codice del contratto intelligente veniva copiato più e più volte e venivano ripetute tecniche di stesura imperfette, si propagava codice pieno di errori. Il vecchio codice imperfetto apparentemente è diventato la base instabile per i nuovi e imponenti contratti intelligenti.

Come tutti sappiamo dolorosamente, i bug del software e le vulnerabilità del sistema non sono una novità. I sistemi operativi e i software applicativi più diffusi vengono "aggiornati" frequentemente. E vengono scoperti sempre più bug. Il tipico contratto di licenza software include anni di aggiornamenti "gratuiti".

Come correggere un sistema immutabile?

Come consumatore di software, la tua "due diligence" è piuttosto semplice perché un processo di correzione degli errori è integrato nella licenza del software. Quando (e non se) qualcosa va storto, hai qualche speranza che qualcuno stia cercando di risolvere il problema.

Ma gli smart contract non sono software ordinari. Uno smart contract dovrebbe implementare automaticamente un contratto reale: un accordo effettivo tra due (o più) parti. Dopo che le parti negoziali hanno concordato i termini di un accordo, tali termini vengono convertiti in uno smart contract, ad esempio: dati a un programmatore di computer per creare il codice dello smart contract. Quindi, come fanno le parti a sapere se i termini concordati sono stati programmati correttamente?

Inoltre, se uno smart contract è archiviato su una blockchain immutabile, allora, per definizione, il suo codice di programma archiviato non cambia. La certezza che deriva da tale permanenza diventa una caratteristica preziosa. Ma quella certezza significa anche che gli smart contract immutabili non hanno le tradizionali capacità di correzione degli errori. Il codice di programma che implementa lo smart contract non può essere facilmente sottoposto a debug dopo essere stato archiviato su una blockchain immutabile. Eventuali errori o vulnerabilità sono fissati nella "pietra della blockchain".

Uno smart contract deve essere privo di errori, tollerante agli errori o, almeno in qualche modo, correggibile. Affidarsi a contratti "form" non è garanzia di sicurezza, soprattutto per gli smart contract. Un software vecchio e buggato può certamente essere sfruttato e ha avuto un grande effetto. GuardaL'hacking del DAOSi dice che oltre 50 milioni di dollari di ether siano stati dirottati a causa di una vulnerabilità di un contratto intelligente.

C'è bisogno di un nuovo tipo di due diligence per questo nuovo tipo di contratto. Gli smart contract fondono diritto e informatica. La due diligence sugli smart contract dovrebbe fare lo stesso.

Due diligence nell'era della blockchain

Quale due diligence è necessaria per uno smart contract?

Un'analisi tradizionale della transazione proposta e dei termini contrattuali negoziati dovrebbe identificare questioni pratiche e legali. Un'analisi del codice sorgente dovrebbe identificare difetti nella programmazione dello smart contract prima che venga compilato.

Inoltre, lo smart contract proposto dovrebbe essere eseguito su un simulatore per vedere come funziona in risposta a messaggi attesi e inattesi da parte di utenti e altri contratti. Sia le questioni legali che quelle di programmazione possono quindi essere affrontate insieme. Le contingenze attese e inattese possono essere identificate, valutate e mitigate.

Con costernazione di alcuni, usare contratti intelligenti su una blockchain T eliminerà la necessità di avvocati. Più probabilmente cambierà solo ciò che gli avvocati devono fare.

Prevediamo che questo nuovo tipo di due diligence riunirà avvocati specializzati in transazioni in grado di esaminare i termini di un accordo specifico, esperti di software in grado di analizzare il codice di programma dei contratti intelligenti e il suo funzionamento sulla blockchain, e avvocati specializzati in "contratti intelligenti" in grado di colmare il divario tra i due.

Ovviamente, il team di due diligence dovrebbe essere coinvolto ben prima che uno smart contract venga aggiunto alla blockchain, persino prima che l'accordo sottostante venga negoziato, per aiutare a evitare errori prevedibili. Conducendo questo nuovo tipo di due diligence con il team appropriato, le parti che stipulano smart contracting possono avere molta più fiducia nel raggiungimento dei risultati attesi.

Una due diligence più rigorosa sui contratti intelligenti potrebbe finalmente portare un po' di tranquillità.

Revisione contabileimmagine tramite Shutterstock

Nota: Le opinioni espresse in questa rubrica sono quelle dell'autore e non riflettono necessariamente quelle di CoinDesk, Inc. o dei suoi proprietari e affiliati.

Picture of CoinDesk author Ted Mlynar and Ira Schaefer