Uno sguardo dettagliato alla blockchain non blockchain
Col passare del tempo, il mondo blockchain si è separato in due parti distinte. Da un lato, le blockchain pubbliche con le loro criptovalute associate hanno goduto di un notevole ritorno recente, coniando molti multimilionari. D'altra parte, l'uso di blockchain autorizzati o aziendali è cresciuto in modo silenzioso ma costante, vedendo il loro primo distribuzioni live in più settori durante il 2017.
Una domanda interessante da considerare è il livello appropriato di somiglianza tra questi due tipi di catena. Entrambi implementano un database condiviso utilizzando reti peer-to-peer, crittografia a chiave pubblica-privata, regole di transazione e meccanismi di consenso che possono sopravvivere a malintenzionati. Questa è una grande quantità di terreno comune. Tuttavia, le blockchain pubbliche e private hanno requisiti diversi in termini di riservatezza, scalabilità e governance. Forse queste differenze indicano la necessità di progetti radicalmente divergenti.
I Corda piattaforma, sviluppata da R3 consorzio bancario, adotta una posizione chiara su questa questione. Mentre alcuni aspetti sono stati ispirati da blockchain pubblici, Corda è stato progettato da zero in base alle esigenze dei membri di R3. Infatti, sebbene R3 utilizzi ancora la parola "blockchain" descrive per aiutare a commercializzare il loro prodotto, Corda non ha affatto una catena di blocchi. Più di ogni altra piattaforma di "registro distribuito" che io conosca, Corda si discosta radicalmente dall'architettura delle blockchain convenzionali.
Il mio obiettivo in questo articolo è spiegare queste differenze e discutere le loro implicazioni, nel bene e nel male. In realtà, buono e cattivo è il modo sbagliato di metterlo, perché la domanda più interessante è "Buono e cattivo per cosa?" Questo articolo è tutt'altro che breve. Ma alla fine, spero che i lettori acquisiranno una certa comprensione delle differenze in Corda e dei loro conseguenti compromessi. Corda è importante perché le sue decisioni di progettazione mettono in risalto molti dei dilemmi delle blockchain aziendali.
Un'ultima cosa prima di immergerci. In qualità di CEO dell'azienda dietro più giri, una popolare piattaforma blockchain aziendale, perché sto scrivendo in modo così approfondito su un prodotto apparentemente concorrente? Il motivo standard sarebbe sostenere la superiorità di MultiChain, ma non è questa la mia motivazione qui. In effetti, non vedo Corda e MultiChain come concorrenti, perché sono fondamentalmente diversi in termini di design, architettura e pubblico. Corda e MultiChain competono allo stesso modo delle navi da crociera e delle moto d'acqua: sebbene entrambe trasportino persone via mare, non ci sono quasi situazioni del mondo reale in cui entrambe possano essere utilizzate.
Su una nota più personale, ho imparato molto dalla leadership tecnica di Corda negli ultimi anni, sia attraverso riunioni, corrispondenza o i loro scritti pubblici, molti dei quali sono avvenuti prima che si unissero a R3. Parte del mio interesse per Corda deriva dal rispetto che ho per questa squadra, e solo per questo motivo, Corda merita di essere studiata per chiunque cerchi una comprensione del campo del registro distribuito.
Presentazione di blockchain
Per capire Corda, è utile iniziare con blockchain convenzionali. Lo scopo di una blockchain è consentire a un database o un libro mastro di essere condiviso in modo diretto e sicuro da parti non fidate. Ciò contrasta con i database centralizzati, che sono archiviati e controllati da una singola organizzazione. Una blockchain ha più "nodi", ognuno dei quali memorizza una copia del database e può appartenere a un'organizzazione diversa. I nodi si connettono tra loro in un denso modo peer-to-peer, utilizzando un "protocollo di gossip" in cui ogni nodo racconta costantemente ai suoi pari tutto ciò che apprende. Di conseguenza, qualsiasi nodo può trasmettere rapidamente un messaggio all'intera rete tramite molti percorsi alternativi.
Un database, centralizzato o basato su blockchain, inizia in uno stato vuoto e viene aggiornato tramite "transazioni". Una transazione è definita come un insieme di modifiche al database che sono "atomiche", nel senso che hanno successo o falliscono nel complesso. Immagina un database che rappresenta un libro mastro finanziario, con una riga per conto. Una transazione in cui Alice paga $ 10 a Bob ha tre passaggi: (1) verifica che l'account di Alice contenga almeno $ 10, (2) sottrai $ 10 dall'account di Alice e (3) aggiungi $ 10 all'account di Bob. Come requisito di base, qualsiasi piattaforma di database deve garantire che nessuna transazione interferisca con un'altra. Questo "isolamento" si ottiene bloccando le righe sia per Alice che per Bob mentre il pagamento è in corso. Qualsiasi altra transazione che coinvolge queste righe deve attendere fino al termine di questa.
In una blockchain, ogni nodo elabora indipendentemente ogni transazione sulla propria copia del database. Le transazioni vengono create ovunque sulla rete e propagate automaticamente a tutti gli altri nodi. Poiché le organizzazioni che gestiscono i nodi possono avere interessi diversi (o addirittura contrastanti), non possono fidarsi l'una dell'altra per effettuare transazioni in modo equo. Le blockchain necessitano quindi di regole che definiscano se una particolare transazione è valida o meno. In un libro mastro finanziario condiviso, queste regole impediscono agli utenti di spendere i soldi gli uni degli altri o di evocare fondi dal nulla.
Insieme alle regole che determinano la validità della transazione, le blockchain devono anche definire come verranno ordinate le transazioni, poiché in molti casi questo ordinamento è fondamentale. Se Alice ha $ 15 e cerca di inviare $ 10 sia a Bob che a Charlie in due transazioni separate, solo uno di questi pagamenti può avere esito positivo. Anche se potremmo voler dire che la prima transazione ha la precedenza, una rete peer-to-peer non ha una definizione oggettiva di "primo", poiché i messaggi possono arrivare a nodi diversi in ordini diversi.
Regole di transazione
In senso generale, le informazioni in qualsiasi database sono separate in record o "righe" e una transazione può eseguire tre operazioni diverse: eliminare righe, creare righe e / o modificare righe. Questi possono essere ridotti ulteriormente a due, poiché modificare una riga equivale a eliminare quella riga e crearne una nuova al suo posto. Per tornare al pagamento di Alice a Bob, la sua riga contenente $ 15 viene eliminata e vengono create due nuove righe: una contenente $ 10 per Bob e l'altra con $ 5 in "modifica" per Alice.
Seguendo la terminologia di bitcoin e Corda, denotiamo le righe cancellate da una transazione come i suoi "input" e quelle create come i suoi "output". Qualsiasi riga eliminata da una transazione deve essere stata creata da una transazione precedente. Pertanto ogni input di transazione consuma (o "spende") l'output di una transazione precedente. Il contenuto aggiornato del database è definito dall'insieme di "output di transazione non spesi" o "UTXO".
In una blockchain, una transazione è valida se soddisfa le seguenti tre condizioni:
- Correttezza. La transazione deve rappresentare una trasformazione legittima da input a output. Ad esempio, in un libro mastro finanziario, la quantità totale di fondi negli input deve corrispondere al totale negli output, per evitare che il denaro appaia o scompaia magicamente. Le uniche eccezioni sono le transazioni speciali di "emissione" o "ritiro", in cui i fondi vengono aggiunti o rimossi esplicitamente.
- Autorizzazione. La transazione deve essere autorizzata dal proprietario di ogni output consumato dai suoi input. In un libro mastro finanziario, ciò impedisce ai partecipanti di spendere i soldi degli altri senza permesso. L'autorizzazione alla transazione viene gestita mediante crittografia asimmetrica (o chiave pubblica-privata). Ogni riga ha un proprietario, identificato da una chiave pubblica, la cui chiave privata corrispondente viene mantenuta segreta. Per essere autorizzata, una transazione deve essere firmata digitalmente dal proprietario di ciascuno dei suoi input. (Tieni presente che le righe possono anche avere proprietari di "firme multiple" più complesse, ad esempio dove due parti su tre possono autorizzarne l'uso.)
- Unicità. Se una transazione consuma un particolare output, nessun'altra transazione può consumare nuovamente quell'output. In questo modo impediamo ad Alice di effettuare pagamenti in conflitto sia a Bob che a Charlie. Sebbene le transazioni per entrambi questi pagamenti possano essere corrette e autorizzate, la regola di unicità garantisce che solo una verrà elaborata dal database.
In una blockchain convenzionale, ogni nodo controlla ogni transazione in base a queste tre regole. Più avanti, vedremo come Corda divide questa responsabilità in modo diverso.
Costruzioni
Una blockchain è letteralmente una catena di blocchi, in cui ogni blocco si collega al precedente tramite un “hash” che ne identifica in modo univoco il contenuto. Ogni blocco contiene un insieme ordinato di transazioni che non devono essere in conflitto tra loro o con quelle dei blocchi precedenti, nonché un timestamp e alcune altre informazioni. Proprio come le transazioni, i blocchi si propagano rapidamente attraverso la rete e vengono verificati in modo indipendente da ogni nodo. Una volta che una transazione appare in un blocco, viene "confermata", portando i nodi a rifiutare qualsiasi transazione in conflitto.
Chi è responsabile della creazione di questi blocchi e come possiamo essere sicuri che tutti i nodi concorderanno sulla catena autorevole? La questione degli "algoritmi di consenso" è un argomento enorme in sé, pieno di acronimi meravigliosi come PoW (Proof of Work), PBFT (Practical Byzantine Fault Tolerance) e DPoS (Delegated Proof of Stake). Non entreremo in tutto questo qui. Basti dire che le blockchain autorizzate per le imprese utilizzano una sorta di schema di voto, in cui i voti vengono concessi ai "nodi di convalida" che sono collettivamente responsabili. Lo schema garantisce che, fintanto che una buona maggioranza dei nodi di convalida funziona correttamente e onestamente, le transazioni entreranno nella catena in un ordine (vicino a) equo, i timestamp saranno (approssimativamente) corretti e le transazioni confermate non potranno essere successivamente annullate.
Prima di discutere alcune delle sfide delle blockchain, vorrei chiarire tre punti aggiuntivi. In primo luogo, mentre sto utilizzando un libro mastro finanziario attraverso l'esempio in questo pezzo, il modello di transazioni input-output supporta una varietà molto più ampia di casi d'uso. Ogni riga può contenere un ricco oggetto di dati (si pensi a JSON) contenente molti tipi diversi di informazioni - infatti, Corda usa la parola "stato" piuttosto che "riga" per questo motivo. Gli stati più ricchi non cambiano nulla di fondamentale sulle regole di transazione: la correttezza è ancora definita in termini di input e output, l'autorizzazione è ancora richiesta per ogni input e l'unicità garantisce che ogni output possa essere speso una sola volta.
In secondo luogo, ci sono molti casi d'uso della blockchain in cui le righe vengono create solo nel database e non vengono mai eliminate. Queste applicazioni riguardano l'archiviazione generale dei dati, la marcatura temporale e l'autenticazione notarile, piuttosto che mantenere una sorta di libro mastro che è in continuo mutamento. In queste applicazioni di soli dati, le transazioni aggiungono dati nei loro output ma non ne consumano nessuno nei loro input, consentendo di semplificare le regole di correttezza, autorizzazione e unicità. Sebbene i casi d'uso di soli dati siano al centro del nostro sviluppo in MultiChain, li menziono solo di sfuggita qui, poiché Corda chiaramente non è stato progettato con loro in mente.
Infine, vale la pena notare che alcune piattaforme blockchain non utilizzano un modello input-output. Ethereum presenta un paradigma alternativo, in cui la catena controlla un computer virtuale con uno stato globale che è gestito da "contratti", e le transazioni non si connettono tra loro in modo esplicito. Una discussione sul modello di Ethereum nelle blockchain autorizzate va oltre il nostro scopo qui, ma vedi Questo articolo per una spiegazione e una critica dettagliate. Un vantaggio chiave del paradigma input-output è che la maggior parte delle transazioni può essere elaborata in parallelo e indipendentemente l'una dall'altra. Questa proprietà è fondamentale per Corda, come vedremo più avanti.
Sfide blockchain
Immaginiamo che le banche mondiali abbiano creato un libro mastro condiviso per rappresentare la proprietà, il trasferimento e lo scambio di una varietà di attività finanziarie. In teoria, questo potrebbe essere implementato su una blockchain regolare, come descritto sopra. Ogni riga conterrebbe tre colonne: un identificatore di risorsa come GOOG o USD, la quantità posseduta e la chiave pubblica del proprietario. Ogni transazione trasferisce uno o più asset dai suoi input ai suoi output, con casi speciali per l'emissione e il ritiro.
Ogni banca della rete eseguirà uno o più nodi che si connettono agli altri, propagando e verificando le transazioni. I membri senior agirebbero come validatori, con la responsabilità collettiva di confermare, ordinare e contrassegnare le transazioni. Qualsiasi comportamento scorretto del validatore sarebbe visibile a tutti i nodi della rete, portando a censura, esclusione e / o procedimenti legali. Con tutto questo in atto, qualsiasi asset finanziario potrebbe essere spostato in tutto il mondo in pochi secondi, con le regole di correttezza, autorizzazione e unicità che garantiscono l'integrità del libro mastro.
Cosa c'è di sbagliato in questa immagine? In realtà, ci sono tre problemi: scalabilità, riservatezza e interoperabilità. La questione della scalabilità è abbastanza semplice. La nostra blockchain interbancaria proposta richiederebbe a ogni membro di verificare, elaborare e archiviare ogni transazione eseguita da ogni banca nel mondo. Anche se ciò fosse tecnicamente fattibile per le più grandi istituzioni finanziarie, il costo di calcolo e archiviazione creerebbe una barriera significativa per molti. Sicuramente preferiremmo un sistema in cui i partecipanti vedessero solo quelle transazioni in cui sono immediatamente coinvolti.
Ma mettiamo da parte la scalabilità, poiché alla fine può essere risolta utilizzando computer costosi e un'ingegneria intelligente. Una questione più fondamentale è la riservatezza. Sebbene possa sembrare utopistico che ogni transazione sia visibile ovunque, nel mondo reale una trasparenza così radicale non è un punto di partenza in termini di concorrenza e regolamentazione. Se JP Morgan e HSBC scambiano una coppia di asset, è improbabile che vogliano che Citi e la Bank of China vedano cosa hanno fatto. Se la transazione è stata condotta per conto dei clienti di queste banche, potrebbe essere illegale per loro esporla in questo modo.
Una soluzione proposta al problema della riservatezza sono i "canali", come implementati in Hyperledger Fabric. Ogni canale ha determinati membri, che sono un sottoinsieme dei nodi della rete nel suo insieme. Le transazioni di un canale sono visibili solo ai suoi membri, in modo che ogni canale agisca effettivamente come una blockchain separata. Anche se questo aiuta con la riservatezza, mina anche l'intero punto dell'esercizio. Gli asset non possono essere spostati da un canale all'altro senza l'aiuto di un intermediario fidato attivo su entrambi. La difficoltà di questo approccio è stata recentemente evidenziata da SWIFT prova di concetto di riconciliazione, che ha stimato che sarebbero stati necessari oltre 100,000 canali nella produzione. Sono 100,000 isole tra le quali le risorse non possono essere spostate direttamente.
Nei casi d'uso di soli dati, in cui le transazioni non consumano dati in input, il problema della riservatezza può essere eluso crittografando o hashing i dati negli output e fornendo la chiave di decrittazione o dati non sottoposti ad hashing al di fuori della catena. Ma per una transazione i cui input consumano gli output di altre transazioni, ogni nodo deve vedere quegli input e output per convalidare la transazione. Mentre tecniche crittografiche avanzate come beni riservati ed zero prove di conoscenza sono stati sviluppati per risolvere parzialmente o completamente questo problema per i registri finanziari, questi impongono un carico significativo sulle prestazioni e / o non possono essere generalizzati a nessuna regola di correttezza.
Infine, parliamo di interoperabilità. In un mondo ideale, ogni banca si unirebbe immediatamente alla nostra blockchain globale il giorno del lancio. In realtà, tuttavia, più blockchain sarebbero adottate da diversi gruppi di banche, in base alla geografia o alle relazioni preesistenti. Nel tempo, un membro di un gruppo potrebbe voler iniziare a negoziare con un membro di un altro, trasferendo un asset tra catene. Proprio come con i canali, questo può essere ottenuto solo con l'aiuto di un intermediario fidato, vanificando lo scopo della blockchain.
Corda mira a risolvere questi problemi correlati di scalabilità, riservatezza e interoperabilità attraverso un ripensamento radicale del funzionamento dei registri distribuiti.
La visione parziale di Corda
La differenza fondamentale in Corda è facile da spiegare: ogni nodo vede solo alcune, piuttosto che tutte, le transazioni elaborate sulla rete. Sebbene un singolo libro mastro logico e concettuale sia definito da tutte queste transazioni, nessun singolo nodo vede quel libro mastro nella sua interezza. Per fare un confronto, in qualsiasi momento, ogni banconota da un dollaro nel mondo si trova in un posto particolare, ma nessuno sa dove siano tutte.
Quindi quali transazioni vede un nodo Corda? Innanzitutto quelle in cui è direttamente coinvolta, perché possiede uno degli input o degli output di quella transazione. In un libro mastro finanziario, questo include ogni transazione in cui un nodo invia o riceve fondi. Supponiamo che Alice crei una transazione che consuma $ 15 in input e ha due output: uno con $ 10 per me e l'altro con $ 5 in "cambiamento" per lei. Dopo che Alice mi ha inviato questa transazione, posso controllarne la correttezza e l'autorizzazione, verificando che gli input e gli output siano equilibrati e che Alice abbia firmato.
Tuttavia, questa transazione da sola non è sufficiente. Devo anche verificare che lo stato di input di $ 15 di Alice esista davvero e non si è limitato a inventarlo. Ciò significa che devo vedere la transazione che ha creato questo stato e verificarne la correttezza e l'autorizzazione. Se questa transazione precedente, che ha inviato ad Alice $ 15, ha un input di $ 10 appartenente a Denzel e un altro input di $ 5 da Eric, allora devo verificare anche le transazioni che le hanno create. E così via, fino alla transazione di "emissione" originale in cui è stato creato l'asset. Il numero di transazioni che devo verificare dipenderà da quante volte le risorse sono passate di mano e dall'entità della ramificazione all'indietro.
Dal momento che i nodi Corda non vedono automaticamente ogni transazione, come ottengono quelle di cui hanno bisogno? La risposta è dal mittente di ogni nuova transazione. Prima che Alice crei una transazione che consuma i suoi $ 15, deve aver già verificato la transazione in cui l'ha ricevuta. E poiché Alice deve aver applicato la tecnica ricorsiva sopra, avrà una copia di ogni transazione necessaria per questa verifica. Bob richiede semplicemente queste transazioni da Alice come parte della loro interazione. Se Alice non risponde in modo appropriato, Bob conclude che Alice sta cercando di ingannarlo e rifiuta il pagamento in arrivo. Nel caso in cui Bob riceva una nuova transazione i cui input hanno più proprietari, può ottenere le prove necessarie da ciascuno.
Presentazione dei notai
Finora abbiamo spiegato come Bob può verificare la correttezza e l'autorizzazione di una transazione in entrata, incluso il ripercorrere ricorsivamente le origini dei suoi input. Ma c'è un'altra regola a cui dobbiamo pensare: l'unicità. Diciamo che Alice è dannosa. Può generare una transazione in cui paga $ 10 a Bob e un'altra in cui paga gli stessi $ 10 a Charlie. Può inviare queste transazioni rispettivamente a Bob e Charlie, insieme a una prova completa di correttezza e autorizzazione di ciascuna. Sebbene entrambe le transazioni siano in conflitto l'una con l'altra consumando lo stesso stato, non c'è modo per Bob e Charlie di saperlo.
Le blockchain convenzionali risolvono questo problema facendo in modo che ogni nodo veda ogni transazione, rendendo i conflitti facili da rilevare e rifiutare. Allora come fa Corda, con la sua visibilità parziale delle transazioni, ad affrontare lo stesso problema? La risposta è con l'aiuto di un “notaio”. Un notaio è una parte fidata (o parti che lavorano insieme) che garantisce che un determinato stato venga consumato solo una volta. Ogni stato ha un notaio specifico, che deve firmare qualsiasi transazione in cui quello stato viene consumato. Una volta che un notaio lo ha fatto, non deve firmare un'altra transazione per lo stesso stato. I notai sono i guardiani della rete dell'unicità delle transazioni.
Sebbene ogni stato possa avere un notaio diverso, tutti gli stati consumati da una particolare transazione devono essere assegnati allo stesso. In questo modo si evitano problemi relativi a deadlock e sincronizzazione, che dovrebbero essere familiari a chi ha esperienza di database distribuito. Supponiamo che Alice e Bob accettino di scambiare i $ 10 di Alice con i £ 7 di Bob. La transazione per questo scambio deve essere firmata dai notai di entrambi gli stati, ma quale va per primo? Se il notaio di Alice firma ma quello di Bob fallisce per qualche motivo, allora ad Alice verrà lasciata una transazione incompleta e non potrà mai più utilizzare i suoi $ 10. Se i segni di Bob prima, allora è esposto allo stesso modo. Anche se potremmo desiderare che i notai lavorino semplicemente insieme, in pratica ciò richiede fiducia reciproca e l'uso di un protocollo di consenso, complicazioni che i progettisti di Corda hanno scelto di evitare.
Se gli stati con notai diversi sono richiesti come input per una singola transazione, i loro proprietari eseguono prima speciali transazioni di "modifica notarile", che spostano uno stato da un notaio all'altro, senza cambiare nient'altro. Quindi, quando le parti costruiscono una transazione con più input, devono prima concordare il notaio da utilizzare e quindi eseguire le modifiche notarili necessarie. Mentre lo sviluppatore dentro di me ha sentito una piccola fitta di dolore leggendo di questa soluzione alternativa, non c'è motivo per cui non funzionerà finché i notai giocano.
Va inoltre chiarito che, sebbene ogni notaio sia un singolo attore logico in termini di firma delle operazioni, non è necessario che sia sotto il controllo di una singola parte. Un gruppo di organizzazioni potrebbe dirigere un notaio collettivamente, utilizzando un protocollo di consenso appropriato in cui è necessaria la maggioranza dei partecipanti per generare una firma valida. Ciò impedirebbe a qualsiasi singola parte maligna di minare l'unicità firmando transazioni in conflitto. In teoria, potremmo persino consentire a ogni nodo della rete di partecipare a questo tipo di autenticazione notarile condivisa, anche se in tal caso saremmo più o meno tornati a una blockchain convenzionale.
Prendendo punteggio
Ricapitoliamo le principali differenze tra Corda e le blockchain convenzionali. In Corda, non esiste una blockchain unificata che contenga tutte le transazioni confermate. I nodi vedono solo le transazioni in cui sono direttamente coinvolti o da cui dipendono storicamente. I nodi sono responsabili del controllo della correttezza e dell'autorizzazione delle transazioni, ma si affidano a notai di fiducia per verificare l'unicità.
Naturalmente, c'è molto di più in Corda oltre a questo: l'uso di certificati digitali per autenticare l'identità, "mappe di rete" per aiutare i nodi a trovarsi e fidarsi l'uno dell'altro, "contratti" per stato che definiscono la correttezza dalla prospettiva di ogni stato, un versione deterministica della Java Virtual Machine che esegue questi contratti, "flussi" che automatizzano le negoziazioni delle transazioni, "finestre temporali" che limitano le transazioni in base al tempo, "oracoli" che attestano fatti esterni e "CorDapp" che raggruppano molte cose insieme per una facile distribuzione . Sebbene ciascuna di queste funzionalità sia interessante, gli equivalenti per tutti possono essere trovati in altre piattaforme blockchain. Il mio obiettivo in questo articolo è concentrarmi su ciò che rende Corda unica.
Quindi Corda mantiene la sua promessa? Risolve i problemi di scalabilità, riservatezza e interoperabilità delle blockchain? E nel fare le sue scelte particolari, quanto paga Corda?
Più scalabile, a volte
Cominciamo con la scalabilità. Qui, il vantaggio di Corda appare chiaro, poiché i nodi vedono solo alcune delle transazioni in una rete. In una blockchain regolare, il throughput massimo è limitato dalla velocità del nodo più lento nell'elaborazione delle transazioni. Al contrario, una rete Corda potrebbe elaborare un milione di transazioni al secondo, mentre ogni nodo ne vede solo una piccola parte. La scalabilità si estende anche ai notai, poiché il compito di firmare le transazioni per unicità può essere ripartito tra molti notai diversi, ognuno dei quali è responsabile di una piccola parte degli stati della rete.
Detto questo, c'è una situazione in cui Corda si comporta molto peggio di una blockchain. Ciò si verifica quando un nodo riceve una nuova transazione che dipende da molte altre transazioni che non ha visto prima. Immagina un asset altamente liquido che è stato emesso 10 anni fa e cambia di mano circa ogni cinque minuti. Il percorso da qualsiasi nuova transazione all'emissione di questo asset sarà lungo oltre un milione di transazioni. Quando un nodo riceve questa risorsa per la prima volta, deve recuperare questi milioni di transazioni dal mittente e verificarle a turno. Ad una velocità (abbastanza ottimistica) di 1000 transazioni al secondo, ci sarebbe un ritardo di 17 minuti prima che il destinatario possa inviare l'asset, chiaramente troppo lungo per qualcosa di così liquido.
Perché le blockchain non soffrono di questo problema? Poiché i nodi vedono e verificano ogni transazione mentre si verifica, aggiornano costantemente lo stato del libro mastro e sanno esattamente chi possiede ogni risorsa al momento. Anche se un nodo non ha mai detenuto una determinata risorsa prima, può verificare immediatamente la transazione in cui la riceve e quindi inviarla immediatamente. Per dirla in altro modo, i nodi blockchain devono verificare le transazioni che potrebbero non essere rilevanti per loro, ma così facendo, pagano anticipatamente il costo del controllo di qualsiasi transazione futura che potrebbe entrare. Sebbene i nodi Corda siano complessivamente meno occupati, eseguono il rischio di dover fare una quantità enorme di lavoro in un attimo. Non c'è niente di scalabile in questo.
Un po 'più confidenziale
Passiamo alla riservatezza. In Corda, i nodi vedono solo alcune delle transazioni di una rete, il che significa innegabilmente una migliore privacy rispetto alle blockchain convenzionali. Tuttavia, Corda è ben lungi dal risolvere il problema della riservatezza, perché i nodi vedono ancora alcune transazioni che non sono affari loro. Per fare un semplice esempio, se Alice paga Bob $ 10, quindi Bob invia quei $ 10 a Charlie, al nodo di Charlie deve essere mostrata la transazione tra Alice e Bob, anche se non lo coinvolge. Nel momento in cui Alice ha pagato Bob, non aveva modo di sapere chi avrebbe potuto vedere questa transazione in futuro e chiunque avrebbe potuto riceverla in qualsiasi momento.
Per essere onesti, gli sviluppatori di Corda sono consapevoli di questo problema e lo discutono nel capitolo 15 del loro White paper tecnico. Il documento suggerisce strategie semplici come l'utilizzo di più chiavi pubbliche per entità o la riduzione della tracciabilità restituendo le risorse agli emittenti per la riemissione (simile ai "coin mixer" di criptovaluta). Menziona anche possibilità future più avanzate come l'utilizzo di reti di anonimizzazione simili a Tor per nascondere gli indirizzi IP dei partecipanti e sfruttare prove di conoscenza zero o Intel enclavi sicure per convalidare le transazioni senza rivelarne il contenuto. Sebbene tutti questi suggerimenti siano validi, possono anche essere applicati a blockchain regolari utilizzando il modello input-output, e in effetti sono stati in criptovalute come Dash, Zcash e Verge. Quindi l'unico vantaggio unico di Corda in termini di riservatezza rimane la sua ridotta visibilità delle transazioni - una soluzione incompleta nella migliore delle ipotesi.
Tutto nell'allevamento
Per comprendere meglio il vantaggio di scalabilità e riservatezza di Corda, dovremmo notare come ciò dipenda dalla densità e dalla sovrapposizione delle relazioni tra le transazioni. Immagina un “albero genealogico” delle transazioni effettuate in una rete, in cui i genitori di ogni transazione sono i precedenti da cui dipende immediatamente. In particolare, quando l'output di una transazione viene consumato dall'input di un'altra, disegniamo una freccia che rappresenta la relazione da genitore a figlio. Le transazioni possono avere un numero qualsiasi di genitori e figli, anche se nella maggior parte dei casi ce ne aspetteremmo solo pochi.
Dato questo albero genealogico, definiamo gli antenati di una transazione come i suoi genitori, nonni, bisnonni e così via. Gli "Adamo ed Eva" del nostro albero sono le transazioni di emissione che hanno creato risorse e non hanno genitori propri. Come nei normali alberi genealogici, due transazioni non possono essere antenate l'una dell'altra. In termini informatici formali, questo è un file grafico aciclico diretto o DAG, in cui l'ascendenza è definita come la chiusura transitiva della relazione genitore.
Ricorda che quando un nodo Corda elabora una transazione, deve scaricare e verificare tutti gli antenati di quella transazione, a parte quelli che ha visto prima. Quindi, se l'albero genealogico è profondo, le nuove transazioni in entrata potrebbero avere un gran numero di antenati che devono essere verificati, innescando il problema di scalabilità di Corda. Inoltre, se l'albero genealogico contiene un alto grado di incroci, gli antenati di una nuova transazione potrebbero includere molte o la maggior parte delle transazioni passate nella rete. In questo caso, Corda fornirà pochi vantaggi in termini di privacy.
Al contrario, se l'albero genealogico delle transazioni è superficiale e contiene molte isole disconnesse che non interagiscono tra loro, i vantaggi di Corda vengono alla ribalta. I nodi non avranno mai bisogno di verificare un gran numero di transazioni contemporaneamente e possono essere tenuti all'oscuro della maggior parte delle transazioni che non sono correlate alla propria. Se usato come libro mastro finanziario, potremmo dire che Corda è l'ideale per mercati altamente frammentati i cui asset cambiano raramente di mano.
Interoperabilità per la vittoria
Ecco un'area in cui Corda brilla davvero. Immagina due reti Corda separate, con diversi set di risorse e partecipanti. Ad un certo punto un partecipante a una rete desidera inviare una risorsa a qualcuno nell'altra. A differenza dei blockchain convenzionali, non ci si aspetta che un nodo abbia verificato tutte le transazioni passate, quindi il nodo che riceve questa nuova risorsa non sperimenterà nulla di insolito. Quando la transazione arriva, richiede e verifica semplicemente la cronologia rilevante, senza la consapevolezza che questa provenga da una "rete separata". Per estendere un cliché, potremmo dire che non ci sono estranei a Corda, solo amici che non si sono ancora incontrati.
In realtà, le cose non sono così semplici. Qualsiasi nodo Corda decide esplicitamente di quali notai fidarsi, dal momento che un notaio che si comporta male può causare caos finanziario. Inoltre, i nodi necessitano di un "certificato" concesso da un "portiere" per connettersi ad altri nodi in una rete, poiché non possiamo consentire a membri casuali del pubblico di iniziare a connettersi ai nodi e sprecare le proprie risorse. Quindi, prima che un nodo su una rete possa iniziare a richiedere e verificare transazioni da un'altra rete, dovrà aggiungerlo al suo elenco di notai di fiducia e ottenere il certificato appropriato. Sebbene ciò implichi alcune operazioni di configurazione e amministrazione manuali, è il minimo che ci si può aspettare da un sistema di questa natura. Nel complesso, è giusto concludere che l'interoperabilità è la grande vittoria di Corda sui blockchain convenzionali.
Reintermediazione
È ora di parlare di disintermediazione, l'elefante nella stanza di Corda. Nel contesto delle blockchain, la disintermediazione significa che ogni partecipante può verificare da solo ogni transazione, senza dipendere dal buon comportamento di terze parti. Nel la mia opinione, la disintermediazione è il vantaggio principale delle blockchain rispetto ai database centralizzati, in cui tutti i partecipanti dipendono completamente dal proprietario del database. Se i partecipanti a una rete hanno un intermediario su cui possono fare affidamento e non esiste un caso commerciale o normativo per la disintermediazione, allora non c'è nessun punto nell'uso di una blockchain. I database centralizzati sono più veloci ed efficienti ed evitano il problema della riservatezza delle transazioni.
Quindi i partecipanti a una rete Corda ottengono la disintermediazione? Ebbene sì, sì e sì ma no. Per la consegna della transazione, Corda spunta la casella, poiché i nodi coinvolti in una transazione parlano direttamente tra loro. In termini di correttezza e autorizzazione, è anche in buone condizioni, poiché ogni nodo è in grado di controllare queste proprietà da solo. Tuttavia, quando si tratta di verificare l'unicità delle transazioni, Corda non supera il test di disintermediazione. I nodi non possono confermare l'unicità per se stessi, poiché non vedono tutte le transazioni nella rete e l'attività è affidata a notai di fiducia.
I partecipanti a Corda sono alla mercé dei notai in molti modi. In primo luogo, un notaio può rifiutarsi di firmare una transazione, anche se i suoi input consumano output che non sono mai stati utilizzati prima. In un libro mastro finanziario, ciò impedisce a qualcuno di inviare o scambiare i propri beni. In secondo luogo, un notaio potrebbe firmare due transazioni in conflitto che consumano la stessa produzione, inducendo due parti a credere di aver ricevuto la stessa cosa. Poiché entrambi i destinatari dell'asset duplicato lo inviano o lo scambiano in ulteriori transazioni, il contagio si diffonde e l'integrità dell'intero libro mastro potrebbe presto essere compromessa. Infine, un notaio può rifiutarsi di firmare una transazione di "modifica notaio" per trasferire uno stato a un concorrente, tenendo effettivamente in ostaggio il proprietario del bene. Per una transazione che coinvolge stati con notai diversi, è lontano da dire che Corda introduce più intermediazione di un database centralizzato, perché diverse terze parti hanno il controllo.
Per mettere questo rischio in prospettiva, vale la pena ricordare che i notai Corda non devono essere controllati da una singola organizzazione. Possono anche essere costituiti da un gruppo di nodi che eseguono un algoritmo di consenso in grado di tollerare i cattivi attori. In questo caso, un notaio funzionerà bene fintanto che la maggior parte dei suoi nodi membri segue le regole. In superficie, questo suona piuttosto come una blockchain, che dipende dal buon comportamento della maggioranza dei validatori. Tuttavia a Corda i rischi sono significativamente più alti. Il peggio che una cabala di validatori blockchain può fare è impedire che alcune transazioni vengano confermate. Un notaio Corda malizioso può anche firmare transazioni in conflitto, mandando il libro mastro in un abisso incoerente.
Uno strano animale
Mettendo insieme scalabilità, riservatezza, interoperabilità e disintermediazione, è difficile raggiungere un semplice verdetto sull'alternativa Corda. Nel complesso, dal punto di vista di questo sviluppatore della piattaforma blockchain, sembra, beh ... avvincente ma strano. Progettate per risolvere i problemi chiave della scalabilità e della riservatezza, le soluzioni di Corda sono incomplete e dipendono in gran parte dalla forma dell '"albero genealogico" della transazione. Tuttavia, per ottenere queste vittorie parziali, Corda perde una proprietà fondamentale delle blockchain: la rimozione degli intermediari di transazione. Mentre Corda eccelle indubbiamente in termini di interoperabilità, è davvero sufficiente?
Se volessimo essere scettici, potremmo dire che al team di Corda è stato assegnato un compito impossibile: progettare un tipo di blockchain che si adattasse alle banche che finanziano R3. Ma il vantaggio principale delle blockchain rispetto ai database centralizzati è la disintermediazione, che ha il prezzo di una ridotta riservatezza. Come potrebbe avere senso questo compromesso per le istituzioni finanziarie che guadagnano denaro agendo come intermediari e sono molto sensibili alla privacy? Visto in questa luce, si potrebbe elogiare Corda come un compromesso eroico ma in definitiva insoddisfacente tra il desiderio dei membri di R3 di fare qualcosa di blockchainy e i vincoli commerciali e normativi in base ai quali esistono.
Custode 2.0
Ma preferisco adottare un approccio più positivo. Invece di concentrarci sul confronto con le blockchain, possiamo vedere Corda come un importante aggiornamento tecnico allo status quo finanziario. Basta sostituire la parola "notaio" con "custode", e tutto va a posto in modo piuttosto ordinato. (UN custode è un istituto finanziario che detiene beni per conto di altri.) Sì, i notai sono intermediari, che possono sia bloccare le transazioni che consentire il verificarsi di conflitti, ma questo vale anche per i custodi di oggi. Una "operazione di cambio notaio" può essere vista come il trasferimento di beni da un depositario a un altro. E le transazioni Corda sono firmate da un solo notaio per lo stesso motivo per cui ci piace che gli scambi di beni avvengano in un unico luogo: per evitare che entrambe le parti siano senza soldi.
Guardando Corda in questo modo, possiamo vedere come migliora il modello di custodia tradizionale:
- Definisce un paradigma computazionale standard e un formato per esprimere attività finanziarie e altri impegni contrattuali.
- Fornisce software open source per l'interpretazione e l'esecuzione di questi impegni, garantendo che le parti contraenti e i depositari concordino sull'esito di ogni transazione.
- È possibile creare complessi custodi multipartitici che proteggono dagli abusi (utilizzando solo software!) Sfruttando algoritmi di consenso a tolleranza di errore.
- Viene definita una procedura standard ("modifica del notaio") per il trasferimento di beni tra custodi e nessun custode può rifiutarlo.
- I depositari non possono utilizzare un bene sotto la loro custodia senza il consenso del proprietario, poiché le transazioni devono essere firmate anche dai proprietari dei loro input.
Sono ben lungi dall'essere un banchiere, ma a me sembra tutto piuttosto promettente. E forse Corda potrebbe essere applicato altrettanto bene ad altri settori con complesse strutture di custodia, come assicurazioni o spedizioni. Mentre il design di Corda potrebbe non fornire la completa disintermediazione di una blockchain, propone una potente trasformazione per le industrie in cui gli intermediari svolgono un ruolo essenziale.
Una volta che seguiamo questa linea di pensiero, sorge inevitabilmente una domanda: se stiamo già affidando ai notai il compito della vita o della morte di verificare l'unicità, perché non fare affidamento su di loro anche per la correttezza e l'autorizzazione? Corda ha già la nozione di "notaio convalidante", che verifica completamente le transazioni prima di aggiungere la propria firma. Invece dei normali nodi Corda che scaricano e controllano gli antenati delle loro transazioni, perché non chiedere a un notaio? Ciò potrebbe aiutare con la scalabilità e la riservatezza, poiché la maggior parte dei nodi non vedrebbe transazioni diverse dalla propria. Potremmo anche suggerire che i notai di una rete si fidino completamente l'uno dell'altro, quindi non c'è bisogno di preoccuparsi degli antenati. Il notaio di ogni Stato poteva garantirne la validità, verificando con l'aiuto di altri notai solo la transazione che l'ha creato.
Lascia che Corda sia Corda
Tutto ciò ci riporta al punto di partenza: Corda non è davvero un concorrente per blockchain convenzionali, MultiChain incluso. Corda è Corda, un nuovo interessante tipo di registro distribuito, ottimizzato per le esigenze di coloro che lo finanziano. Non ho idea se Corda alla fine riuscirà o fallirà, perché non conosco i suoi costi e benefici nel mondo reale rispetto al modo attuale di fare le cose. Ma qualunque cosa accada in futuro, vale sicuramente la pena studiarla in termini di filosofia e design.
Per quanto riguarda MultiChain, stiamo adottando un approccio diverso. Per rubare una linea da The West Wing, siamo determinati a "lasciare che la blockchain sia blockchain". Le blockchain sono quello che sono e non abbiamo intenzione di trasformarle in qualcosa di diverso. In quanto infrastruttura di dati per un'applicazione condivisa, una blockchain rappresenta un compromesso specifico rispetto a un database centralizzato: un guadagno nella disintermediazione a costo di una ridotta riservatezza. E stiamo lavorando duramente per rendere MultiChain 2.0 il migliore possibile blockchain piattaforma utilizzabile dagli sviluppatori di applicazioni.
Si prega di inviare eventuali commenti LinkedIn.
Fonte: https://www.multichain.com/blog/2018/05/r3-corda-deep-dive-and-technical-review/
- Il mio account
- Acronimi
- attivo
- aggiuntivo
- Vantaggio
- algoritmo
- Algoritmi
- Applicazioni
- applicazioni
- architettura
- RISERVATA
- articolo
- attività
- Attività
- pubblico
- autorizzazione
- Banca
- banca di Cina
- Settore bancario
- Banche
- MIGLIORE
- Conto
- blockchain
- Scatola
- Costruzione
- impacchettare
- affari
- casi
- Causare
- ceo
- a livello internazionale
- certificato
- il cambiamento
- canali
- verifica
- Controlli
- bambino
- Bambini
- Cina
- Citi
- chiusura
- Commenti
- Uncommon
- azienda
- concorrenza
- concorrenti
- Informatica
- computer
- conflitto
- Consenso
- consenso
- consumare
- contenuto
- testuali
- contratti
- Corda
- Costi
- Creazione
- crociera
- cryptocurrencies
- criptovaluta
- crittografia
- Corrente
- Custodia
- Clienti
- GIORNO
- Dash
- dati
- memorizzazione dei dati
- Banca Dati
- banche dati
- giorno
- affare
- ritardo
- consegna
- consegna
- Design
- Costruttori
- sviluppatori
- Mercato
- DID
- digitale
- Ledger distribuito
- Dollaro
- elefante
- Ingegneria
- Impresa
- Ethereum
- exchange
- Cambi Merce
- Esercitare
- tessuto
- fiera
- famiglia
- Moda
- Caratteristiche
- Infine
- finanziario
- Istituzioni finanziarie
- sottile
- Nome
- prima volta
- Focus
- formato
- pieno
- finanziamento
- fondi
- futuro
- Generale
- globali
- blockchain globale
- buono
- la governance
- grande
- Gruppo
- Crescita
- qui
- nascondere
- Alta
- Evidenziato
- storia
- Come
- HTTPS
- Enorme
- idea
- Identità
- Illegale
- Compreso
- industrie
- informazioni
- Infrastruttura
- Istituzione
- istituzioni
- assicurazione
- interazione
- interesse
- Interoperabilità
- coinvolto
- IP
- emissione
- sicurezza
- IT
- Java
- Lavoro
- join
- Le
- Tasti
- conoscenze
- grandi
- portare
- Leadership
- principale
- imparato
- Ledger
- Legale
- Livello
- leggera
- linea
- Liquido
- Lista
- Lunghi
- maggiore
- Maggioranza
- Fare
- Rappresentanza
- Mercati
- partita
- incontri
- Utenti
- menziona
- milione
- modello
- soldi
- cambiano
- multicatena
- Rete
- internazionale
- reti
- nodi
- Nozione
- aprire
- open source
- minimo
- ordini
- Altro
- Altri
- proprietario
- proprietari
- Dolore
- Carta
- paradigma
- genitori
- Paga le
- Pagamento
- pagamenti
- Persone
- performance
- prospettiva
- filosofia
- immagine
- piattaforma
- Piattaforme
- Popolare
- presenti
- prezzo
- Privacy
- un bagno
- Prodotto
- Produzione
- prova
- proprietà
- protegge
- la percezione
- R3
- lettori
- Lettura
- Realtà
- ricapitolare
- record
- Regolamento
- Relazioni
- sollievo
- Requisiti
- Risorse
- pensionamento
- recensioni
- Rischio
- norme
- Correre
- running
- Scalabilità
- Scienze
- MARE
- vede
- senso
- set
- condiviso
- Spedizione
- Corti
- Segni
- Un'espansione
- piccole
- So
- Software
- Soluzioni
- RISOLVERE
- velocità
- Spendere
- diffondere
- palo
- inizia a
- iniziato
- Regione / Stato
- stati
- Stato dei servizi
- conservazione
- Tornare al suo account
- negozi
- supporti
- superficie
- sistema
- Consulenza
- test
- Il futuro
- Pensiero
- terzi
- tempo
- tolleranza
- Tracciabilità
- delle transazioni
- Le transazioni
- Trasformazione
- Trasparenza
- trasporto
- Affidati ad
- senza hash
- us
- USD
- utenti
- limite
- Convalida
- Visualizza
- virtuale
- macchina virtuale
- visibilità
- Voto
- aspettare
- ovest
- OMS
- wikipedia
- vincere
- Lavora
- mondo
- valore
- scrittura
- anni
- Zcash
- zero