I contratti intelligenti potrebbero essere totalmente inutili
Per gran parte del 2017, non è stato possibile fare nulla per convincere gli OCI a promettere di utilizzare contratti intelligenti per rivoluzionare il modo in cui effettuiamo transazioni e conduciamo affari. La criptosfera continua a essere inondata di articoli che spiegano la rivoluzione del contratto intelligente in arrivo.
Come i contratti intelligenti faranno deragliare tutto, dalla logistica al settore immobiliare. Metteranno senza lavoro gli avvocati di tutto il mondo e renderanno obsoleti migliaia di anni di progressi nel diritto contrattuale umano.
Ma ora siamo nel 2019, e cosa ci portano gli smart contract?
Questo è un po’ duro con ICO e CryptoKitties, che sono innegabilmente importanti, almeno come prove di concetto. Ma cos’altro c’è? Dove sono i miliardi di dollari che vengono promessi alle aziende che sconvolgono il mercato? Dove sono le dApp che cambiano la vita?
Di tutte le dApp di Ethereum scritte finora. Solo il 10% viene utilizzato in un dato giorno. Le dApp EOS hanno un po’ più successo, ma meno del 5% ha più di 2.000 utenti attivi giornalieri.
Il fatto è che i contratti intelligenti sono inutili e lo rimarranno per il prossimo futuro. Non c’è niente di intelligente in loro. Sono programmi stupidi con capacità limitate che possono accedere solo ai dati archiviati sulla blockchain e non possono parlare con il mondo esterno.
Gli esperti di criptovalute affermano che tutti i contratti non sono altro che fantasiose catene di dichiarazioni IF-THEN annidate. Quindi ovviamente possono essere replicati in linguaggio macchina, non hanno afferrato la prima cosa su cosa rende utili i contratti, come e perché funzionano e perché sorgono problemi e controversie.
Come siamo finiti in questa impasse, e cosa dovremmo fare invece?
Diamo prima un’occhiata a come funzionano i contratti intelligenti e poi spiegheremo perché non funzionano in modo significativo.
Come funzionano i contratti intelligenti?
Gli smart contract sono piccoli programmi per computer che ogni nodo della blockchain deve eseguire periodicamente. I nodi non hanno alcun controllo sulle istruzioni eseguite da uno smart contract e quindi non dovrebbero fare affidamento sull’accesso completo alle risorse sulla macchina su cui è in esecuzione il nodo.
A causa di questa mancanza di controllo. I progetti blockchain sono dotati di macchine virtuali (VM) che si concentrano sulla sicurezza dell’esecuzione di contratti intelligenti.
La VM funge da sandbox che impedisce ai contratti intelligenti di creare scompiglio nel computer host. Ogni VM esegue un insieme molto limitato di istruzioni, chiamate anche codici byte. Che comprendono ogni contratto intelligente (ad esempio operatori aritmetici, transazioni blockchain, ecc.).
Naturalmente, ciò significa che la funzionalità degli smart contract è super limitata rispetto al codice macchina che viene eseguito in modo nativo.
Né gli smart contract possono durare per sempre. Impegnare le risorse del computer host a tempo indeterminato. I contratti intelligenti sono ospiti a casa di qualcun altro e alla fine devono andarsene.
Sfortunatamente, uno dei risultati più famosi nella teoria del calcolo significa che è impossibile sapere se il tuo contratto intelligente medio smetterà mai di funzionare. Quindi le VM ricorrono al conteggio del byte code e impongono l’interruzione del contratto intelligente a un certo punto.
Questo è l’unico modo per garantire che i contratti intelligenti vengano interrotti senza limitare ulteriormente la funzionalità. Ma rende il suo uso estremamente sgradevole.
Possiedi uno smart contract? Hai pagato abbastanza per implementare lo smart contract? No? Quindi il tuo contratto si interromperà a metà dell’esecuzione. Anche se stai attento, il prezzo della benzina oscilla continuamente. Pertanto, è impossibile preventivare adeguatamente i costi di esecuzione dei contratti.
Il vincitore del blocco
E i problemi non sono limitati ai proprietari. Il vincitore del blocco aggiorna la blockchain con i risultati dell’esecuzione del contratto intelligente e viene compensato con premi di blocco e commissioni di transazione.
Ma il resto della rete deve eseguire lo stesso contratto intelligente per verificare questi risultati di esecuzione non ricompensati. Sei un operatore di nodo che non si è guadagnato il diritto di firmare il blocco? Sfortuna, devi ancora sprecare cicli di calcolo eseguendo il contratto intelligente. E no, non ti pagheranno per questo!
Si sostiene spesso che molti o la maggior parte dei contratti del mondo reale possono essere espressi come raccolte di istruzioni IF-THEN. Se vengono soddisfatte alcune condizioni, elaborare la clausola appropriata del contratto. Se ricevo 100 BTC, trasferisco la proprietà della mia casa.
Tuttavia, se il cliente non restituisce la sua auto a noleggio alla data concordata, applica la sanzione. Se poi le dichiarazioni sono il pane quotidiano del computer, e la blockchain ci permette di far girare questi programmi in un ambiente senza fiducia, allora perché dovremmo spendere 200 dollari l’ora per un avvocato?
Può sembrare convincente, ma è un subdolo gioco di prestigio. Avvocati e notai e migliaia di anni di apparati legali non sono solo un goffo sistema di entrata/uscita. Il problema di convalidare se le condizioni del mondo reale sono state soddisfatte e quindi concordare su tale convalida è estremamente difficile. I contratti intelligenti non ci portano esattamente da nessuna parte per capirlo.
Immagina: dire come viene risolto il tuo contratto dipende dal tempo in cui viene eseguito. Sembra ragionevole, vero? Ma le blockchain non hanno una fonte di tempo oggettiva. Quindi il tuo contratto intelligente deve accedere a un servizio esterno. Quando si chiama il servizio ora, l’ora corrente viene ridotta a millisecondi. Cosa viene utilizzato per eseguire il contratto. I risultati dell’esecuzione di questo contratto vengono aggiunti alla blockchain.
Ma man mano che i risultati vengono aggiunti alla blockchain. Tutti i nodi devono accettarli. Questa è una parte integrante del mantenimento del consenso blockchain. Ma ricorda, ogni nodo esegue questi contratti in modo indipendente sulla propria VM.
Quindi tutti accedono al servizio orario in orari leggermente diversi e ricevono timestamp diversi. Quindi, quando è il momento di convalidare il blocco successivo. I risultati dell’esecuzione del contratto intelligente saranno diversi per ciascun nodo.
E non va bene dire che non ci interessa il livello di precisione al millisecondo. Arrotondiamo al secondo, minuto, ora, a seconda di quale sia il più vicino. Con migliaia di nodi che accedono allo stesso servizio in momenti diversi, la differenza tra le decisioni di arrotondamento si ridurrà inevitabilmente a un millisecondo e tornerai allo stesso problema.
Non importa come ondeggia. I nodi non saranno mai d’accordo tra loro e la blockchain non raggiungerà mai un consenso.
Entrano gli oracoli
Dal momento che i contratti intelligenti non possono accedere al mondo esterno. Il mondo esterno deve essere portato a contratti intelligenti. Alcune entità possono inserire dati dal mondo esterno sulla blockchain. Rendendoli disponibili a tutti i futuri contratti intelligenti che vengono eseguiti attraverso la rete. Queste entità sono chiamate oracoli.
Ma questo non ci aiuta molto. I dati devono essere nella catena prima di poterli utilizzare, ma come possiamo sapere di quali dati avremo bisogno? Non possiamo mettere tutti i fatti della vita sulla catena. Tutte le blockchain moderne soffrono già di gonfiarsi.
Quindi gli oracoli sono limitati a una visione molto ristretta del mondo reale. Ma il problema non finisce qui. Anche se siamo d’accordo su una manciata di fonti di dati per avere oracoli. Questi dati si evolveranno nel tempo. E ogni volta che lo fa, l’oracolo deve aggiungere più dati alla blockchain.
I vecchi dati spesso diventano obsoleti, ma rimangono nella catena. Pensa al suddetto servizio temporale e a quanto sarebbe incredibilmente dispendioso includere timestamp su una blockchain che conserva tutta la cronologia delle transazioni.
Gli oracoli devono essere pagati
Gli oracoli hanno bisogno di incentivi per inserire dati sulla blockchain, vogliono essere pagati. Ma gli oracoli non sono come i validatori blockchain, che ricevono ricompense continue per il mantenimento della blockchain.
Una volta che un oracolo ha inserito i dati sulla blockchain, quei dati saranno disponibili per chiunque possa accedervi. Lo sviluppatore Oracle non ha alcun controllo sul numero di accessi ai dati.
Il che può potenzialmente estendere quel pagamento una tantum a migliaia o milioni di invocazioni di contratti intelligenti e ridurre il pagamento per l’accesso a un importo minuscolo. Ciò riduce gli incentivi per gli oracoli a fornire informazioni veramente preziose.
Bisogna fidarsi degli oracoli
I contratti intelligenti dovrebbero essere inaffidabili. Ma questo vale solo quando sono legati alla natura inaffidabile del consenso blockchain. Non appena escono dalla sandbox della blockchain, viene introdotto un elemento di fiducia.
Gli sviluppatori e gli utenti di contratti intelligenti devono fidarsi dell’oracolo per fornire informazioni veritiere e accurate. La mancanza di incentivi adeguati per gli oracoli incoraggia la proliferazione di oracoli fraudolenti che forniscono dati spazzatura.
Un tale oracolo spera di ottenere almeno un pagamento da qualcuno prima che lo sviluppatore del contratto intelligente si renda conto che i dati sono spazzatura e smette di usare l’oracolo.
Gli sviluppatori di blockchain potrebbero cercare di prevenire la piaga delle truffe Oracle costruendo un sistema di reputazione sulla loro piattaforma. Ma non c’è nulla che impedisca a un astuto sviluppatore di Oracle di costruirsi la reputazione di fornire alcune risposte preziose prima di passare a fornire dati obsoleti o spazzatura e riscuotere pagamenti gratuitamente. Lo stigma sociale non si traduce in codice macchina.
Anche questo non può essere evitato ottenendo risposte da più oracoli e collazioni o calcolandone la media. Affidarsi a più oracoli per le risposte aumenta la sicurezza e riduce la necessità di fare affidamento su un’unica risposta oracolare.
Ma diventa rapidamente un affare di consenso blockchain da solo. Pensalo come il problema del consenso dell’oracolo. Inoltre, il problema ancora irrisolto dell’incentivazione degli oracoli è peggiorato in modo esponenziale.
Gli oracoli dovrebbero essere incoraggiati a dare risposte corrette e puniti per aver fornito informazioni false. È necessario raggiungere un consenso sull’unica vera risposta tra quelle offerte dai diversi oracoli. E questo meccanismo dovrebbe essere economico da utilizzare per gli sviluppatori di contratti intelligenti. In caso contrario non verrà utilizzato.
Nessuna di queste cose è possibile senza introdurre un elemento di fiducia, e se sei pronto a farlo. Allora perché stai scherzando con le blockchain? Abbiamo un sacco di sistemi basati sulla fiducia di vecchia data che sono molto più economici e più facili da usare.
Tu sei quello che mangi
Ma forse le sue ambizioni di contratto intelligente sono meno elevate. Blockchain e contratti intelligenti sono stati proposti come un modo per semplificare la logistica. Tracciando le spedizioni e tracciando materie prime e prodotti lungo l’intera catena di approvvigionamento.
Il monitoraggio automatico, ad esempio, delle arance dalla fattoria alle nostre ciotole di frutta sembra il tipo di lavoro noioso in cui i computer sono eccellenti.
Tuttavia, l’utilizzo di contratti intelligenti per rilasciare automaticamente i pagamenti all’arrivo di una spedizione si imbatte negli stessi problemi di fiducia. Dobbiamo ancora fare affidamento su un essere umano per assicurarsi che le arance siano in buone condizioni e per inserire i dati corretti nel sistema che inserirà i dati sulla blockchain.
Dobbiamo anche affidarci a qualche sistema esterno per verificare correttamente che le arance siano arrivate. Ci sono certamente alcuni vantaggi dell’auditing qui. Ma è ancora a un miliardo di miglia dal paradiso automatizzato in cui la gente credeva durante il boom dell’ICO.
I contratti intelligenti non hanno potere
Quindi questa è la parte IF delle nostre dichiarazioni IF-THEN. Cosa poi? Bene, si scopre che le cose non vanno meglio neanche lì. I contratti intelligenti non hanno il potere di governare nel mondo esterno. Possono assegnare solo risorse digitali.
Certo, puoi tokenare la tua casa, venderla alla catena e provare a riscuotere le rate del mutuo tramite uno smart contract. Ma lo smart contract non sarà in grado di rientrare in possesso della casa per tuo conto in caso di default.
Inoltre, lo smart contract non potrà accedere al registro del governo per aggiornare la proprietà della casa. Quindi avrai ancora bisogno di avvocati e notai e governi e ufficiali giudiziari e tutto il disordinato gadget basato sulla fiducia che usiamo da migliaia di anni.
Un vicolo cieco
E questi sono solo i problemi teorici. Anche la praticità è un incubo. Nonostante il fatto che i contratti intelligenti siano presentati come la semplice alternativa ai contratti cartacei. Le persone sono assolutamente terribili nello scriverle e nel proteggerle. Miliardi di dollari sono stati persi e rubati a causa di scappatoie e bug nei contratti intelligenti.
In breve, i contratti intelligenti stanno cercando di risolvere il problema sbagliato. Stanno guardando IF-THEN e decidono che la parte importante è la sceneggiatura.
I contratti davvero intelligenti sono i contratti legali che usiamo da secoli. Non abbiamo bisogno di un computer per eseguire questi contratti. Abbiamo il miglior computer per interpretarli proprio tra le nostre orecchie! Possiamo usare i tribunali per aggiudicare questi contratti e il potere del governo di farli rispettare.
Ma basta lamentarsi. Spero di averti convinto che i contratti intelligenti non sono altro che un vicolo cieco. Ma cosa dovremmo fare invece?
Agenti autonomi sulla blockchain
I contratti intelligenti sono inutili. Ma la blockchain è ancora un’incredibile innovazione. I libri mastri decentralizzati facilitano la contabilità a partita tripla.
Conosciuta anche come l’invenzione più importante degli ultimi 500 anni che tutti si sono persi. Pensa alla blockchain come al libro mastro in cui vengono inserite tutte le operazioni e da cui vengono aggiornati gli altri sistemi interni.
Invece di cercare di far sì che la blockchain acceda al mondo esterno, concentriamoci sul fare il contrario. Le capacità dei contratti intelligenti impallidiscono rispetto alle applicazioni che possono accedere direttamente alla blockchain.
Il registro distribuito e il consenso sono ottimi meccanismi per l’implementazione di applicazioni web, mobili e di altro tipo. Come quelli che scriviamo e implementiamo da anni.
Siamo diventati molto bravi a creare applicazioni per computer utilizzando tutta la potenza dell’hardware a nostra disposizione. L’anello mancante è come consentire alle applicazioni di comunicare in modo privato e sicuro in un modo affidabile per tutte le parti. Tutto questo senza dover pagare un’autorità centralizzata per gestire (e senza dubbio spiare) le procedure.
Ciò di cui abbiamo veramente bisogno è un bus di messaggi decentralizzato che queste applicazioni possano utilizzare per comunicare.