Contratti Ethereum Oracle: possiamo fidarci di Oracle?

Pubblicato: 2022-03-11

Questo articolo è la parte finale di una serie in tre parti sull'utilizzo dei contratti oracoli di Ethereum.

  • La prima parte è stata un'introduzione alla configurazione, all'esecuzione e al test del codice con il framework tartufo.
  • La seconda parte ha dato un'occhiata un po' al codice e lo ha usato come punto di partenza per la discussione su alcune delle caratteristiche del codice e del design di Solidity.

Ora, in questa parte finale vorrei porre le domande: cosa abbiamo appena fatto e perché? E cerca di fornire alcune vie di pensiero che si spera siano stimolanti. La giuria è ancora molto concentrata su come l'uso degli oracoli si riferisca alla mancanza di fiducia e su cosa significhi effettivamente la parola "assenza di fiducia" in relazione alla blockchain nell'uso del mondo reale. Mentre portiamo alcune di queste idee dalla loro forma concettuale all'uso pratico, saremo costretti a lottare e fare i conti con domande come questa. Quindi iniziamo.

Riepilogo: perché abbiamo bisogno di un oracolo di Ethereum?

Questo arriva al cuore della natura dell'esecuzione del codice sulla blockchain. Per soddisfare i requisiti di immutabilità e determinismo, e come artefatto del modo in cui il codice viene effettivamente eseguito dai nodi della catena, uno smart contract non è in grado di raggiungere direttamente l'esterno della blockchain per fare bene qualsiasi cosa.

Per la maggior parte dei programmatori, questo fatto introduce un modo di pensare molto innaturale. Se abbiamo bisogno di dati da qualche parte, normalmente ci colleghiamo a quelli da qualche parte e li estraiamo. Uno smart contract che necessita dei dati del bollettino meteorologico? Basta collegarsi a un feed meteo. Ma no; uno smart contract blockchain non può assolutamente farlo; se alcuni dati non sono già sulla blockchain, il codice del contratto non ha accesso ad esso al momento dell'esecuzione. Quindi, la soluzione è avere già i dati necessari esistenti sulla blockchain, al momento dell'esecuzione del contratto. Ciò richiede un macchinario esterno che, anziché inserire i dati nella catena, inserisce i dati nella catena, in particolare per l'utilizzo da parte di altri contratti. Quel macchinario esterno è l'oracolo. I dati inseriti nella catena vengono inseriti in un contratto oracolo, che poi presumibilmente ha previsto la condivisione con altri contratti. Un esempio di tale configurazione è precisamente ciò che abbiamo costruito ed esaminato nelle due parti precedenti di questa trilogia di articoli.

Illustrazione dell'oracolo di Ethereum

Fori di sicurezza abbaglianti

Per me, la questione centrale coinvolta in tutta la blockchain pubblica è la parola T: fiducia. Nella sua forma più pura, ciò che questi sistemi stanno facendo è del loro meglio per garantire (nessuna garanzia perfetta è possibile in questo mondo, ma il più vicino possibile) che non dobbiamo fidarci ciecamente di nessuna delle parti. Il lettore astuto potrebbe aver già messo in dubbio alcune delle evidenti falle di sicurezza nell'esempio delle scommesse sulla boxe. Vorrei concentrarmi su quelli che saranno più importanti per la nostra discussione sull'affidabilità e su come si collega all'uso degli oracoli con i contratti intelligenti.

1. Il proprietario/gestore del contratto di scommesse potrebbe essere corrotto

A partire dalla riga 58 di BoxingBets.sol abbiamo la seguente funzione:

 /// @notice sets the address of the boxing oracle contract to use /// @dev setting a wrong address may result in false return value, or error /// @param _oracleAddress the address of the boxing oracle /// @return true if connection to the new oracle address was successful function setOracleAddress(address _oracleAddress) external onlyOwner returns (bool) { boxingOracleAddr = _oracleAddress; boxingOracle = OracleInterface(boxingOracleAddr); return boxingOracle.testConnection(); }

Dovrebbe essere abbastanza chiaro cosa questo permette. Il titolare del contratto (e solo il titolare del contratto) può, in qualsiasi momento e senza alcuna restrizione, modificare l'oracolo utilizzato per servire gli incontri di boxe e determinare i vincitori. Perchè questo è un problema? Se non è già ovvio per te, ciò consente al titolare del contratto di abusare deliberatamente del contratto a proprio vantaggio.

