O privire detaliată asupra blockchain-ului non-blockchain
Pe măsură ce trece timpul, lumea blockchain s-a separat în două părți distincte. Pe de o parte, blockchain-urile publice cu criptomonedele asociate s-au bucurat de o revenire recentă remarcabilă, creând mulți multimilionari. Pe de altă parte, utilizarea blockchain-urilor autorizate sau de întreprindere a crescut liniștit, dar constant, observând primele lor implementări live în mai multe industrii în cursul anului 2017.
O întrebare interesantă de luat în considerare este nivelul adecvat de similitudine dintre aceste două tipuri de lanț. Ambele implementează o bază de date partajată folosind rețele peer-to-peer, criptografie cu chei public-private, reguli de tranzacție și mecanisme de consens care pot supraviețui actorilor rău intenționați. Este o mare parte de comun. Cu toate acestea, blockchain-urile publice și private au cerințe diferite în ceea ce privește confidențialitatea, scalabilitatea și guvernanța. Poate că aceste diferențe indică necesitatea unor modele radical divergente.
Corda platformă, dezvoltată de R3 consorțiul bancar, adoptă o poziție clară cu privire la această problemă. În timp ce unele aspecte au fost inspirate de blockchain-urile publice, Corda a fost proiectat de la zero pe baza nevoilor membrilor R3. Într-adevăr, deși R3 încă folosește cuvântul „blockchain” extensiv pentru a ajuta la comercializarea produsului lor, Corda nu are deloc un lanț de blocuri. Mai mult decât orice altă platformă de „registru distribuit” pe care o cunosc, Corda se îndepărtează radical de arhitectura blockchain-urilor convenționale.
Scopul meu în această piesă este să explic aceste diferențe și să discut implicațiile lor, în bine și în rău. De fapt, bine și rău este modul greșit de a spune, pentru că întrebarea mai interesantă este „Bine și rău pentru ce?” Acest articol este departe de a fi scurt. Dar până la sfârșit, sper că cititorii vor înțelege diferențele dintre Corda și compromisurile lor ulterioare. Corda este importantă deoarece deciziile sale de proiectare aduc în evidență multe dintre dilemele blockchain-urilor întreprinderilor.
Un ultim lucru înainte să ne aruncăm. Ca CEO al companiei din spate multicatenari, o platformă blockchain populară pentru întreprinderi, de ce scriu atât de profund despre un produs presupus concurent? Motivul standard ar fi să argumentez superioritatea MultiChain, dar nu aceasta este motivația mea aici. De fapt, nu văd Corda și MultiChain drept concurenți, pentru că sunt fundamental diferite în ceea ce privește designul, arhitectura și publicul. Corda și MultiChain concurează în același mod ca navele de croazieră și schiurile cu jet - în timp ce ambele transportă oameni pe mare, aproape că nu există situații reale în care ambele ar putea fi folosite.
Pe o notă mai personală, am învățat multe de la conducerea tehnică a lui Corda în ultimii ani, fie prin întâlniri, corespondență sau scrierile lor publice, multe dintre acestea având loc înainte de a se alătura R3. O parte din interesul meu pentru Corda provine din respectul pe care îl am pentru această echipă și, numai din acest motiv, Corda merită studiat pentru oricine dorește să înțeleagă domeniul registrului contabil distribuit.
Introducerea blockchain-urilor
Pentru a înțelege Corda, este util să începeți cu blockchain-urile convenționale. Scopul unui blockchain este acela de a permite ca o bază de date sau un registru să fie partajată direct și în siguranță de către părțile care nu au încredere. Acest lucru contrastează cu bazele de date centralizate, care sunt stocate și controlate de o singură organizație. Un blockchain are mai multe „noduri”, fiecare dintre ele stochează o copie a bazei de date și poate aparține unei organizații diferite. Nodurile se conectează între ele într-un mod dens peer-to-peer, folosind un „protocol de bârfă” în care fiecare nod le spune constant colegilor tot ce învață. Ca rezultat, orice nod poate difuza rapid un mesaj către întreaga rețea prin multe căi alternative.
O bază de date, fie că este centralizată sau alimentată de blockchain, începe într-o stare goală și este actualizată prin „tranzacții”. O tranzacție este definită ca un set de modificări ale bazei de date care sunt „atomice”, adică reușesc sau eșuează în ansamblu. Imaginați-vă o bază de date reprezentând un registru financiar, cu un rând pe cont. O tranzacție în care Alice îi plătește 10 USD lui Bob are trei pași: (1) verificați dacă contul lui Alice conține cel puțin 10 USD, (2) scadeți 10 USD din contul lui Alice și (3) adăugați 10 USD în contul lui Bob. Ca o cerință de bază, orice platformă de bază de date trebuie să se asigure că nicio tranzacție nu interferează cu alta. Această „izolare” se realizează prin blocarea rândurilor atât pentru Alice, cât și pentru Bob, în timp ce plata este în curs. Orice altă tranzacție care implică aceste rânduri trebuie să aștepte până când aceasta este finalizată.
Într-un blockchain, fiecare nod procesează în mod independent fiecare tranzacție pe propria copie a bazei de date. Tranzacțiile sunt create oriunde în rețea și propagate automat către toate celelalte noduri. Deoarece organizațiile care rulează noduri pot avea interese diferite (sau chiar conflictuale), nu pot avea încredere una în alta pentru a tranzacționa corect. Prin urmare, blockchain-urile au nevoie de reguli care să definească dacă o anumită tranzacție este sau nu validă. Într-un registru financiar partajat, aceste reguli îi împiedică pe utilizatori să-și cheltuiască banii reciproc sau să evoce fonduri din aer.
Alături de regulile care determină valabilitatea tranzacțiilor, blockchain-urile trebuie să definească și modul în care vor fi comandate tranzacțiile, deoarece în multe cazuri această ordonare este critică. Dacă Alice are 15 USD și încearcă să trimită 10 USD atât lui Bob, cât și lui Charlie în două tranzacții separate, doar una dintre aceste plăți poate reuși. Deși am putea spune că prima tranzacție are prioritate, o rețea peer-to-peer nu are o definiție obiectivă a „primului”, deoarece mesajele pot ajunge la noduri diferite în ordine diferite.
Reguli de tranzacție
Într-un sens general, informațiile din orice bază de date sunt separate în înregistrări sau „rânduri”, iar o tranzacție poate face trei lucruri diferite: ștergerea rândurilor, crearea rândurilor și/sau modificarea rândurilor. Acestea pot fi reduse în continuare la două, deoarece modificarea unui rând echivalează cu ștergerea acelui rând și crearea unuia nou în locul său. Pentru a reveni la plata lui Alice către Bob, rândul ei care conține 15 USD este șters și sunt create două rânduri noi – unul care conține 10 USD pentru Bob și celălalt cu 5 USD în „modificare” pentru Alice.
Urmând terminologia bitcoin și Corda, notăm rândurile șterse de o tranzacție drept „intrari” și pe cele create ca „ieșiri”. Orice rând șters de o tranzacție trebuie să fi fost creat de o tranzacție anterioară. Prin urmare, fiecare intrare de tranzacție consumă (sau „cheltuiește”) rezultatul unei tranzacții anterioare. Conținutul actualizat al bazei de date este definit de setul de „ieșiri ale tranzacțiilor necheltuite” sau „UTXO”.
Într-un blockchain, o tranzacție este valabilă dacă îndeplinește următoarele trei condiții:
- Corectitudine. Tranzacția trebuie să reprezinte o transformare legitimă de la intrări la ieșiri. De exemplu, într-un registru financiar, cantitatea totală de fonduri din intrări trebuie să se potrivească cu totalul din ieșiri, pentru a preveni ca banii să apară sau să dispară în mod magic. Singurele excepții sunt tranzacțiile speciale de „emitere” sau „retragere”, în care fondurile sunt adăugate sau eliminate în mod explicit.
- Autorizare. Tranzacția trebuie să fie autorizată de proprietarul fiecărei ieșiri consumate de intrările sale. Într-un registru financiar, acest lucru împiedică participanții să-și cheltuiască banii reciproc fără permisiune. Autorizarea tranzacțiilor este gestionată folosind criptografia asimetrică (sau cheie publică-privată). Fiecare rând are un proprietar, identificat printr-o cheie publică, a cărui cheie privată corespunzătoare este ținută secretă. Pentru a fi autorizată, o tranzacție trebuie să fie semnată digital de proprietarul fiecăreia dintre intrările sale. (Rețineți că rândurile pot avea, de asemenea, proprietari de „multisemnătură” mai complexi, de exemplu, în cazul în care două din trei părți pot autoriza utilizarea acestora.)
- unicitatea. Dacă o tranzacție consumă o anumită ieșire, atunci nicio altă tranzacție nu poate consuma acea ieșire din nou. Acesta este modul în care o împiedicăm pe Alice să facă plăți contradictorii atât către Bob, cât și către Charlie. În timp ce tranzacțiile pentru ambele plăți ar putea fi corecte și autorizate, regula unicității asigură că numai una va fi procesată de baza de date.
Într-un blockchain convențional, fiecare nod verifică fiecare tranzacție în conformitate cu aceste trei reguli. Mai târziu, vom vedea cum Corda împarte această responsabilitate în mod diferit.
Blocuri de construcție
Un blockchain este literalmente un lanț de blocuri, în care fiecare bloc se leagă de cel anterior printr-un „hash” care identifică în mod unic conținutul său. Fiecare bloc conține un set ordonat de tranzacții care nu trebuie să intre în conflict între ele sau cu cele din blocurile anterioare, precum și un marcaj de timp și alte informații. La fel ca și tranzacțiile, blocurile se propagă rapid în rețea și sunt verificate independent de fiecare nod. Odată ce o tranzacție apare într-un bloc, aceasta este „confirmată”, conducând nodurile să respingă orice tranzacție aflată în conflict.
Cine este responsabil pentru crearea acestor blocuri și cum putem fi siguri că toate nodurile vor fi de acord asupra lanțului de autoritate? Această întrebare a „algoritmilor de consens” este un subiect uriaș în sine, plin de acronime minunate precum PoW (Proof of Work), PBFT (Practical Byzantine Fault Tolerance) și DPoS (Delegated Proof of Stake). Nu vom intra în toate astea aici. Este suficient să spunem că blockchain-urile autorizate pentru întreprinderi folosesc un fel de schemă de vot, în care voturile sunt acordate „nodurilor validatoare” care sunt responsabile colectiv. Schema asigură că, atâta timp cât o bună majoritate a nodurilor validatoare funcționează corect și onest, tranzacțiile vor intra în lanț într-o ordine (aproape) corectă, marcajele temporale vor fi (aproximativ) corecte și tranzacțiile confirmate nu pot fi inversate ulterior.
Înainte de a discuta unele dintre provocările blockchain-urilor, aș dori să clarific trei puncte suplimentare. În primul rând, în timp ce folosesc un registru financiar prin exemplu pe parcursul acestei piese, modelul de intrare-ieșire al tranzacțiilor acceptă o varietate mult mai largă de cazuri de utilizare. Fiecare rând poate conține un obiect de date bogat (gândiți-vă că JSON) care conține multe tipuri diferite de informații – într-adevăr, Corda folosește cuvântul „stare” mai degrabă decât „rând” din acest motiv. Statele mai bogate nu schimbă nimic fundamental în ceea ce privește regulile de tranzacție: corectitudinea este încă definită în termeni de intrări și ieșiri, autorizarea este încă necesară pentru fiecare intrare, iar unicitatea asigură că fiecare ieșire poate fi cheltuită o singură dată.
În al doilea rând, există multe cazuri de utilizare blockchain în care rândurile sunt create doar în baza de date și nu sunt niciodată șterse. Aceste aplicații se referă la stocarea generală a datelor, marcarea timpului și notarizarea, mai degrabă decât menținerea unui tip de registru care este în flux. În aceste aplicații numai pentru date, tranzacțiile adaugă date în ieșirile lor, dar nu consumă niciuna în intrările lor, permițând simplificarea regulilor de corectitudine, autorizare și unicitate. Deși cazurile de utilizare numai pentru date sunt un accent din ce în ce mai important al dezvoltării noastre la MultiChain, le menționez doar în trecere aici, deoarece Corda nu a fost în mod clar concepută având în vedere ele.
În cele din urmă, merită remarcat faptul că unele platforme blockchain nu utilizează un model de intrare-ieșire. Ethereum prezintă o paradigmă alternativă, în care lanțul controlează un computer virtual cu o stare globală care este gestionată prin „contracte”, iar tranzacțiile nu se conectează una la alta în mod explicit. O discuție despre modelul Ethereum în blockchain-urile autorizate este în afara domeniului nostru de aplicare aici, dar vedeți acest articol pentru o explicație și o critică detaliată. Un avantaj cheie al paradigmei input-output este că majoritatea tranzacțiilor pot fi procesate în paralel și independent unele de altele. Această proprietate este crucială pentru Corda, așa cum vom vedea mai târziu.
Provocări blockchain
Să ne imaginăm că băncile lumii au creat un registru partajat pentru a reprezenta proprietatea, transferul și schimbul unei varietăți de active financiare. În teorie, acest lucru ar putea fi implementat pe un blockchain obișnuit, așa cum este descris mai sus. Fiecare rând ar conține trei coloane – un identificator de bun, cum ar fi GOOG sau USD, cantitatea deținută și cheia publică a proprietarului. Fiecare tranzacție ar transfera unul sau mai multe active de la intrările sale la ieșirile sale, cu cazuri speciale pentru emitere și retragere.
Fiecare bancă din rețea ar rula unul sau mai multe noduri care se conectează la celelalte, propagă și verifică tranzacțiile. Membrii seniori ar acționa ca validatori, având responsabilitatea colectivă de a confirma, comanda și marca timpul tranzacțiilor. Orice comportament neadecvat al validatorului ar fi vizibil pentru toate nodurile din rețea, ducând la cenzură, alungare și/sau proceduri judiciare. Cu toate acestea, orice activ financiar ar putea fi mutat în întreaga lume în câteva secunde, regulile de corectitudine, autorizare și unicitate garantând integritatea registrului.
Ce e în neregulă cu această imagine? De fapt, există trei probleme: scalabilitate, confidențialitate și interoperabilitate. Problema scalabilității este destul de simplă. Blockchain-ul nostru interbancar propus ar cere fiecărui membru să verifice, să proceseze și să stocheze fiecare tranzacție efectuată de fiecare bancă din lume. Chiar dacă acest lucru ar fi fezabil din punct de vedere tehnic pentru cele mai mari instituții financiare, costul de calcul și stocare ar crea o barieră semnificativă pentru mulți. Cu siguranță am prefera un sistem în care participanții să vadă doar acele tranzacții în care sunt implicați imediat.
Dar să lăsăm scalabilitatea deoparte, deoarece poate fi rezolvată în cele din urmă folosind computere scumpe și o inginerie inteligentă. O problemă mai fundamentală este confidențialitatea. Deși ar putea părea utopic ca fiecare tranzacție să fie vizibilă peste tot, în lumea reală o astfel de transparență radicală este un neîncepător în ceea ce privește concurența și reglementarea. Dacă JP Morgan și HSBC schimbă o pereche de active, este puțin probabil să vrea ca Citi și Bank of China să vadă ce au făcut. Dacă tranzacția a fost efectuată în numele clienților acestor bănci, ar putea fi ilegal ca aceștia să o expună în acest fel.
O soluție propusă pentru problema confidențialității este „canalele”, așa cum sunt implementate în Hyperledger Fabric. Fiecare canal are anumiți membri, care sunt un subset al nodurilor din rețea ca întreg. Tranzacțiile unui canal sunt vizibile numai pentru membrii săi, astfel încât fiecare canal acționează efectiv ca un blockchain separat. Deși acest lucru ajută la confidențialitate, subminează, de asemenea, întregul scop al exercițiului. Activele nu pot fi mutate de la un canal la altul fără ajutorul unui intermediar de încredere care este activ pe ambele. Dificultatea acestei abordări a fost evidențiată recent de SWIFT dovada de concept de reconciliere, care a estimat că în producție ar fi nevoie de peste 100,000 de canale. Adică 100,000 de insule între care activele nu pot fi mutate direct.
În cazurile de utilizare numai a datelor, în care tranzacțiile nu consumă date în intrări, problema confidențialității poate fi ocolită prin criptarea sau hashingul datelor în ieșiri și prin livrarea cheii de decriptare sau a datelor netransformate în afara lanțului. Dar pentru o tranzacție ale cărei intrări consumă ieșirile altor tranzacții, fiecare nod trebuie să vadă acele intrări și ieșiri pentru a valida tranzacția. În timp ce tehnici criptografice avansate precum bunuri confidențiale și zero dovezi de cunoaștere au fost dezvoltate pentru a rezolva parțial sau complet această problemă pentru registrele financiare, acestea impun o sarcină semnificativă de performanță și/sau nu pot fi generalizate la nicio regulă de corectitudine.
În sfârșit, să vorbim despre interoperabilitate. Într-o lume ideală, fiecare bancă s-ar alătura imediat blockchain-ului nostru global în ziua lansării. În realitate, totuși, blockchain-urile multiple ar fi adoptate de diferite grupuri de bănci, în funcție de geografie sau de relații preexistente. De-a lungul timpului, un membru al unui grup ar putea dori să înceapă tranzacțiile cu un membru al altuia, prin transferul unui activ între lanțuri. La fel ca în cazul canalelor, acest lucru poate fi realizat doar cu ajutorul unui intermediar de încredere, înfrângând scopul blockchain-ului.
Corda își propune să rezolve aceste probleme interdependente de scalabilitate, confidențialitate și interoperabilitate printr-o regândire radicală a modului în care funcționează registrele distribuite.
Vederea parțială a lui Corda
Diferența fundamentală în Corda este ușor de explicat: fiecare nod vede doar câteva, mai degrabă decât toate, tranzacțiile procesate în rețea. În timp ce un singur registru logic și conceptual este definit de toate aceste tranzacții, niciun nod individual nu vede acel registru în întregime. Pentru a face o comparație, în orice moment, fiecare bancnotă de un dolar din lume se află într-un anumit loc, dar nimeni nu știe unde sunt toate.
Deci, ce tranzacții vede un nod Corda? În primul rând, cele în care este direct implicată, pentru că deține una dintre intrările sau ieșirile tranzacției respective. Într-un registru financiar, aceasta include fiecare tranzacție în care un nod trimite sau primește fonduri. Să presupunem că Alice creează o tranzacție care îi consumă 15 USD într-o intrare și are două ieșiri – una cu 10 USD pentru mine și cealaltă cu 5 USD în „schimbare” pentru ea. După ce Alice îmi trimite această tranzacție, o pot verifica pentru corectitudine și autorizare, verificând dacă intrările și ieșirile se echilibrează și că Alice a semnat.
Cu toate acestea, această tranzacție în sine nu este suficientă. De asemenea, trebuie să verific dacă starea de intrare de 15 USD a lui Alice există într-adevăr și ea nu a inventat-o doar. Asta înseamnă că trebuie să văd tranzacția care a creat această stare și să o verific și pentru corectitudine și autorizare. Dacă această tranzacție anterioară, care i-a trimis lui Alice 15 USD, are o intrare de 10 USD aparținând lui Denzel și o altă intrare de 5 USD de la Eric, atunci trebuie să verific și tranzacțiile care le-au creat. Și așa mai departe, până la tranzacția inițială de „emisiune” în care a fost creat activul. Numărul de tranzacții pe care trebuie să le verific va depinde de câte ori s-au schimbat activele și de gradul de ramificare inversă.
Deoarece nodurile Corda nu văd automat fiecare tranzacție, cum le obțin pe cele de care au nevoie? Răspunsul este de la expeditorul fiecărei tranzacții noi. Înainte ca Alice să creeze o tranzacție consumând 15 USD, trebuie să fi verificat deja tranzacția în care a primit-o. Și deoarece Alice trebuie să fi aplicat tehnica recursivă de mai sus, va avea o copie a fiecărei tranzacții necesare pentru această verificare. Bob pur și simplu solicită aceste tranzacții de la Alice ca parte a interacțiunii lor. Dacă Alice nu răspunde corespunzător, Bob ajunge la concluzia că Alice încearcă să-l păcălească și respinge plata primită. În cazul în care lui Bob i se trimite o nouă tranzacție ale cărei intrări au mai mulți proprietari, el poate obține dovezile necesare de la fiecare.
Prezentarea notarilor
Până acum am explicat modul în care Bob poate verifica corectitudinea și autorizarea unei tranzacții primite, inclusiv retracând recursiv originile intrărilor sale. Dar mai există o regulă la care trebuie să ne gândim: unicitatea. Să spunem că Alice este rău intenționată. Ea poate genera o tranzacție în care îi plătește 10 USD lui Bob și o alta în care îi plătește același 10 USD lui Charlie. Ea poate trimite aceste tranzacții lui Bob și, respectiv, Charlie, împreună cu o dovadă completă a corectitudinii și autorizarea fiecăruia. În timp ce ambele tranzacții sunt în conflict între ele, consumând aceeași stare, Bob și Charlie nu au nicio cale să știe acest lucru.
Blockchain-urile convenționale rezolvă această problemă prin fiecare nod care vad fiecare tranzacție, făcând conflictele ușor de detectat și respins. Deci, cum abordează Corda, cu vizibilitatea sa parțială a tranzacțiilor, aceeași problemă? Răspunsul este cu ajutorul unui „notar”. Un notar este o parte de încredere (sau părți care lucrează împreună) care garantează că un anumit stat este consumat o singură dată. Fiecare stat are un notar anume, care trebuie să semneze orice tranzacție în care se consumă acel stat. Odată ce un notar a făcut acest lucru, nu trebuie să semneze o altă tranzacție pentru același stat. Notarii sunt gardienii rețelei ai unicității tranzacțiilor.
În timp ce fiecare stat poate avea un notar diferit, toate statele consumate de o anumită tranzacție trebuie să fie atribuite aceluiași. Acest lucru evită problemele legate de blocaje și sincronizare, care ar trebui să fie familiare celor cu experiență în bazele de date distribuite. Să presupunem că Alice și Bob sunt de acord să schimbe 10 dolari ai lui Alice cu 7 lire sterline ale lui Bob. Tranzacția pentru acest schimb trebuie să fie semnată de notarii ambelor state, dar care merge primul? Dacă notarul lui Alice semnează, dar cel al lui Bob eșuează dintr-un motiv oarecare, atunci Alice va rămâne cu o tranzacție incompletă și nu va mai putea folosi niciodată 10 dolari. Dacă Bob semnează mai întâi, atunci el este expus în mod similar. Deși ne-ar dori ca notarii să lucreze pur și simplu împreună, în practică acest lucru necesită încredere reciprocă și utilizarea unui protocol de consens, complicații pe care designerii Corda au ales să le evite.
Dacă sunt necesare state cu notari diferiți ca intrări pentru o singură tranzacție, proprietarii lor execută mai întâi tranzacții speciale de „schimbare notarală”, care mută un stat de la un notar la altul, fără a schimba nimic altceva. Deci, atunci când părțile construiesc o tranzacție cu mai multe intrări, ele trebuie mai întâi să convină asupra notarului care va fi utilizat și apoi să efectueze modificările notariale necesare. În timp ce dezvoltatorul din mine a simțit o mică durere când a citit despre această soluție, nu există niciun motiv pentru care nu va funcționa atâta timp cât notarii vor juca împreună.
De asemenea, trebuie clarificat faptul că, deși fiecare notar este un singur actor logic în ceea ce privește semnarea tranzacțiilor, nu trebuie să fie sub controlul unei singure părți. Un grup de organizații ar putea conduce un notar în mod colectiv, folosind un protocol de consens adecvat în care este nevoie de majoritatea participanților pentru a genera o semnătură validă. Acest lucru ar împiedica orice parte rău intenționată să submineze unicitatea prin semnarea tranzacțiilor în conflict. În teorie, am putea chiar permite fiecărui nod din rețea să participe la acest tip de notarizare partajată, deși în acest caz ne-am întoarce mai mult sau mai puțin la un blockchain convențional.
Luarea punctajului
Să recapitulăm diferențele cheie dintre Corda și blockchain-urile convenționale. În Corda, nu există un blockchain unificat care să conțină toate tranzacțiile confirmate. Nodurile văd doar acele tranzacții în care sunt direct implicați sau de care depind istoric. Nodurile sunt responsabile pentru verificarea corectitudinii și autorizarea tranzacțiilor, dar se bazează pe notarii de încredere pentru a verifica unicitatea.
Desigur, Corda este mult mai mult decât atât: utilizarea certificatelor digitale pentru autentificarea identității, „hărți de rețea” pentru a ajuta nodurile să se găsească și să aibă încredere unul în celălalt, „contracte” per stat care definesc corectitudinea din perspectiva fiecărui stat, un versiunea deterministă a mașinii virtuale Java care execută aceste contracte, „fluxuri” care automatizează negocierile tranzacțiilor, „ferestre de timp” care restricționează tranzacțiile în timp, „oracole” care atestă fapte externe și „CorDapps” care reunesc multe lucruri împreună pentru o distribuție ușoară . Deși fiecare dintre aceste caracteristici este interesantă, echivalente pentru toate pot fi găsite în alte platforme blockchain. Scopul meu în acest articol este să mă concentrez pe ceea ce face Corda unic.
Deci Corda își respectă promisiunea? Rezolvă problemele de scalabilitate, confidențialitate și interoperabilitate ale blockchain-urilor? Și când face alegerile sale speciale, cât de mult preț plătește Corda?
Mai scalabil, uneori
Să începem cu scalabilitatea. Aici, avantajul lui Corda pare clar, deoarece nodurile văd doar unele dintre tranzacțiile dintr-o rețea. Într-un blockchain obișnuit, debitul maxim este limitat de viteza celui mai lent nod în procesarea tranzacțiilor. În schimb, o rețea Corda ar putea procesa un milion de tranzacții pe secundă, în timp ce fiecare nod vede doar o mică parte din asta. Scalabilitatea se extinde și la notarii, deoarece sarcina de a semna tranzacții pentru unicitate poate fi răspândită între mulți notari diferiți, fiecare dintre care este responsabil pentru o mică parte din statele rețelei.
Acestea fiind spuse, există o situație în care Corda are performanțe mult mai slabe decât un blockchain. Acest lucru se întâmplă atunci când un nod primește o nouă tranzacție care depinde de multe alte tranzacții pe care nu le-a văzut înainte. Imaginați-vă un activ foarte lichid care a fost emis acum 10 ani și își schimbă mâinile la fiecare cinci minute. Calea de la orice tranzacție nouă până la emiterea acestui activ va fi de peste un milion de tranzacții. Când un nod primește acest activ pentru prima dată, trebuie să recupereze aceste milioane de tranzacții de la expeditor și să verifice fiecare pe rând. La o rată (destul de optimistă) de 1000 de tranzacții pe secundă, ar fi o întârziere de 17 minute înainte ca destinatarul să poată trimite activul - în mod clar prea lung pentru ceva atât de lichid.
De ce blockchain-urile nu suferă de această problemă? Deoarece nodurile văd și verifică fiecare tranzacție pe măsură ce are loc, actualizează constant starea registrului și știu exact cine deține fiecare activ în prezent. Chiar dacă un nod nu a deținut niciodată un anumit activ înainte, acesta poate verifica instantaneu tranzacția în care îl primește și apoi îl poate trimite imediat. Cu alte cuvinte, nodurile blockchain trebuie să verifice tranzacțiile care ar putea să nu fie relevante pentru ei, dar, procedând astfel, plătesc în avans costul verificării oricărei tranzacții viitoare care ar putea veni. În timp ce nodurile Corda sunt mai puțin ocupate în general, ele rulează riscul de a fi nevoit să facă o cantitate imensă de muncă la un moment dat. Nu este nimic scalabil în asta.
Ceva mai confidențial
Să trecem la confidențialitate. În Corda, nodurile văd doar unele dintre tranzacțiile unei rețele, ceea ce înseamnă fără îndoială o confidențialitate mai bună decât blockchain-urile convenționale. Cu toate acestea, Corda este departe de a rezolva problema confidențialității, deoarece nodurile încă văd unele tranzacții care nu sunt de treaba lor. Pentru a lua un exemplu simplu, dacă Alice îi plătește lui Bob 10 dolari, atunci Bob îi trimite acei 10 dolari lui Charlie, nodul lui Charlie trebuie să i se arate tranzacția dintre Alice și Bob, chiar dacă nu îl implică pe el. La momentul în care Alice l-a plătit pe Bob, nu avea de unde să știe cine ar putea vedea această tranzacție în viitor și oricine i-ar fi putut trimite oricând.
Pentru a fi corect, dezvoltatorii Corda sunt conștienți de această problemă și o discută în capitolul 15 din Cartea albă tehnică. Lucrarea sugerează strategii simple, cum ar fi utilizarea mai multor chei publice per entitate sau reducerea trasabilității prin returnarea activelor emitenților pentru reemitere (similar cu „mixoarele de monede”) criptomonede. Menționează, de asemenea, posibilități viitoare mai avansate, cum ar fi utilizarea rețelelor de anonimizare asemănătoare Tor pentru a ascunde adresele IP ale participanților și folosirea dovezilor de cunoștințe zero sau a Intel. enclave sigure pentru a valida tranzacțiile fără a dezvălui conținutul acestora. Deși toate aceste sugestii sunt valide, ele pot fi aplicate și la blockchain-urile obișnuite folosind modelul de intrare-ieșire și, într-adevăr, au fost în criptomonede precum Dash, Zcash și Verge. Deci, singurul avantaj unic al Corda în ceea ce privește confidențialitatea rămâne vizibilitatea redusă a tranzacțiilor – o soluție incompletă în cel mai bun caz.
Toate în reproducere
Pentru a înțelege mai bine avantajul de scalabilitate și confidențialitate al Corda, ar trebui să remarcăm cum acest lucru depinde de densitatea și suprapunerea relațiilor dintre tranzacții. Imaginați-vă un „arborele genealogic” al tranzacțiilor efectuate într-o rețea, în care părinții fiecărei tranzacții sunt cei anteriori de care depinde imediat. Mai exact, atunci când rezultatul unei tranzacții este consumat de intrarea altuia, desenăm o săgeată reprezentând relația de la părinte la copil. Tranzacțiile pot avea orice număr de părinți și copii, deși în cele mai multe cazuri ne-am aștepta doar la câțiva.
Având în vedere acest arbore genealogic, definim strămoșii unei tranzacții ca părinți, bunici, străbunici și așa mai departe. „Adam și Eva” din arborele nostru sunt tranzacțiile de emisiune care au creat active și nu au părinți ai lor. Ca și în arborele genealogic obișnuit, două tranzacții nu pot fi strămoși unul celuilalt. În termeni formali de informatică, aceasta este a direcționat grafic aciclic sau DAG, în care ascendența este definită ca închiderea tranzitivă a relației parentale.
Amintiți-vă că atunci când un nod Corda procesează o tranzacție, trebuie să descarce și să verifice toți strămoșii acelei tranzacții, în afară de cei pe care i-a văzut înainte. Deci, dacă arborele genealogic este profund, noile tranzacții primite pot avea un număr mare de strămoși care trebuie verificați, declanșând problema de scalabilitate a lui Corda. În plus, dacă arborele genealogic conține un grad ridicat de încrucișare, strămoșii unei noi tranzacții ar putea include multe sau majoritatea tranzacțiilor anterioare în rețea. În acest caz, Corda va oferi puțin avantaj în ceea ce privește confidențialitatea.
În schimb, dacă arborele genealogic al tranzacțiilor este puțin adânc și conține multe insule deconectate care nu interacționează între ele, avantajele lui Corda ies în prim-plan. Nodurile nu vor trebui niciodată să verifice un număr mare de tranzacții simultan și pot fi ținute la întuneric despre majoritatea tranzacțiilor care nu au legătură cu propriile tranzacții. Dacă este folosit ca registru financiar, am putea spune că Corda este ideal pentru piețele extrem de fragmentate ale căror active își schimbă rar mâinile.
Interoperabilitate pentru victorie
Iată un domeniu în care Corda strălucește cu adevărat. Imaginați-vă două rețele Corda separate, cu seturi diferite de active și participanți. La un moment dat, un participant dintr-o rețea dorește să trimită un activ cuiva din cealaltă. Spre deosebire de blockchain-urile convenționale, nu există așteptări ca un nod să fi verificat toate tranzacțiile anterioare, așa că nodul care primește acest nou activ nu va experimenta nimic neobișnuit. Când tranzacția vine, pur și simplu solicită și verifică istoricul relevant, fără a ști că acesta este dintr-o „rețea separată”. Pentru a întinde un clișeu, am putea spune că nu există străini în Corda - doar prieteni care nu s-au întâlnit încă.
În realitate, lucrurile nu sunt chiar atât de simple. Orice nod Corda decide în mod explicit în ce notarii să aibă încredere, deoarece un notar care se comportă greșit poate provoca haos financiar. În plus, nodurile au nevoie de un „certificat” acordat de un „doarman” pentru a se conecta la alte noduri dintr-o rețea, deoarece nu putem permite membrilor aleatoriu ai publicului să înceapă să se conecteze la noduri și să-și irosească resursele. Deci, înainte ca un nod dintr-o rețea să poată începe să solicite și să verifice tranzacții dintr-o altă rețea, va trebui să se adauge la lista sa de notarii de încredere și să obțină certificatul corespunzător. Deși acest lucru implică o anumită configurare și administrare manuală, este minimul la care se poate aștepta pentru un sistem de această natură. În general, este corect să concluzionam că interoperabilitatea este marele câștig al Corda față de blockchain-urile convenționale.
Reintermedierea
E timpul să vorbim despre dezintermediere, elefantul din camera lui Corda. În contextul blockchain-urilor, dezintermedierea înseamnă că fiecare participant poate verifica singur fiecare tranzacție, fără a depinde de comportamentul bun al terților. În punctul meu de vedere, dezintermedierea este avantajul principal al blockchain-urilor față de bazele de date centralizate, în care toți participanții depind pe deplin de proprietarul acelei baze de date. Dacă participanții la o rețea au un intermediar pe care se pot baza și nu există niciun caz comercial sau de reglementare pentru dezintermediere, atunci există nici un punct în utilizarea unui blockchain. Bazele de date centralizate sunt mai rapide și mai eficiente și evită problema confidențialității tranzacțiilor.
Deci, participanții la o rețea Corda reușesc dezintermedierea? Ei bine, da, da și da, dar nu. Pentru livrarea tranzacțiilor, Corda bifează căsuța, deoarece nodurile implicate într-o tranzacție vorbesc direct între ele. În ceea ce privește corectitudinea și autorizarea, este, de asemenea, într-o formă bună, deoarece fiecare nod este capabil să verifice singur aceste proprietăți. Cu toate acestea, când vine vorba de verificarea unicității tranzacției, Corda eșuează testul de dezintermediere. Nodurile nu pot confirma unicitatea pentru ei înșiși, deoarece nu văd fiecare tranzacție din rețea, iar sarcina este externalizată către notari de încredere.
Participanții Corda sunt la cheremul notarilor în mai multe moduri. În primul rând, un notar poate refuza să semneze o tranzacție, chiar dacă intrările sale consumă ieșiri care nu au fost niciodată folosite înainte. Într-un registru financiar, acest lucru împiedică pe cineva să-și trimită sau să-și schimbe activele. În al doilea rând, un notar ar putea semna două tranzacții conflictuale care consumă aceeași producție, ceea ce face ca două părți să creadă că au primit același lucru. Pe măsură ce ambii destinatari ai activului duplicat îl trimit sau îl schimbă în tranzacții ulterioare, contagiunea se răspândește, iar integritatea întregului registru ar putea fi în curând subminată. În cele din urmă, un notar poate refuza să semneze o tranzacție de „schimbare a notarului” pentru a transfera un stat unui concurent, ținând efectiv ostatic proprietarul bunului. Pentru o tranzacție care implică state cu notari diferiți, este departe de a spune că introduce Corda mai multă intermediere decât o bază de date centralizată, deoarece mai mulți terți dețin controlul.
Pentru a pune acest risc în perspectivă, merită să reamintim că notarii Corda nu trebuie să fie controlați de o singură organizație. Ele pot consta, de asemenea, dintr-un grup de noduri care rulează un algoritm de consens care poate tolera actori răi. În acest caz, un notar va funcționa bine atâta timp cât majoritatea nodurilor sale membre respectă regulile. La suprafață, acest lucru sună mai degrabă ca un blockchain, care depinde de comportamentul corect al majorității validatorilor. Cu toate acestea, în Corda riscurile sunt semnificativ mai mari. Cel mai rău lucru pe care îl poate face o cabală de validatori blockchain este să împiedice confirmarea unor tranzacții. Un notar Corda rău intenționat poate semna și tranzacții conflictuale, trimițând registrul într-un abis inconsecvent.
Un animal ciudat
Punând laolaltă scalabilitatea, confidențialitatea, interoperabilitatea și dezintermedierea, este greu să ajungeți la un verdict simplu asupra alternativei Corda. În general, din perspectiva acestui dezvoltator de platformă blockchain, pare, ei bine... convingător, dar ciudat. Conceput pentru a rezolva problemele cheie de scalabilitate și confidențialitate, soluțiile Corda sunt incomplete și depind în mare măsură de forma „arborele genealogic” a tranzacției. Cu toate acestea, pentru a obține aceste victorii parțiale, Corda pierde o proprietate de bază a blockchain-urilor - eliminarea intermediarilor tranzacțiilor. În timp ce Corda excelează, fără îndoială, la interoperabilitate, este cu adevărat suficient?
Dacă dorim să fim sceptici, am putea spune că echipei lui Corda i s-a pus o sarcină imposibilă – să creeze o aromă de blockchain care să se potrivească băncilor care finanțează R3. Dar avantajul cheie al blockchain-urilor față de bazele de date centralizate este dezintermedierea, care vine cu prețul confidențialității reduse. Cum ar putea avea sens acest compromis pentru instituțiile financiare care câștigă bani acționând ca intermediari și sunt foarte sensibile la confidențialitate? Privit în această lumină, s-ar putea elogia Corda ca fiind un compromis eroic, dar în cele din urmă nesatisfăcător, între dorința membrilor R3 de a face ceva blockchainy și constrângerile comerciale și de reglementare sub care există.
Custodele 2.0
Dar prefer să adopt o abordare mai pozitivă. În loc să ne concentrăm pe comparația cu blockchain-urile, putem vedea Corda ca pe o actualizare tehnică majoră a status quo-ului financiar. Pur și simplu înlocuiți cuvântul „notar” cu „custode” și totul se încadrează destul de bine. (A custode este o instituție financiară care deține active în numele altora.) Da, notarii sunt intermediari, care pot atât să blocheze tranzacțiile, cât și să permită să apară conflicte, dar acest lucru este valabil și pentru custozii de astăzi. O „tranzacție de schimbare a notarului” poate fi văzută ca un transfer de active de la un custode la altul. Iar tranzacțiile Corda sunt semnate de un singur notar din același motiv pentru care ne place ca schimburile de active să aibă loc într-un singur loc – pentru a preveni ca oricare dintre părți să iasă din buzunar.
Privind la Corda în acest fel, putem vedea cum se îmbunătățește modelul tradițional de custodie:
- Acesta definește o paradigmă și un format de calcul standard pentru exprimarea activelor financiare și a altor angajamente contractuale.
- Furnizează software open source pentru interpretarea și executarea acestor angajamente, garantând că părțile care fac tranzacții și custozii sunt de acord asupra rezultatului fiecărei tranzacții.
- Pot fi creați custozi multipartiți complexi care protejează împotriva abuzului (numai folosind software-ul!) Utilizând algoritmi de consens toleranți la erori.
- Un proces standard („schimbarea notarului”) este definit pentru transferul de active între custode și niciun custode nu are voie să refuze.
- Depozitorii nu pot folosi un activ aflat în custodia lor fără acordul proprietarului, deoarece tranzacțiile trebuie să fie semnate și de proprietarii intrărilor lor.
Sunt departe de a fi bancher, dar pentru mine totul sună destul de promițător. Și poate că Corda ar putea fi la fel de bine aplicată și altor industrii cu structuri complexe de custodie, cum ar fi asigurările sau transporturile maritime. Deși este posibil ca designul lui Corda să nu ofere dezintermedierea completă a unui blockchain, acesta propune o transformare puternică pentru industriile în care intermediarii joacă un rol esențial.
Odată ce trecem pe această linie de gândire, apare inevitabil o întrebare: dacă avem deja încredere notarilor cu treaba pe viață și pe moarte de a verifica unicitatea, de ce să nu ne bazăm și pe ei pentru corectitudine și autorizare? Corda are deja noțiunea de „notar validator”, care verifică în totalitate tranzacțiile înainte de a-și adăuga semnătura. În loc ca nodurile Corda obișnuite să descarce și să verifice strămoșii tranzacțiilor lor, de ce să nu întrebați un notar? Acest lucru ar putea ajuta la scalabilitate și confidențialitate, deoarece majoritatea nodurilor nu ar vedea alte tranzacții decât ale lor. Am putea chiar sugera că notarii unei rețele au încredere deplină unul în celălalt, așa că nu este nevoie să vă faceți griji cu privire la strămoși. Notarul fiecărui stat ar putea garanta valabilitatea acestuia, verificând doar tranzacția care a creat-o cu ajutorul altor notari.
Lasă Corda să fie Corda
Toate acestea ne duc înapoi de unde am început: Corda nu este chiar un concurent pentru blockchain-urile convenționale, inclusiv MultiChain. Corda este Corda – un nou tip interesant de registru distribuit, care a fost optimizat pentru nevoile celor care îl finanțează. Habar n-am dacă Corda va reuși sau eșua în cele din urmă, pentru că nu îi cunosc costurile și beneficiile din lumea reală în comparație cu modul actual de a face lucrurile. Dar indiferent de ce se va întâmpla în viitor, cu siguranță merită studiat în ceea ce privește filozofia și designul.
În ceea ce privește MultiChain, adoptăm o abordare diferită. Pentru a fura o linie de la West Wing, suntem hotărâți să „lăsăm blockchain-ul să fie blockchain”. Blockchain-urile sunt ceea ce sunt și nu avem de gând să le transformăm în ceva diferit. Ca infrastructură de date pentru o aplicație partajată, un blockchain reprezintă un compromis specific în comparație cu o bază de date centralizată – un câștig în dezintermediere cu prețul confidențialității reduse. Și muncim din greu pentru ca MultiChain 2.0 să fie cel mai bun posibil blockchain platformă pe care o pot folosi dezvoltatorii de aplicații.
Vă rugăm să postați comentarii pe LinkedIn.
Sursa: https://www.multichain.com/blog/2018/05/r3-corda-deep-dive-and-technical-review/
- Cont
- Acronime
- activ
- Suplimentar
- Avantaj
- Algoritmul
- algoritmi
- aplicație
- aplicatii
- arhitectură
- ZONĂ
- articol
- activ
- Bunuri
- audiență
- autorizare
- Bancă
- Bank of China
- Bancar
- Băncile
- CEL MAI BUN
- Proiect de lege
- blockchain
- Cutie
- Clădire
- Pachet
- afaceri
- cazuri
- Provoca
- CEO
- certificat
- Certificatele
- Schimbare
- canale
- control
- Verificări
- copil
- Copii
- China
- Citi
- închidere
- comentarii
- comercial
- Comun
- companie
- concurs
- concurenți
- Informatică
- Calculatoare
- conflict
- Consens
- consimţământ
- consuma
- conţinut
- conținut
- contracte
- Corda
- Cheltuieli
- Crearea
- croazieră
- cryptocurrencies
- cryptocurrency
- criptografie
- Curent
- Custodie
- clienţii care
- DAG
- Liniuţă
- de date
- stocare a datelor
- Baza de date
- baze de date
- zi
- afacere
- întârziere
- livrarea
- livrare
- Amenajări
- Dezvoltator
- Dezvoltatorii
- Dezvoltare
- FĂCUT
- digital
- Ledger distribuit
- Dolar
- elefant
- Inginerie
- Afacere
- ethereum
- schimb
- Platforme de tranzacţionare
- Exercita
- țesătură
- echitabil
- familie
- Modă
- DESCRIERE
- În cele din urmă
- financiar
- Institutii financiare
- capăt
- First
- prima dată
- Concentra
- format
- Complet
- de finanțare
- Fondurile
- viitor
- General
- Caritate
- blockchain global
- bine
- guvernare
- mare
- grup
- În creştere
- aici
- Ascunde
- Înalt
- Evidențiat
- istorie
- Cum
- HTTPS
- mare
- idee
- Identitate
- Ilegal
- Inclusiv
- industrii
- informații
- Infrastructură
- Instituţie
- instituții
- asigurare
- interacţiune
- interes
- Interoperabilitate
- implicat
- IP
- emitere
- probleme de
- IT
- Java
- Loc de munca
- alătura
- Cheie
- chei
- cunoştinţe
- mare
- conduce
- Conducere
- conducere
- învățat
- carte mare
- Legal
- Nivel
- ușoară
- Linie
- Lichid
- Listă
- Lung
- major
- Majoritate
- Efectuarea
- Piață
- pieţe
- Meci
- reuniuni
- Membri actuali
- menționează
- milion
- model
- bani
- muta
- multicaten
- reţea
- rețele
- rețele
- noduri
- noțiune
- deschide
- open-source
- comandă
- comenzilor
- Altele
- Altele
- proprietar
- Proprietarii
- Durere
- Hârtie
- paradigmă
- părinţi
- Plătește
- plată
- plăți
- oameni
- performanță
- perspectivă
- filozofie
- imagine
- platformă
- Platforme
- Popular
- prezenta
- preţ
- intimitate
- privat
- Produs
- producere
- dovadă
- proprietate
- proteja
- public
- R3
- cititori
- Citind
- Realitate
- recapitula
- înregistrări
- Regulament
- Relaţii
- relief
- Cerinţe
- Resurse
- pensionare
- revizuiască
- Risc
- norme
- Alerga
- funcţionare
- scalabilitate
- Ştiinţă
- SEA
- vede
- sens
- set
- comun
- Livrarea
- Pantaloni scurți
- Semne
- simplu
- mic
- So
- Software
- soluţii
- REZOLVAREA
- viteză
- Cheltuire
- răspândire
- miză
- Începe
- început
- Stat
- Statele
- Stare
- depozitare
- stoca
- magazine
- Sprijină
- Suprafață
- sistem
- Tehnic
- test
- Viitorul
- Gândire
- terțe părți
- timp
- toleranță
- Trasabilitatea
- tranzacție
- Tranzacții
- Transformare
- Transparență
- de transport
- Încredere
- Neclintit
- us
- USD
- utilizatorii
- prag
- Verificare
- Vizualizare
- Virtual
- mașină virtuală
- vizibilitate
- Vot
- aștepta
- Vest
- OMS
- Wikipedia
- câştiga
- Apartamente
- lume
- valoare
- scris
- ani
- Zcash
- zero