Esempio: il prossimo incontro di boxe imminente è Soda Popinski contro Glass Joe. La soda è chiaramente la favorita con un ampio margine. Tutti scommettono su Soda. Tonnellate di soldi che ci cavalcano. Io, il titolare del contratto, decido di tirarne uno veloce. Poco prima che la partita sia decisa, cambio l'oracolo con il mio maligno, che è identico all'oracolo ufficiale tranne per il fatto che è codificato per dichiarare Glass Joe come vincitore. Dichiara Glass Joe, faccio tutti i soldi e nessuno può fermarmi. Dopo di che forse nessuno si fiderà più del mio contratto, ma supponiamo che non mi importi; forse ho scritto e pubblicato il contratto solo al solo scopo di tirare fuori quella rapina.

Quali sono alcune alternative?

1. Non permettere che l'oracolo venga modificato

Il problema che abbiamo identificato sopra, nasce dal fatto che permettiamo che l'oracolo venga modificato dal titolare del contratto. Quindi, supponiamo di codificare semplicemente l'indirizzo di Oracle e di non consentirne la modifica? Bene, possiamo davvero farlo, non è fuori questione. Ma poi sorge la domanda, e se quell'oracolo si chiudesse - smettesse di fornire dati per qualsiasi motivo? Allora dovremo procurarci un nuovo oracolo. O se quell'oracolo, inizialmente fidato, si rivelasse corrotto e non più affidabile? Ancora una volta, vorremo passare a un nuovo oracolo. Se abbiamo codificato l'oracolo, l'unico modo per cambiare l'oracolo è rilasciare un nuovo contratto che utilizzi un altro oracolo. Ok, di nuovo, possiamo farlo. Non è fuori questione. Si noti, ovviamente, che i contratti intelligenti non possono essere aggiornati facilmente come, ad esempio, un sito Web. Non sarebbe facile? Se noti un bug o una falla di sicurezza, basta correggerlo e nessuno è più saggio. Il modello di implementazione del contratto intelligente è un po' più vicino al modello di software termoretraibile; una volta che il software è nelle mani dell'utente, è lì e non puoi risolverlo. È necessario richiedere all'utente di aggiornarsi manualmente. Gli smart contract sono un po' simili. Una volta che quel contratto è sulla blockchain, è immutabile come con il resto della blockchain, tranne in parti in cui hai scritto la logica per renderlo mutevole.

Questo non è necessariamente un bloccante però; ci sono molti modelli e scuole di pensiero ora su come rendere modificabile uno smart contract. Questo argomento sarebbe un articolo decente in sé e per sé, ma per ora puoi dare un'occhiata a questo articolo di Hackernoon, così come a questo pezzo sulle strategie dei contratti intelligenti.

Come sarebbe dal punto di vista di un utente? Diciamo che sto pensando di scommettere sul prossimo incontro di Don Flamenco. Posso vedere chiaramente che il contratto codifica facilmente un oracolo che già conosco e di cui mi fido (beh, abbastanza fiducia per piazzare una scommessa di una certa entità). Quindi è tutto. Abbastanza semplice. Se il titolare del contratto rilascia una nuova versione del contratto con un nuovo oracolo, io (dovrei) avere ancora la libertà di continuare a utilizzare quello vecchio. Beh forse. Dipende da come è stato gestito l'aggiornamento. Se il contratto fosse disabilitato o distrutto, potrei essere sfortunato. Ma nel caso della vaniglia, dovrebbe essere ancora in piedi.

2. Blocca l'oracolo per tutta la durata

Possiamo aggiungere qualche complicazione al codice (non desiderabile perché un esempio sia troppo complesso, ma per una soluzione del mondo reale potremmo volere il vantaggio che questa complessità porta) al fine di mitigare imbrogli come quello descritto sopra. Penso che una cosa molto ragionevole da fare sarebbe aggiungere un codice che "blocchi" l'oracolo per la durata della scommessa. Per dirla in altro modo, la logica del contratto potrebbe garantire, in un modo molto chiaro e semplice, che qualunque oracolo fosse presente quando ho fatto la scommessa deve essere lo stesso oracolo utilizzato per determinare il vincitore. Tanto che anche se l'oracolo intanto cambia, per le altre partite, per la mia partita, e per la mia scommessa deve rimanere sempre uguale. Questo va di pari passo con il permettere all'utente di sapere chi è l'oracolo.

Facciamo un rapido esempio per illustrare questo. Sono un utente. Sto pensando di scommettere sull'imminente combattimento di Little Mac. C'è una struttura nel contratto che mi permette di ispezionare l'oracolo che sarà usato per determinare il vincitore di questa partita. Verifico che il contratto è un noto presentato da Nintendo Sports. Mi sento abbastanza sicuro di quell'oracolo. (Per aggiungere un po' più di complessità, forse il contratto consente agli utenti di scegliere tra una serie di oracoli disponibili per una determinata corrispondenza). Ora posso esaminare il codice dell'oracolo e vedere che la logica dell'oracolo garantisce che quello stesso oracolo verrà utilizzato per determinare il risultato della partita. Quindi io, come scommettitore, ho almeno questa certezza. Non preclude il fatto che il mio oracolo possa essere cattivo (cioè corrotto o non degno di fiducia) ma almeno mi assicura che non può essere cambiato in secondo piano.

Un rischio qui sarebbe che l'oracolo vada "fuori mercato" (smette di essere mantenuto o aggiornato) tra il momento in cui piazzo la scommessa e la partita viene decisa. Il denaro potrebbe essere bloccato nel contratto e diventare irrecuperabile. Per questo, potremmo (forse) inserire nel contratto una clausola attivata nel tempo, in cui se una partita è indecisa entro una certa ora o data (potrebbe far parte della definizione della partita), è considerata "morta" e tutto il denaro bloccato all'interno viene restituito agli scommettitori.

3. Lascia che l'oracolo sia definito dall'utente

Un modo ancora più complicato (ma forse più interessante) sarebbe lasciare l'indirizzo dell'oracolo "vuoto", in un certo senso, per consentire agli utenti di specificare i propri oracoli e formare i propri pool di scommesse (attraverso il contratto) attorno a quegli oracoli. Gruppi di utenti che utilizzano lo stesso oracolo potrebbero scommettere insieme seguendo la logica del contratto. Ciò impone all'utente l'onere di scegliere un oracolo di cui si fida e di condividere quell'oracolo con altri utenti che la pensano allo stesso modo. In effetti frammenta la comunità delle scommesse, quindi funzionerebbe solo se ci fosse una vasta base di utenti; altrimenti, ci sarebbero troppo pochi scommettitori coinvolti per rendere le scommesse davvero interessanti e redditizie. Se sono l'unica persona a scommettere con il mio oracolo preferito, non ci sono molti incentivi! Ma d'altra parte, si assume la responsabilità di scegliere un oracolo affidabile dal titolare del contratto, e lui può lavarsene le mani. Se alcuni utenti trovano un oracolo inaffidabile, smetteranno semplicemente di usarlo e passeranno a un altro e nessuno si arrabbierà con il proprietario del contratto. Ha semplicemente fornito l'arena delle scommesse e ha svolto il suo servizio con onore.

Alla complicazione di questa strategia si aggiunge il fatto che dovremmo in qualche modo lasciare che un lotto organico di oracoli "cresca" in natura e che si adattino esattamente a questa soluzione. Dovremmo trasmettere al mondo l'interfaccia esatta a cui i potenziali oracoli devono aderire, e sperare che ne venga fuori un numero abbastanza decente da dare effettivamente all'utente una scelta. Forse potremmo seminare il lotto con uno o due dei nostri. Se non ci vuole, allora non abbiamo scommesse DApp. Ma se lo fa, devo ammettere che l'idea di oracoli selezionati dall'utente e coltivati ​​biologicamente in natura è una soluzione interessante e attraente.

2. Il proprietario/mantenitore dell'oracolo potrebbe essere corrotto

Corrotto cioè nel senso di inaffidabile; che il proprietario/mantenitore/gestore dell'oracolo rischia di proclamare un esito errato per una partita, al fine di arricchirsi.

Esempio: sono il proprietario/mantenitore dell'attuale oracolo che alimenta i dati di boxe sulla blockchain per l'utilizzo del contratto di scommesse. Il mio oracolo non è direttamente coinvolto in nessuna scommessa o gestione delle scommesse. Il suo compito è semplicemente fornire dati, che il contratto di scommesse (e forse un numero qualsiasi di altri contratti) può utilizzare. Tuttavia, posso piazzare personalmente una scommessa utilizzando il contratto di scommesse che a sua volta utilizza il mio oracolo; Sono comunque anonimo, quindi non temo alcuna punizione. Una volta che ho scommesso su un contratto del genere, c'è un chiaro conflitto di interessi. In particolare, l'onestà con cui aggiorno il mio oracolo con informazioni vere e accurate potrebbe essere in conflitto con le mie azioni di scommesse.

Quindi diciamo che nel prossimo incontro Sandman/von Kaiser, in cui von Kaiser è decisamente il perdente, vado avanti e faccio una massiccia scommessa su von Kaiser. Quando von Kaiser perde come previsto, uso invece il mio oracolo per proclamarlo falsamente vincitore! Il contratto di scommesse viene eseguito come dovrebbe (non c'è modo di fermarlo a questo punto), faccio un omicidio sulla partita, non c'è ricorso e non c'è modo di punirmi e la vita continua. Forse, dopo, la gente si rifiuta più di usare il mio oracolo; forse non mi interessa.

Come possiamo prevenire questo?

Ora siamo a una domanda molto più grande e che colpisce il cuore stesso della cosiddetta mancanza di fiducia in relazione agli oracoli. Si ritiene che l'oracolo sia una terza parte neutrale o anche una terza parte fidata. Il problema è che l'oracolo è gestito dagli umani. Un'altra questione ancora è che l'oracolo esercita un grande controllo su come il contratto del cliente svolge i suoi doveri poiché fornisce i dati su cui agisce il contratto. Come possiamo sapere che possiamo fidarci di un dato oracolo?

Perché dovremmo fidarci di qualsiasi oracolo?

Se l'intera idea dei contratti intelligenti blockchain è quella di rimuovere la necessità di fidarsi di qualcuno, quindi il fatto che dobbiamo "fidarci" di un oracolo non vola di fronte alla mancanza di fiducia? Ebbene, direi: è ora di crescere, figlio (o figlia)! Non esiste una cosa come la pura fiducia e la blockchain non fornisce un ambiente senza fiducia. Blockchain è uno strato che facilita le interazioni umane. Le interazioni umane sono ancora il nucleo o il risultato finale e le interazioni umane non possono essere prive di fiducia.

Link: Il problema Oracle

L'evoluzione della fiducia

All'alba dei tempi, come potevo fidarmi di un altro essere umano? Supponiamo che io stia dando la caccia al mammut e quel tizio dice che mi aiuterà a cacciare il mammut, in cambio di metà della carne? Come può fidarsi che fornirò la metà? Come posso fidarmi che non mi colpirà alla testa e non prenderà l'intero mammut, una volta finita la caccia?

A quei tempi, la minaccia della violenza era probabilmente al centro di molti tipi di fiducia socioeconomica. Se provo a rubare la parte di quel ragazzo, sono sicuro che proverà ad attaccarmi, e questo comporta dei rischi per me. Anche se sono fiducioso che vincerei in un combattimento con lui, io (come uomo delle caverne) ne so abbastanza per sapere che tutto può succedere e potrei facilmente subire un infortunio potenzialmente letale anche se tecnicamente vincessi. È sempre un rischio e un investimento di energia. In quel mondo, questo potrebbe essere sufficiente per mantenere le persone oneste.

In generale, non tradirò perché non è nel mio migliore interesse , in generale e in media, farlo. In altre parole, il risultato atteso dell'imbroglio è inferiore al risultato atteso della cooperazione.

Se non è così, o se gli attori percepiscono che non è così, forse uno o più sceglieranno semplicemente di non partecipare. Ad esempio, se vedo che l'altro ragazzo è un gigante alto 9 piedi con corna e denti da mostro, potrei semplicemente scegliere di scappare e non fare alcun patto; il ragazzo sembra troppo pericoloso per me da affrontare, potrebbe semplicemente rubare ciò che gli piace impunemente. Se siamo all'incirca uguali, allora percepiamo che ci troviamo in una situazione in cui non è nell'interesse di nessuna delle parti imbrogliare, è nel nostro interesse cooperare e quindi, supponendo che entrambe le parti siano sane e razionali, entrambe le parti collaboreranno.

I contratti Oracle e l'evoluzione della fiducia

Con lo sviluppo della cultura, si sono sviluppate anche le interazioni umane. Sono diventati meno violenti, anche se l'implicita minaccia della forza non è scomparsa. I costumi culturali davano alle persone un maggiore incentivo a cooperare e diversi tipi di disincentivi a barare.

Avanti veloce verso un'epoca di civiltà primitiva; Sto facendo un affare per comprare 100 staia di grano. È una specie di contratto a termine primitivo; Pago oggi per il grano che riceverò quando sarà raccolto il mese prossimo. Do al ragazzo la mia moneta di rame, ci stringiamo la mano, condividiamo un sorso di birra d'orzo e ci separiamo fino al mese prossimo per la risoluzione del contratto. Sembra ok.

Mi sono messo alla mercé di quel ragazzo; ha l'intero importo dei miei soldi e io non ho ancora niente. Quindi cosa mi fa sentire sicuro che manterrà il contratto? Poche cose. Lui è un uomo d'affari; fa regolarmente affari con la popolazione locale. Ha fatto affari con persone che conosco e ha sempre consegnato in modo equo e puntuale. Ha una reputazione di onestà. Inoltre, so che ha un disincentivo a barare. Si guadagna da vivere principalmente grazie al fatto che è noto per essere un trader onesto. Se dovesse imbrogliarmi, lo farei sapere a tutti, e questo danneggerebbe la sua buona reputazione, e quindi i suoi affari. La quantità di denaro che guadagna ingannandomi sarebbe piccola rispetto all'importo futuro che potrebbe sopportare di non guadagnare se la sua base di clienti lo abbandonasse. Quindi so che non è necessariamente nel suo interesse imbrogliarmi.

Questo è fantastico; la minaccia della forza o della violenza è assente dall'immagine sopra. Tranne due cose:

  1. La minaccia della forza non è del tutto assente. Un altro disincentivo al tradimento potrebbe essere il pensiero di cosa farà un ragazzo tradito. Ho armi e amici fedeli a me. Io, come parte imbrogliata e arrabbiata, potrei ricorrere alla forza. È così che iniziano le guerre di clan!
  2. Potrebbe anche essere in atto un sistema di governo di qualche tipo, che valuterà i dettagli del caso ed eventualmente multerà il commerciante o lo metterà in prigione. Il tuo disincentivo standard sostenuto dal governo è sempre supportato dalla minaccia della forza, perché la punizione sottostante per il rifiuto di pagare la multa, il rifiuto di andare in prigione, il rifiuto di rispettare tutte le misure, è in definitiva la forza. E questo arriva fino ai giorni nostri. Se mi rifiuto di pagare una multa, potrei essere arrestato. Se rifiuto di essere arrestato, verrà usata la forza contro di me e potrei essere messo in prigione contro la mia volontà o addirittura ucciso (se la mia resistenza è abbastanza ostinata). Lì vediamo la minaccia della forza a soli due passi di distanza, anche per un'infrazione minore!

Fiducia decentralizzata oggi

Avanti veloce fino ai giorni nostri. Quali sono i disincentivi alla rottura di un contratto? Sono molto diversi dallo scenario precedente?

La società X ha uno sconto per corrispondenza per l'acquisto di questo prodotto. Perché credi che lo faranno? Come nell'esempio precedente; l'azienda ha poco da guadagnare imbrogliando una piccola somma e molto da perdere danneggiando la propria reputazione. Questa è la base dietro molti scenari di fiducia ed è stata per molto tempo. E ancora, come nell'esempio del commerciante di grano, c'è la minaccia della forza, anche se in questo caso non si arriva a questo. La società può essere multata o punita con un'azione collettiva e la società deve pagare la multa o affrontare punizioni peggiori. Tali punizioni sono sostenute da un governo, che a sua volta è sostenuto dalla minaccia della forza, sia economica che militare, anche se si potrebbe pensare che la minaccia della forza economica sia a sua volta sostenuta dalla forza militare, cioè dalla violenza.

Sistemi tradizionali

Il modello dei contratti sostenuto dall'applicazione della forza sanzionata dal governo ha servito bene l'umanità per migliaia di anni? O ce l'ha? Beh, sì, ma è una progressione naturale. In assenza di governo, gruppi di persone formano governi. Sembra quasi che non si possa impedire alle persone di formare governi; si formeranno.

Allora, che dire dei contratti intelligenti blockchain? In che modo la blockchain e il modello di contratto intelligente assicurano affidabilità o disincentivano l'imbroglio? Non dire solo "infedeltà", non è una risposta! Nei nostri esempi precedenti, l'inganno è in qualche modo disincentivato.

Diamo un'occhiata più da vicino a come la blockchain adempie (o sostituisce) quella funzione.

Sistemi Blockchain: Bitcoin

Per suddividere questa grande domanda in domande più piccole, iniziamo con bitcoin. In che modo bitcoin disincentiva l'imbroglio? Sono libero di eseguire qualsiasi software di nodo bitcoin che desidero, purché sembri aderire ai protocolli della rete bitcoin. Nessuno mi scoraggia dall'eseguire il mio nodo bitcoin fatto in casa che fa quello che vuole mentre aderisce ai protocolli di rete; c'è un modo in cui posso usarlo per guadagni illeciti?

Certo, posso rilasciare qualsiasi tipo di transazione nella rete bitcoin per l'approvazione. Posso rilasciare una transazione che mi invia tutti i tuoi bitcoin, rilasciarlo sulla rete, aspettare che venga aggiunto a un blocco e wow, ora tutti i tuoi bitcoin sono miei ? No, a causa della crittografia.

Non ho la tua chiave privata e tale transazione deve essere firmata con la tua chiave privata. Quindi, sono bloccato lì dalla crittografia. O sono io? Chi dice che una transazione del genere deve essere firmata? Cosa succede se lo provo? Bene, quello che accadrà ovviamente è che l'intera rete bitcoin rifiuterà la mia transazione. Perché qualcuno dovrebbe accettarlo? A parte il fatto che eseguono tutti nodi standard, che lo rifiuteranno a priori, perché dovrebbero aiutarmi a imbrogliare? Ciò minerà sicuramente l'integrità della rete bitcoin e, così facendo, minerà la propria cripto-ricchezza. Quindi non ha senso che aiutino me, uno sconosciuto anonimo, a imbrogliare un altro sconosciuto anonimo. Anche se un attore irrazionale in qualche modo accetta la mia transazione non valida, la stragrande maggioranza della rete bitcoin la rifiuterà e non ha alcuna possibilità. È battuto di nuovo, questa volta per numeri.

E se, tuttavia, fossi una potente operazione di mining? Sicuramente ora ho più potere di concludere le cose a mio vantaggio. Sì, ma ancora non mi dà nulla di vicino al potere assoluto. Anche da potente minatore, se controllo meno del 50% della rete non posso fare molto. Ho il potere di scegliere l'ordine in cui le transazioni vengono aggiunte ai blocchi, ma non è certo il potere di coniare o rubare monete. Anche se controllo più del 50% della rete (supponendo qui che il lettore sia a conoscenza del noto attacco del 51% in relazione al proof-of-work come in bitcoin), il mio potere principale sarebbe la doppia spesa. Sebbene sia una specie di potere interessante, è molto discutibile se sarebbe nel mio interesse farlo, poiché minerebbe l'integrità del bitcoin. Sembra probabile che farei meglio a usare il mio controllo per estrarre tutte le monete, facendo così più soldi e mantenendo il terreno su cui si trova quella ricchezza. Quindi, non sono battuto, ma il mio impulso a imbrogliare è ostacolato da un disincentivo che è organicamente integrato nel protocollo. E quel disincentivo è fondamentalmente sostenuto dalla forza dei numeri; il travolgente consenso dei partecipanti alla rete bitcoin.

Smart Contract Blockchain e Contratti Oracle

Cosa sono i contratti intelligenti? Supponiamo che io abbia distribuito un contratto ingannevole per indurre le persone a inviarmi i loro soldi? O supponiamo che io abbia implementato un contratto di scommesse e utilizzato uno degli attacchi (se puoi chiamarli così) descritti in precedenza? Posso farlo, potrebbe ingannare alcune persone; Io, in quanto attore disonesto, potrei trarre qualche piccolo profitto da una simile impresa. La difesa contro di essa spetterebbe a ciascun partecipante considerare attentamente (come si dovrebbe fare con qualsiasi contratto) il contratto di cui sta per essere parte e le potenziali modalità di abuso. Dovrebbero considerare anche la fonte - cosa, semmai, sanno della parte che pubblica e mantiene il contratto e qualsiasi oracolo o contratto associato. Si spera che un contratto disonesto non duri a lungo prima che la rete lo segnali informalmente come disonesto, costringendo i partecipanti a evitarlo volontariamente, interrompendolo. La rete è grande e le parole viaggiano velocemente.

Tranne che a un certo punto, devi ancora fidarti di un essere umano. I dati del contratto di scommesse sono forniti da un oracolo. L'oracolo è mantenuto da un essere umano. Non importa quanti livelli aggiungi nel tentativo di mantenere la rete onesta, a un certo punto torna comunque a un essere umano. Quindi, di quale tipo di oracolo ti fideresti, dato il nostro esempio di scommesse? Mi fiderei di un oracolo che ha più da perdere che da guadagnare, barando. Esempio: immagina che ESPN o una rete simile fossero gli sponsor dell'oracolo. Ti aspetteresti che loro, più di chiunque altro, fornissero dati onesti, dal momento che vincere illecitamente una piccola somma in una scommessa di boxe sarebbe oscurato dalla conseguente perdita di reputazione. In questo caso, la tua fiducia è ben riposta per lo stesso motivo per cui ci fidiamo dell'onesto commerciante di grano. Questo tipo di accordo fiduciario è antico e consolidato.

Quindi, cosa abbiamo guadagnato nell'uso degli smart contract? In che modo gli smart contract sono diversi dalla governance o dai precedenti metodi di mantenimento dei contratti?

Avvolgendo

Giusto per fare un punto, per dare spunti di riflessione e discussione, e per concludere il mio articolo, presenterò alcune semplici osservazioni, al posto di conclusioni difficili. Perché per un argomento di questa complessità, una conclusione concisa sembra una sorta di storia così semplice e una semplificazione eccessiva. Le osservazioni che ho intenzione di presentare (e per favore sentiti libero di discuterle/confutarle/contraddirle) sono queste:

  • La fiducia basata sul presupposto che l'altra parte ha più da guadagnare dalla cooperazione che dall'imbroglio è antica, funziona in situazioni pratiche e non è scomparsa. È ancora inerente in alcuni casi al mondo blockchain, anche se forse eliminato in molti casi. Nel caso del nostro esempio oracolo, è ancora vivo e vegeto.
  • Anche la fiducia basata sulla minaccia della forza o della violenza è stata inerente alla società umana da tempo immemorabile, ma è notevolmente assente dal nostro modello di contratto intelligente ed è stata sostituita dall'applicazione tramite combinazioni intelligenti di crittografia e consenso di grandi numeri.

Sfido gli altri sviluppatori di Ethereum a fare due cose:

  1. Pensa in qualsiasi modo, nei sistemi di blockchain pubbliche (come bitcoin o ethereum), in cui qualsiasi cosa è imposta dalla minaccia implicita o esplicita della forza.
  2. Pensa a qualsiasi sistema di regole principali nel diritto contrattuale o finanziario moderno, che non sia in qualche modo imposto dalla minaccia esplicita o implicita della forza.

Illustrazione dell'evoluzione della fiducia e del potere statale

Qualcosa di vecchio, qualcosa di nuovo

E penso che qui siamo arrivati ​​alla differenza principale, e in effetti al vero motivo per cui diciamo che i sistemi blockchain sono "rivoluzionari", rispetto ai sistemi del passato. A mio modo di pensare, non è affatto mancanza di fiducia, ma piuttosto una piattaforma più stabile per la fiducia e, in particolare, una piattaforma che non dipende affatto dalla minaccia della forza o della violenza.

Da un lato, abbiamo la vecchia e collaudata garanzia di reciproco vantaggio in situazioni in cui manca l'incentivo a barare. Non è niente di nuovo. La novità è l'introduzione del consenso assistito dalla crittografia, che aiuta a scoraggiare gli imbrogli e a mantenere il sistema onesto. E la sintesi di questi due elementi ha prodotto qualcosa di veramente straordinario, possibile per la prima volta nella storia umana: un sistema utilizzabile per grandi gruppi anonimi, in cui da nessuna parte si trova la minaccia esplicita o implicita della forza come disincentivo o punizione . E questo, credo, è ciò che è veramente sorprendente. Se questo aspetto viene trascurato, quello che abbiamo è una nuova tecnologia elegante (che, ammetto, è abbastanza interessante così com'è). Ma quando si considera questo aspetto, è evidente che siamo entrati in una nuova era di governance.