Üksikasjalik ülevaade plokiahelata plokiahelast
Aja möödudes on plokiahela maailm eraldunud kaheks erinevaks osaks. Ühest küljest on avalikud plokiahelad ja nendega seotud krüptovaluutad nautinud hiljutist tähelepanuväärset tagasitulekut, vermides palju multimiljonäre. Teisest küljest on lubatud või ettevõtte plokiahelate kasutamine vaikselt, kuid pidevalt kasvanud, nähes nende esimest korda reaalajas kasutuselevõtt 2017. aasta jooksul mitmes tööstusharus.
Üks huvitav küsimus, mida kaaluda, on nende kahe ahelatüübi sobiv sarnasus. Mõlemad rakendavad jagatud andmebaasi, kasutades peer-to-peer võrku, avaliku ja privaatvõtme krüptograafiat, tehingureegleid ja konsensusmehhanisme, mis suudavad ellu jääda pahatahtlikud osalejad. See on palju ühisosa. Sellegipoolest on avalikel ja erasektori plokiahelatel erinevad nõuded konfidentsiaalsuse, mastaapsuse ja juhtimise osas. Võib-olla viitavad need erinevused vajadusele radikaalselt lahknevate kujunduste järele.
. Corda platvorm, mille on välja töötanud R3 panganduskonsortsium, võtab selles küsimuses selge seisukoha. Kui mõned aspektid olid inspireeritud avalikest plokiahelatest, siis Corda kujundati nullist, lähtudes R3 liikmete vajadustest. Tõepoolest, kuigi R3 kasutab endiselt sõna "plokiahel" laialdaselt et aidata oma toodet turundada, pole Cordal üldse klotside ketti. Rohkem kui ükski teine jaotatud pearaamatu platvorm, millest ma teadlik olen, erineb Corda radikaalselt tavapäraste plokiahelate arhitektuurist.
Minu eesmärk selles kirjatükis on selgitada neid erinevusi ja arutada nende tagajärgi nii heas kui halvas. Tegelikult on hea ja halb seda valesti väljendada, sest huvitavam küsimus on "mille jaoks hea ja halb?" See artikkel pole kaugeltki lühike. Kuid selle lõpuks loodan, et lugejad mõistavad Corda erinevusi ja nendest tulenevaid kompromisse. Corda on oluline, sest selle disainiotsused toovad järsult leevenduse paljud ettevõtte plokiahelate dilemmad.
Veel viimane asi, enne kui me sukeldume. Ettevõtte tegevjuhina MultiCin, populaarne ettevõtte plokiahela platvorm, miks ma kirjutan nii põhjalikult väidetavalt konkureerivast tootest? Tavaline põhjus oleks vaielda MultiChaini paremuse poolt, kuid see pole minu motivatsioon. Tegelikult ma Corda ja MultiChaini konkurentidena ei näe, sest need on nii disaini, arhitektuuri kui ka publiku poolest põhimõtteliselt erinevad. Corda ja MultiChain konkureerivad samamoodi nagu kruiisilaevad ja jetid – kuigi mõlemad veavad inimesi meritsi, pole peaaegu ühtegi reaalset olukorda, kus mõlemat kasutada saaks.
Isiklikumalt öeldes olen viimaste aastate jooksul Corda tehniliselt juhtkonnalt palju õppinud, olgu selleks siis koosolekute, kirjavahetuse või avalike kirjutiste kaudu, millest suur osa toimus enne R3-ga liitumist. Osa minu huvist Corda vastu tuleneb austusest selle meeskonna vastu ja ainuüksi seetõttu tasub Cordat õppida kõigil, kes soovivad hajutatud pearaamatu valdkonda mõista.
Tutvustame plokiahelaid
Corda mõistmiseks on kasulik alustada tavapärastest plokiahelatest. Plokiahela eesmärk on võimaldada andmebaasi või pearaamatut vahetult ja turvaliselt jagada mitteusaldavatele osapooltele. See erineb tsentraliseeritud andmebaasidest, mida salvestab ja kontrollib üks organisatsioon. Plokiahelal on mitu sõlme, millest igaüks salvestab andmebaasi koopia ja võib kuuluda erinevasse organisatsiooni. Sõlmed ühenduvad üksteisega tihedalt peer-to-peer viisil, kasutades "jutuprotokolli", milles iga sõlm räägib pidevalt oma kaaslastele kõike, mida ta õpib. Selle tulemusena saab iga sõlm kiiresti edastada sõnumi kogu võrgule paljude alternatiivsete teede kaudu.
Tsentraliseeritud või plokiahela toega andmebaas algab tühjast olekust ja seda värskendatakse tehingute kaudu. Tehing on määratletud kui andmebaasi muudatuste kogum, mis on "atomiline", mis tähendab, et need tervikuna õnnestuvad või ebaõnnestuvad. Kujutage ette andmebaasi, mis esindab finantsraamatut, kus on üks rida konto kohta. Tehing, mille käigus Alice maksab Bobile 10 dollarit, koosneb kolmest etapist: (1) veenduge, et Alice’i kontol on vähemalt 10 dollarit, (2) lahutage Alice’i kontolt 10 dollarit ja (3) lisage Bobi kontole 10 dollarit. Põhinõudena peab iga andmebaasiplatvorm tagama, et ükski tehing ei segaks teist. See "isolatsioon" saavutatakse nii Alice'i kui ka Bobi read lukustades makse ajal. Kõik muud neid ridu hõlmavad tehingud peavad ootama, kuni see on lõpetatud.
Plokiahelas töötleb iga sõlm iseseisvalt iga tehingut oma andmebaasi koopias. Tehingud luuakse kõikjal võrgus ja edastatakse automaatselt kõikidesse teistesse sõlmedesse. Kuna sõlmede haldavatel organisatsioonidel võivad olla erinevad (või isegi vastandlikud) huvid, ei saa nad üksteist õiglaselt tehinguid usaldada. Seetõttu vajavad plokiahelad reegleid, mis määratlevad, kas konkreetne tehing on kehtiv või mitte. Ühises finantsreskontras takistavad need reeglid kasutajatel üksteise raha kulutamast või raha tühjast otsimisest.
Lisaks tehingu kehtivust määravatele reeglitele peavad plokiahelad määratlema ka tehingute järjestuse, kuna paljudel juhtudel on see järjestamine kriitilise tähtsusega. Kui Alice'il on 15 dollarit ja ta proovib saata 10 dollarit nii Bobile kui ka Charlie'le kahe eraldi tehinguga, saab ainult üks neist maksetest õnnestuda. Ehkki võiksime öelda, et esimene tehing on ülimuslik, pole peer-to-peer võrgul objektiivset "esimese" määratlust, kuna sõnumid võivad jõuda erinevatesse sõlmedesse erinevas järjekorras.
Tehingureeglid
Üldises mõttes jaotatakse igas andmebaasis olev teave kirjeteks või "ridadeks" ja tehinguga saab teha kolme erinevat asja: ridu kustutada, ridu luua ja/või ridu muuta. Neid saab vähendada veelgi kaheni, kuna rea muutmine võrdub selle rea kustutamisega ja selle asemele uue loomisega. Alice'i Bobile tehtud makse juurde naasmiseks kustutatakse tema 15 dollarit sisaldav rida ja luuakse kaks uut rida – üks sisaldab 10 dollarit Bobile ja teine Alice'i jaoks 5 dollarit.
Järgides bitcoini ja Corda terminoloogiat, tähistame tehinguga kustutatud ridu selle “sisenditena” ja loodud ridu “väljunditeks”. Kõik tehinguga kustutatud read peavad olema loodud eelmise tehinguga. Seetõttu kulutab (või “kulutab”) iga tehingu sisend eelmise tehingu väljundit. Andmebaasi ajakohase sisu määrab "kasutamata tehinguväljundite" või "UTXO-de" kogum.
Plokiahelas on tehing kehtiv, kui see vastab kolmele järgmisele tingimusele:
- Õigsus. Tehing peab kujutama endast seaduslikku teisendust sisenditest väljunditeks. Näiteks finantsreskontras peab sisendite kogusumma ühtima väljundite kogusummaga, et vältida raha võluväel tekkimist või kadumist. Ainsad erandid on spetsiaalsed emissiooni- või pensionile jäämise tehingud, mille puhul raha lisatakse või eemaldatakse.
- luba. Tehing peab olema autoriseeritud iga selle sisenditega tarbitud väljundi omaniku poolt. Finantsraamatus takistab see osalejatel üksteise raha ilma loata kulutamast. Tehingu autoriseerimist hallatakse asümmeetrilise (või avaliku ja privaatvõtmega) krüptograafia abil. Igal real on avaliku võtmega identifitseeritav omanik, kelle vastavat privaatvõtit hoitakse salajas. Autoriseerimiseks peab tehing olema iga selle sisendi omaniku poolt digitaalselt allkirjastatud. (Pange tähele, et ridadel võivad olla ka keerulisemad „mitmeallkirjalised“ omanikud, näiteks kui kaks osapoolt kolmest saavad nende kasutamise loa anda.)
- unikaalsus. Kui tehing tarbib teatud väljundit, ei saa ükski teine tehing seda väljundit uuesti tarbida. Nii takistame Alice'il nii Bobile kui ka Charlie'le vastuolulisi makseid. Kuigi mõlema makse tehingud võivad olla õiged ja volitatud, tagab kordumatuse reegel, et andmebaas töötleb ainult ühte.
Tavalises plokiahelas kontrollib iga sõlm iga tehingut nende kolme reegli järgi. Hiljem näeme, kuidas Corda seda vastutust erinevalt jagab.
Ehituskivid
Plokiahel on sõna otseses mõttes plokkide ahel, milles iga plokk lingib eelmisega räsi kaudu, mis tuvastab unikaalselt selle sisu. Iga plokk sisaldab järjestatud tehingute komplekti, mis ei tohi olla vastuolus üksteise ega eelmiste plokkide tehingutega, samuti ajatemplit ja muud teavet. Nii nagu tehingud, levivad plokid kiiresti üle võrgu ja iga sõlm kontrollib neid iseseisvalt. Kui tehing ilmub plokis, siis see "kinnitatakse", mis viib sõlmede tagasilükkamiseni kõik vastuolulised tehingud.
Kes vastutab nende plokkide loomise eest ja kuidas saame olla kindlad, et kõik sõlmed lepivad autoriteetses ahelas kokku? See „konsensusalgoritmide” küsimus on iseenesest tohutu teema, täis imelisi akronüüme, nagu PoW (töötõend), PBFT (praktiline bütsantsi tõrketaluvus) ja DPoS (delegeeritud mängutõend). Me ei hakka siin kõige sellesse süvenema. Piisab, kui öelda, et ettevõtete jaoks lubatud plokiahelad kasutavad mingit hääletusskeemi, kus hääled antakse "validaatorisõlmedele", kes vastutavad kollektiivselt. Skeem tagab, et seni, kuni enamik valideerimissõlmedest töötab õigesti ja ausalt, sisenevad tehingud ahelasse (ligikaudu) õiglases järjekorras, ajatemplid on (ligikaudu) õiged ja kinnitatud tehinguid ei saa hiljem tagasi pöörata.
Enne mõne plokiahela väljakutsete arutamist tahaksin selgitada kolme lisapunkti. Esiteks, kuigi ma kasutan selles artiklis näitena finantsraamatut, toetab tehingute sisend-väljundmudel palju laiemaid kasutusjuhtumeid. Iga rida võib sisaldada rikkalikku andmeobjekti (mõelge JSON-ile), mis sisaldab mitut erinevat tüüpi teavet – tõepoolest, Corda kasutab sel põhjusel sõna "olek", mitte "rida". Rikkamad olekud ei muuda tehingureeglites midagi põhjapanevat: korrektsus on endiselt määratletud sisendite ja väljundite kaudu, iga sisendi jaoks on endiselt vaja autoriseerimist ja unikaalsus tagab, et iga väljundit saab kulutada ainult üks kord.
Teiseks on palju plokiahela kasutamise juhtumeid, kus read luuakse ainult andmebaasis ja neid ei kustutata kunagi. Need rakendused on seotud üldise andmete salvestamise, ajatempli ja notariaalse kinnitamisega, mitte mingi muutuva pearaamatu pidamisega. Nendes ainult andmeid sisaldavates rakendustes lisavad tehingud andmeid oma väljunditesse, kuid ei tarbi neid sisendites, võimaldades lihtsustada õigsuse, autoriseerimise ja kordumatuse reegleid. Kuigi ainult andmete kasutamise juhtumid on MultiChainis meie enda arenduses üha enam tähelepanu keskpunktis, mainin neid siinkohal vaid möödaminnes, kuna Cordat ei loodud selgelt neid silmas pidades.
Lõpuks väärib märkimist, et mõned plokiahela platvormid ei kasuta sisend-väljund mudelit. Ethereum esitleb alternatiivset paradigmat, kus kett juhib globaalse olekuga virtuaalset arvutit, mida hallatakse “lepingute” alusel ja tehingud ei ühendu üksteisega otseselt. Arutelu Ethereumi mudeli üle lubatud plokiahelates on siin väljaspool meie ulatust, kuid vt Käesoleva artikli üksikasjaliku selgituse ja kriitika jaoks. Sisend-väljund paradigma üks peamisi eeliseid on see, et enamikku tehinguid saab töödelda paralleelselt ja üksteisest sõltumatult. See omadus on Corda jaoks ülioluline, nagu näeme hiljem.
Plokiahela väljakutsed
Kujutagem ette, et maailma pangad lõid ühise pearaamatu, mis kajastab mitmesuguste finantsvarade omandiõigust, ülekandmist ja vahetamist. Teoreetiliselt saaks seda rakendada tavalisel plokiahelal, nagu eespool kirjeldatud. Iga rida sisaldaks kolme veergu – vara identifikaatorit (nt GOOG või USD), omandis olevat kogust ja omaniku avalikku võtit. Iga tehing viiks ühe või mitu vara oma sisenditest väljunditesse, väljastamiseks ja kasutusest kõrvaldamiseks erijuhtudel.
Iga võrgupank käitab ühte või mitut sõlme, mis ühenduvad teistega, edastades ja kontrollides tehinguid. Vanemliikmed tegutseksid valideerijatena, vastutades ühiselt tehingute kinnitamise, tellimise ja ajatemplite kinnitamise eest. Validaatori mis tahes väärkäitumine on nähtav kõigile võrgu sõlmedele, mis toob kaasa umbusalduse, väljasaatmise ja/või kohtumenetluse. Kui see kõik on paigas, saab iga finantsvara sekunditega üle maailma liigutada, kusjuures korrektsuse, volituse ja kordumatuse reeglid tagavad pearaamatu terviklikkuse.
Mis sellel pildil viga on? Tegelikult on kolm probleemi: mastaapsus, konfidentsiaalsus ja koostalitlusvõime. Skaleeritavuse küsimus on piisavalt lihtne. Meie pakutud pankadevaheline plokiahel nõuaks, et iga liige kontrolliks, töötleks ja salvestaks iga tehingu, mille on sooritanud iga maailma pank. Isegi kui see oleks suurimate finantsasutuste jaoks tehniliselt teostatav, tekitaks arvutus- ja salvestuskulud paljudele olulise takistuse. Kindlasti eelistaksime süsteemi, kus osalejad näevad ainult neid tehinguid, millega nad on kohe seotud.
Kuid jätkem skaleeritavus kõrvale, kuna selle saab lõpuks lahendada kallite arvutite ja nutika tehnika abil. Põhimõttelisem küsimus on konfidentsiaalsus. Kuigi võib tunduda utoopiline, et iga tehing on kõikjal nähtav, ei ole reaalses maailmas selline radikaalne läbipaistvus konkurentsi ja regulatsiooni seisukohalt alustav. Kui JP Morgan ja HSBC vahetavad paar vara, ei taha nad tõenäoliselt, et Citi ja Bank of China näeksid, mida nad tegid. Kui tehing tehti nende pankade klientide nimel, võib nende poolt sellisel viisil avaldamine olla ebaseaduslik.
Üks väljapakutud lahendus konfidentsiaalsusprobleemile on Hyperledger Fabricus rakendatud kanalid. Igal kanalil on teatud liikmed, kes on võrgu kui terviku sõlmede alamhulk. Kanali tehingud on nähtavad ainult selle liikmetele, nii et iga kanal toimib tõhusalt eraldi plokiahelana. Kuigi see aitab säilitada konfidentsiaalsust, õõnestab see ka kogu harjutuse mõtet. Varasid ei saa ühest kanalist teise teisaldada ilma mõlemas aktiivse usaldusväärse vahendaja abita. Selle lähenemisviisi keerukust rõhutasid hiljuti SWIFTid leppimine kontseptsiooni tõestus, mille hinnangul oleks tootmises vaja üle 100,000 100,000 kanali. See on XNUMX XNUMX saart, mille vahel varasid otse teisaldada ei saa.
Ainult andmete kasutamise juhtudel, kui tehingud ei tarbi andmeid sisendites, saab konfidentsiaalsusprobleemi vältida, krüpteerides või räsides andmed väljundis ning edastades dekrüpteerimisvõtme või räsimata andmed väljaspool ahelat. Kuid tehingu puhul, mille sisendid tarbivad teiste tehingute väljundeid, peab iga sõlm neid sisendeid ja väljundeid tehingu kinnitamiseks nägema. Kuigi arenenud krüptotehnikad nagu konfidentsiaalne vara ja null teadmiste tõestust on välja töötatud selle probleemi osaliseks või täielikuks lahendamiseks finantsreskontrade jaoks, põhjustavad need märkimisväärset tulemuslikkust ja/või neid ei saa üldistada ühegi korrektsuse reegliga.
Lõpuks räägime koostalitlusvõimest. Ideaalses maailmas liituks iga pank meie ülemaailmse plokiahelaga kohe selle käivitamise päeval. Tegelikult võtaksid erinevad pangarühmad kasutusele mitu plokiahelat, mis põhinevad geograafial või olemasolevatel suhetel. Aja jooksul võib ühe grupi liige soovida alustada tehinguid teise rühma liikmega, kandes vara ahelate vahel üle. Nii nagu kanalite puhul, on seda võimalik saavutada ainult usaldusväärse vahendaja abiga, kes alistab plokiahela eesmärgi.
Corda eesmärk on lahendada need omavahel seotud mastaapsuse, konfidentsiaalsuse ja koostalitlusvõime probleemid hajutatud pearaamatute töö radikaalse ümbermõtestamise kaudu.
Corda osaline vaade
Corda põhilist erinevust on lihtne seletada: iga sõlm näeb ainult mõnda, mitte kõiki võrgus töödeldavatest tehingutest. Kuigi kõik need tehingud määratlevad ühe loogilise ja kontseptuaalse pearaamatu, ei näe ükski sõlm seda pearaamatut tervikuna. Võrdluseks võib öelda, et igal ajahetkel on iga dollaritäht maailmas kindlas kohas, kuid keegi ei tea, kus nad kõik on.
Milliseid tehinguid Corda sõlm siis näeb? Esiteks need, millega ta on otseselt seotud, sest talle kuulub üks selle tehingu sisenditest või väljunditest. Finantsraamatus hõlmab see kõiki tehinguid, mille käigus sõlm saadab või võtab vastu raha. Oletame, et Alice loob tehingu, mis kulutab tema sisendiks 15 dollarit ja millel on kaks väljundit – üks 10 dollarit minu jaoks ja teine 5 dollarit tema jaoks. Pärast seda, kui Alice on mulle selle tehingu saatnud, saan kontrollida selle õigsust ja volitust, veendudes, et sisendid ja väljundid on tasakaalus ning et Alice on allkirjastanud.
Sellest tehingust üksi aga ei piisa. Samuti pean ma kontrollima, kas Alice'i 15-dollarine sisestusolek on tõesti olemas ja ta ei mõelnud seda lihtsalt välja. See tähendab, et pean nägema tehingut, mis selle oleku lõi, ning kontrollima selle õigsust ja volitust. Kui sellel eelmisel tehingul, mis saatis Alice'ile 15 dollarit, on 10-dollarine sisend Denzelile ja veel 5-dollarine sisend Ericult, siis pean kontrollima ka tehinguid, mis need lõid. Ja nii edasi, kuni algse „emissiooni” tehinguni, mille käigus vara loodi. Kinnitatavate tehingute arv sõltub sellest, mitu korda varad on omanikku vahetanud, ja tagasihargnemise ulatusest.
Kuna Corda sõlmed ei näe automaatselt iga tehingut, siis kuidas nad saavad vajalikke tehinguid? Vastus on iga uue tehingu saatjalt. Enne kui Alice teeb tehingu, mis kulutab tema 15 dollarit, peab ta olema juba kinnitanud tehingu, mille käigus ta selle sai. Ja kuna Alice peab olema rakendanud ülaltoodud rekursiivset tehnikat, on tal koopia igast selle kinnitamiseks vajalikust tehingust. Bob lihtsalt taotleb neid tehinguid Alice'ilt nende suhtluse osana. Kui Alice ei reageeri õigesti, järeldab Bob, et Alice üritab teda petta, ja lükkab sissetuleva makse tagasi. Juhul, kui Bobile saadetakse uus tehing, mille sisenditel on mitu omanikku, saab ta igaühelt hankida vajalikud tõendid.
Tutvustame notareid
Siiani oleme selgitanud, kuidas Bob saab kontrollida sissetuleva tehingu õigsust ja autoriseerimist, sealhulgas otsida rekursiivselt selle sisendite päritolu. Kuid on veel üks reegel, millele peame mõtlema: ainulaadsus. Oletame, et Alice on pahatahtlik. Ta saab luua ühe tehingu, milles ta maksab Bobile 10 dollarit, ja teise, mille puhul ta maksab sama 10 dollarit Charlie'le. Ta saab saata need tehingud vastavalt Bobile ja Charlie'le koos täieliku tõendiga nende õigsuse ja volituse kohta. Kuigi mõlemad tehingud on üksteisega vastuolus, tarbides sama oleku, ei saa Bob ja Charlie seda kuidagi teada.
Tavapärased plokiahelad lahendavad selle probleemi nii, et iga sõlm näeb iga tehingut, muutes konflikte hõlpsaks tuvastamiseks ja tagasilükkamiseks. Kuidas siis Corda oma osalise tehingute nähtavusega sama probleemi lahendab? Vastus on “notari” abiga. Notar on usaldusväärne pool (või koos töötavad osapooled), kes tagab, et konkreetset riiki tarbitakse ainult üks kord. Igal osariigil on konkreetne notar, kes peab allkirjastama kõik tehingud, milles seda osariiki tarbitakse. Kui notar on seda teinud, ei tohi ta allkirjastada sama riigi jaoks teist tehingut. Notarid on võrgustiku tehingute ainulaadsuse eestkostjad.
Kuigi igal osariigil võib olla erinev notar, tuleb kõik konkreetse tehingu osariigid määrata samale notarile. See väldib ummikseisu ja sünkroonimisega seotud probleeme, mis peaksid olema tuttavad neile, kellel on hajutatud andmebaasi kogemus. Oletame, et Alice ja Bob nõustuvad vahetama Alice'i 10 dollarit Bobi 7 naela vastu. Selle vahetuse tehingule peavad alla kirjutama mõlema riigi notarid, aga kumb läheb enne? Kui Alice'i notar annab allkirja, kuid Bobil see mingil põhjusel ebaõnnestub, jääb Alice'il tehing pooleli ja ta ei saa enam kunagi oma 10 dollarit kasutada. Kui Bob annab esimesena märke, on ta samamoodi avatud. Kuigi meile võib meeldida, kui notarid lihtsalt koostööd teeksid, nõuab see praktikas vastastikust usaldust ja konsensusprotokolli kasutamist – tüsistusi, mida Corda disainerid otsustasid vältida.
Kui ühe tehingu sisenditeks on vaja riike, kus on erinevad notarid, siis nende omanikud sooritavad esmalt spetsiaalsed “notarivahetuse” tehingud, millega riik liigub ühelt notarilt teisele, muutmata midagi muud. Seega, kui pooled teevad tehingut mitme sisendiga, peavad nad esmalt kokku leppima kasutatava notari ja seejärel tegema vajalikud notarimuudatused. Kuigi minus olev arendaja tundis selle lahenduse kohta lugedes väikest valu, pole põhjust, miks see ei tööta seni, kuni notarid kaasa mängivad.
Samuti tuleks selgitada, et kuigi iga notar on tehingute allkirjastamisel üks loogiline osaleja, ei pea ta olema ühe osapoole kontrolli all. Rühm organisatsioone võiks notarit juhtida ühiselt, kasutades asjakohast konsensusprotokolli, milles kehtiva allkirja loomiseks on vaja enamust osalejatest. See takistaks ühelgi pahatahtlikul osapoolel unikaalsust õõnestamast, allkirjastades vastuolulisi tehinguid. Teoreetiliselt võiksime isegi lubada igal võrgusõlmel sellises ühises notariaalses kinnituses osaleda, kuigi sel juhul oleksime enam-vähem tagasi tavapärase plokiahela juurde.
Hinde võtmine
Teeme Corda ja tavapäraste plokiahelate peamised erinevused kokku. Cordas pole ühtset plokiahelat, mis sisaldaks kõiki kinnitatud tehinguid. Sõlmed näevad ainult neid tehinguid, millega nad on otseselt seotud või millest nad ajalooliselt sõltuvad. Sõlmed vastutavad tehingute õigsuse ja autoriseerimise kontrollimise eest, kuid usaldavad ainulaadsuse kontrollimiseks usaldusväärseid notareid.
Muidugi on Cordas palju enamat kui see: digitaalsete sertifikaatide kasutamine identiteedi autentimiseks, võrgukaardid, mis aitavad sõlmedel üksteist leida ja üksteist usaldada, osariigipõhised "lepingud", mis määravad korrektsuse iga osariigi vaatenurgast, Java virtuaalmasina deterministlik versioon, mis täidab neid lepinguid, "vood", mis automatiseerivad tehingute läbirääkimisi, "ajaaknad", mis piiravad tehinguid ajaliselt, "oraaklid", mis kinnitavad väliseid fakte ja "CorDapps", mis koondab palju asju hõlpsaks levitamiseks . Kuigi kõik need funktsioonid on huvitavad, võib kõigi jaoks ekvivalendid leida teistelt plokiahela platvormidelt. Minu eesmärk selles artiklis on keskenduda sellele, mis teeb Corda ainulaadseks.
Kas Corda täidab oma lubadused? Kas see lahendab plokiahelate mastaapsuse, konfidentsiaalsuse ja koostalitlusvõime probleemid? Ja kui suurt hinda Corda oma konkreetsete valikute tegemisel maksab?
Vahel skaleeritavam
Alustame skaleeritavusest. Siin paistab Corda eelis selge, kuna sõlmed näevad võrgus ainult mõnda tehingut. Tavalises plokiahelas piirab maksimaalset läbilaskevõimet tehingute töötlemise aeglaseima sõlme kiirus. Seevastu Corda võrk suudab töödelda miljon tehingut sekundis, samas kui iga sõlm näeb sellest vaid väikest osa. Skaleeritavus laieneb ka notaritele, kuna tehingute unikaalsuse huvides allkirjastamise ülesannet saab jaotada paljude erinevate notarite vahel, millest igaüks vastutab väikese osa võrgustiku olekute eest.
Seda öeldes on üks olukord, kus Corda toimib palju halvemini kui plokiahel. See juhtub siis, kui sõlm saab uue tehingu, mis sõltub paljudest teistest tehingutest, mida ta varem näinud ei ole. Kujutage ette väga likviidset vara, mis anti välja 10 aastat tagasi ja vahetab omanikku umbes iga viie minuti järel. Tee igast uuest tehingust tagasi selle vara väljastamiseni on üle miljoni tehingu pikk. Kui sõlm saab selle vara esimest korda, peab ta need miljonid tehingud saatjalt välja tooma ja igaüks neist kordamööda kinnitama. Kui (üsna optimistlik) kiirus 1000 tehingut sekundis, oleks 17-minutiline viivitus, enne kui saaja saaks vara edasi saata – selgelt liiga pikk aeg millegi nii likviidse jaoks.
Miks plokiahelad selle probleemi all ei kannata? Kuna sõlmed näevad ja kontrollivad iga tehingut selle toimumise ajal, värskendavad nad pidevalt pearaamatu olekut ja teavad täpselt, kellele iga vara hetkel kuulub. Isegi kui sõlm pole kunagi varem teatud vara hoidnud, saab see kohe kontrollida tehingut, mille käigus ta selle vastu võttis, ja seejärel selle kohe edasi saata. Teisisõnu peavad plokiahela sõlmed kontrollima tehinguid, mis ei pruugi nende jaoks asjakohased olla, kuid seda tehes maksavad nad ette võimalike tulevaste tehingute kontrollimise kulud. Kuigi Corda sõlmed on üldiselt vähem hõivatud, käitavad nad oht, et on vaja kiiresti ära teha palju tööd. Selles pole midagi skaleeritavat.
Veidi konfidentsiaalsem
Liigume edasi konfidentsiaalsuse poole. Cordas näevad sõlmed ainult mõningaid võrgu tehinguid, mis tähendab vaieldamatult paremat privaatsust kui tavalised plokiahelad. Sellegipoolest pole Corda konfidentsiaalsusprobleemi lahendamisest kaugel, sest sõlmed näevad endiselt mõningaid tehinguid, mis pole nende asi. Lihtsa näitena võib öelda, et kui Alice maksab Bobile 10 dollarit, siis Bob saadab selle 10 dollarit Charlie'le, Charlie sõlmes tuleb näidata Alice'i ja Bobi vahelist tehingut, kuigi see ei puuduta teda. Sel ajal, kui Alice Bobile maksis, ei teadnud ta, kes seda tehingut tulevikus näha võib, ja kellelegi võidakse see igal ajal saata.
Ausalt öeldes on Corda arendajad sellest probleemist teadlikud ja arutavad seda oma 15. peatükis. Tehniline valge raamat. Dokumendis soovitatakse lihtsaid strateegiaid, nagu mitme avaliku võtme kasutamine üksuse kohta või jälgitavuse vähendamine, tagastades varad emitentidele uuesti emiteerimiseks (sarnaselt krüptovaluutade "mündimikseriga"). See mainib ka täiustatud tulevikuvõimalusi, nagu Tor-tüüpi anonüümseks muutmise võrkude kasutamine osalejate IP-aadresside varjamiseks ja nullteadmiste tõendite või Inteli tõendite kasutamine. turvalised enklaavid tehingute kinnitamiseks ilma nende sisu avaldamata. Kuigi kõik need soovitused kehtivad, saab neid rakendada ka tavalistes plokiahelates, kasutades sisend-väljundmudelit, ja need on tõepoolest olnud krüptovaluutades, nagu Dash, Zcash ja Verge. Seega jääb Corda ainsaks ainulaadseks eeliseks konfidentsiaalsuse osas vähenenud tehingute nähtavus – parimal juhul mittetäielik lahendus.
Kõik aretuses
Corda mastaapsuse ja konfidentsiaalsuse eeliste paremaks mõistmiseks peaksime märkima, kuidas see sõltub tehingute vaheliste suhete tihedusest ja kattumisest. Kujutage ette võrgus sooritatud tehingute “sugupuud”, milles iga tehingu vanemad on eelmised, millest see kohe sõltub. Täpsemalt, kui ühe tehingu väljundit kasutab teise sisend, joonistame noole, mis tähistab suhet vanema ja lapse vahel. Tehingutel võib olla suvaline arv vanemaid ja lapsi, kuigi enamikul juhtudel eeldame, et neid on vähe.
Arvestades seda sugupuud, määratleme tehingu esivanemateks selle vanemad, vanavanemad, vanavanavanemad jne. Meie puu “Aadam ja Eeva” on emissioonitehingud, mis tekitasid vara ja millel pole oma vanemaid. Nagu tavalistes sugupuudes, ei saa kaks tehingut olla üksteise esivanemad. Formaalses arvutiteaduses on see a suunatud atsükliline graafik või DAG, milles põlvnemine on määratletud kui vanemseose transitiivne sulgemine.
Tuletage meelde, et kui Corda sõlm tehingut töötleb, peab see alla laadima ja kontrollima kõik selle tehingu esivanemad, välja arvatud need, mida ta on varem näinud. Nii et kui sugupuu on sügav, võib uutel sissetulevatel tehingutel olla suur hulk esivanemaid, mida tuleb kontrollida, vallandades Corda mastaapsuse probleemi. Lisaks, kui sugupuu sisaldab suurel määral ristumist, võivad uue tehingu esivanemad hõlmata paljusid või enamikku varasemaid tehinguid võrgus. Sel juhul pakub Corda privaatsuse osas vähe eeliseid.
Seevastu kui tehingute sugupuu on madal ja sisaldab palju lahti ühendatud saari, mis omavahel ei suhtle, tõusevad Corda eelised esile. Sõlmed ei pea kunagi kontrollima suurt hulka tehinguid korraga ja neid saab hoida teadmatuses enamiku tehingute kohta, mis pole nende tehingutega seotud. Kui seda kasutatakse finantsreskontrana, võime öelda, et Corda on ideaalne väga killustatud turgude jaoks, mille varad vahetavad harva omanikku.
Koostalitlusvõime võidu nimel
Siin on üks valdkond, milles Corda tõeliselt särab. Kujutage ette kahte eraldi Corda võrku, millel on erinevad varad ja osalejad. Mingil hetkel soovib ühes võrgus osaleja vara kellelegi teises võrgus saata. Erinevalt tavalistest plokiahelatest ei eeldata, et sõlm oleks kõik varasemad tehingud kontrollinud, seega ei koge selle uue vara vastuvõtvas sõlmes midagi ebatavalist. Kui tehing saabub, siis see lihtsalt taotleb ja kontrollib asjakohast ajalugu, teadmata, et see pärineb "eraldi võrgust". Klišee venitamiseks võiks öelda, et Cordas pole võõraid – on vaid sõbrad, kes pole veel kohtunud.
Tegelikkuses pole asjad päris nii lihtsad. Iga Corda sõlm otsustab selgesõnaliselt, milliseid notareid usaldada, kuna valesti käituv notar võib põhjustada rahalist segadust. Lisaks vajavad sõlmed võrgu teiste sõlmedega ühenduse loomiseks "uksehoidja" väljastatud "sertifikaati", kuna me ei saa lubada, et avalikkuse juhuslikud liikmed hakkavad sõlmedega ühendust looma ja oma ressursse raiskama. Seega, enne kui ühe võrgu sõlm saab hakata teisest võrgust tehinguid taotlema ja kontrollima, peab ta lisama oma usaldusväärsete notarite loendi ja hankima vastava sertifikaadi. Kuigi see hõlmab käsitsi seadistamist ja haldust, on see miinimum, mida sellise süsteemi puhul oodata võib. Üldiselt on õiglane järeldada, et koostalitlusvõime on Corda suur võit tavapäraste plokiahelate ees.
Taasvahendus
On aeg rääkida vahendusest, elevandist Corda toas. Plokiahelate kontekstis tähendab vahendus, et iga osaleja saab iga tehingu ise kontrollida, sõltumata kolmandate osapoolte heast käitumisest. sisse minu vaade, on vahendamine plokiahelate põhieelis tsentraliseeritud andmebaaside ees, milles kõik osalejad sõltuvad täielikult selle andmebaasi omanikust. Kui võrgustikus osalejatel on vahendaja, kellele nad saavad loota, ja vahendusel puudub äriline või regulatiivne põhjus, siis on pole mõtet plokiahela kasutamisel. Tsentraliseeritud andmebaasid on kiiremad ja tõhusamad ning väldivad tehingute konfidentsiaalsuse küsimust.
Nii et kas Corda võrgustikus osalejad saavutavad vahetumise? No jah, jah ja jah, aga ei. Tehingu edastamiseks märgib Corda ruudu, kuna tehingus osalevad sõlmed räägivad otse üksteisega. Õigsuse ja volituse poolest on see ka heas korras, kuna iga sõlm saab neid omadusi ise kontrollida. Tehingu unikaalsuse kontrollimisel ei suuda Corda aga vahendamise testi. Sõlmed ei saa ise ainulaadsust kinnitada, kuna nad ei näe võrgus iga tehingut ja ülesanne antakse allhanke korras usaldusväärsetele notaritele.
Corda osalejad on mitmel viisil notarite meelevallas. Esiteks võib notar keelduda tehingu allkirjastamisest, isegi kui tema sisendid tarbivad väljundeid, mida pole varem kasutatud. Finantsraamatus takistab see kellelgi oma varasid saatmast või vahetamast. Teiseks võib notar allkirjastada kaks vastandlikku tehingut, mis tarbivad sama toodangut, pannes kaks osapoolt uskuma, et nad said sama asja. Kuna duplikaatvara mõlemad adressaadid saadavad või vahetavad seda edasistes tehingutes, levib nakkus ja kogu pearaamatu terviklikkus võib peagi kahjustada saada. Lõpuks võib notar keelduda allkirjastamast „notari muutmise” tehingut, et riik üle anda konkurendile, hoides varaomanikku tegelikult pantvangis. Tehingu puhul, mis hõlmab osariike erinevate notaritega, pole kaugeltki öelda, et Corda tutvustab rohkem vahendust kui tsentraliseeritud andmebaas, sest kontrolli all on mitu kolmandat osapoolt.
Selle riski perspektiivi silmas pidades tasub meeles pidada, et Corda notareid ei pea kontrollima üks organisatsioon. Need võivad koosneda ka sõlmede rühmast, mis käitavad konsensusalgoritmi, mis talub halbu tegijaid. Sel juhul töötab notar hästi seni, kuni enamik selle liikmessõlmedest järgib reegleid. Pealtnäha kõlab see pigem plokiahelana, mis sõltub sellest, kas enamik valideerijaid käitub hästi. Cordas on aga riskid oluliselt suuremad. Halvim, mida plokiahela valideerijad teha saavad, on takistada mõne tehingu kinnitamist. Pahatahtlik Corda notar võib allkirjastada ka vastuolulisi tehinguid, saates pearaamatu ebajärjekindlasse kuristikku.
Kummaline loom
Kui liita skaleeritavus, konfidentsiaalsus, koostalitlusvõime ja vahenduse puudumine, on Corda alternatiivi kohta raske lihtsat otsust teha. Üldiselt tundub selle plokiahela platvormi arendaja vaatenurgast noh… veenev, kuid kummaline. Corda lahendused, mis on loodud mastaapsuse ja konfidentsiaalsuse põhiprobleemide lahendamiseks, on puudulikud ja sõltuvad suuresti tehingu "perepuu" kujust. Kuid nende osaliste võitude saavutamiseks kaotab Corda plokiahelate põhiomaduse – tehinguvahendajate eemaldamise. Kuigi Corda on koostalitlusvõimega kahtlemata suurepärane, kas sellest tõesti piisab?
Kui tahaksime olla skeptilised, võiksime öelda, et Corda meeskonnale tehti võimatu ülesanne – kujundada plokiahela maitse, mis sobiks R3 rahastavatele pankadele. Kuid plokiahelate peamine eelis tsentraliseeritud andmebaaside ees on vahendamine, mille hind on vähenenud konfidentsiaalsus. Kuidas võiks see kompromiss olla mõistlik finantsasutuste jaoks, kes teenivad raha vahendajatena ja on eraelu puutumatuse suhtes väga tundlikud? Selles valguses võib Cordat kiita kui kangelaslikku, kuid lõppkokkuvõttes mitterahuldavat kompromissi R3 liikmete soovi teha midagi plokiahelat ning nende kaubanduslike ja regulatiivsete piirangute vahel.
Hooldaja 2.0
Kuid eelistan positiivsemat lähenemist. Selle asemel, et keskenduda võrdlusele plokiahelatega, võime Cordat pidada finantsolukorra oluliseks tehniliseks uuenduseks. Lihtsalt asenda sõna “notar” sõnaga “hooldaja” ja kõik läheb üsna kenasti paika. (A hoiuleandja on finantsasutus, mis hoiab varasid teiste nimel.) Jah, notarid on vahendajad, kes saavad nii tehinguid blokeerida kui lubada konflikte, kuid see kehtib ka tänapäevaste haldurite kohta. “Notari vahetustehingut” võib vaadelda kui vara üleandmist ühelt haldurilt teisele. Ja Corda tehingutele kirjutab alla vaid üks notar samal põhjusel, et meile meeldib, et varade vahetus toimuks ühes kohas – et kumbki osapool ei jääks taskusse.
Vaadates Cordat sel viisil, näeme, kuidas see täiustab traditsioonilist vangistusmudelit:
- See määratleb standardse arvutusparadigma ja vormingu finantsvarade ja muude lepinguliste kohustuste väljendamiseks.
- See pakub avatud lähtekoodiga tarkvara nende kohustuste tõlgendamiseks ja täitmiseks, tagades, et tehingu osapooled ja haldurid lepivad kokku iga tehingu tulemuses.
- Väärkasutuse eest kaitsvaid keerukaid mitmepoolseid haldureid saab luua (kasutades ainult tarkvara!), kasutades tõrketaluvusega konsensusalgoritme.
- Varade üleandmiseks haldurite vahel on määratletud standardne protsess (“notari vahetus”) ja ükski haldur ei tohi keelduda.
- Hooldajad ei saa kasutada oma valduses olevat vara ilma omaniku nõusolekuta, kuna tehingud peavad olema allkirjastatud ka nende sisendite omanike poolt.
Ma pole kaugeltki pankur, kuid minu jaoks kõlab see kõik paljulubavalt. Ja võib-olla saaks Cordat sama hästi rakendada ka muudes keerukate järelevalvestruktuuridega tööstusharudes, nagu kindlustus või laevandus. Kuigi Corda disain ei pruugi tagada plokiahela täielikku vahet, pakub see välja võimsa ümberkujundamise tööstusharudes, kus vahendajatel on oluline roll.
Kui me selle mõttekäiguga edasi läheme, tekib paratamatult küsimus: kui me juba usaldame notarite elu ja surmaga seotud ainulaadsuse kontrollimise töö, siis miks mitte loota neile ka korrektsuse ja volituste osas? Cordal on juba olemas "valideeriva notari" mõiste, mis kontrollib tehinguid täielikult enne allkirja lisamist. Selle asemel, et tavalised Corda sõlmed oma tehingute esivanemaid alla laadivad ja kontrollivad, võiksite selle asemel küsida notarilt? See võib aidata suurendada mastaapsust ja konfidentsiaalsust, kuna enamik sõlmedest ei näeks muid tehinguid peale enda oma. Võime isegi soovitada, et võrgustiku notarid usaldaksid üksteist täielikult, nii et esivanemate pärast pole vaja muretseda. Iga riigi notar võis selle kehtivuse eest garanteerida, kontrollides teiste notarite abiga vaid tehingut, millega see tehti.
Olgu Corda Corda
Kõik see viib meid tagasi sinna, kust alustasime: Corda ei ole tegelikult tavapäraste plokiahelate, sealhulgas MultiChain, konkurent. Corda on Corda – huvitav uut tüüpi hajutatud pearaamat, mis on optimeeritud rahastajate vajadustele. Mul pole aimugi, kas Corda lõpuks õnnestub või ebaõnnestub, sest ma ei tea selle tegelikke kulusid ja tulusid võrreldes praeguse asjade tegemise viisiga. Aga mis tulevikus ka ei juhtuks, tasub kindlasti õppida filosoofia ja disaini osas.
Mis puutub MultiChaini, siis me kasutame teistsugust lähenemist. Et varastada rida West Wing, oleme otsustanud "laske plokiahelal olla plokiahel". Plokiahelad on need, mis nad on, ja me ei kavatse neid millekski teistsuguseks muuta. Jagatud rakenduse andmeinfrastruktuurina kujutab plokiahel endast tsentraliseeritud andmebaasiga võrreldes konkreetset kompromissi – kasu vahendamisest konfidentsiaalsuse vähenemise hinnaga. Ja me töötame kõvasti selle nimel, et MultiChain 2.0 oleks parim võimalik blockchain platvorm rakenduste arendajatele kasutamiseks.
Palun postitage kõik kommentaarid LinkedIn.
Allikas: https://www.multichain.com/blog/2018/05/r3-corda-deep-dive-and-technical-review/
- konto
- Akronüümid
- aktiivne
- Täiendavad lisad
- ADEelis
- algoritm
- algoritme
- taotlus
- rakendused
- arhitektuur
- PIIRKOND
- artikkel
- eelis
- vara
- publik
- luba
- Pank
- Hiina Pank
- Pangandus
- Pangad
- BEST
- arve
- blockchain
- Kast
- Ehitus
- Kimp
- äri
- juhtudel
- Põhjus
- tegevjuht
- sertifikaat
- tunnistused
- muutma
- kanalid
- kontroll
- Kontroll
- laps
- Lapsed
- Hiina
- Citi
- sulgemine
- kommentaarid
- kaubandus-
- ühine
- ettevõte
- konkurents
- konkurendid
- Arvutiteadus
- arvutid
- konflikt
- üksmeel
- nõusolek
- tarbima
- sisu
- sisu
- lepingud
- Corda
- kulud
- loomine
- püsikiiruse
- cryptocurrencies
- cryptocurrency
- krüptograafia
- Praegune
- Hooldusõigus
- Kliendid
- DAG
- Kriips
- andmed
- andmete salvestamine
- andmebaas
- andmebaasid
- päev
- tegelema
- viivitus
- edastamine
- tarne
- Disain
- arendaja
- Arendajad
- & Tarkvaraarendus
- DID
- digitaalne
- Jaotatud pearaamat
- dollar
- elevant
- Inseneriteadus
- ettevõte
- ethereum
- vahetamine
- Vahetused
- Teostama
- kangas
- õiglane
- pere
- mood
- FUNKTSIOONID
- Lõpuks
- finants-
- Finants institutsioonid
- lõpp
- esimene
- Esimest korda
- Keskenduma
- formaat
- täis
- rahastamise
- raha
- tulevik
- Üldine
- Globaalne
- globaalne plokiahel
- hea
- valitsemistava
- suur
- Grupp
- Kasvavad
- siin
- varjama
- Suur
- Esiletõstetud
- ajalugu
- Kuidas
- HTTPS
- tohutu
- idee
- Identity
- ebaseaduslik
- Kaasa arvatud
- tööstusharudes
- info
- Infrastruktuur
- Institutsioon
- institutsioonid
- kindlustus
- suhtlemist
- huvi
- Koostalitlusvõime
- seotud
- IP
- väljaandmine
- küsimustes
- IT
- Java
- töö
- liituma
- Võti
- võtmed
- teadmised
- suur
- viima
- Juhtimine
- juhtivate
- õppinud
- pearaamat
- Õigus
- Tase
- valgus
- joon
- Vedelik
- nimekiri
- Pikk
- peamine
- Enamus
- Tegemine
- Turg
- turud
- Vastama
- kohtumised
- liikmed
- mainib
- miljon
- mudel
- raha
- liikuma
- mitmeketteline
- võrk
- võrgustike loomine
- võrgustikud
- sõlmed
- Mõiste
- avatud
- avatud lähtekoodiga
- et
- tellimuste
- Muu
- teised
- omanik
- omanikud
- Valu
- Paber
- paradigma
- vanemad
- Maksma
- makse
- maksed
- Inimesed
- jõudlus
- perspektiiv
- filosoofia
- pilt
- inimesele
- Platvormid
- populaarne
- esitada
- hind
- privaatsus
- era-
- Toode
- Produktsioon
- tõend
- kinnisvara
- kaitsma
- avalik
- R3
- lugejad
- Lugemine
- Reaalsus
- tagasivõtmine
- andmed
- Määrus
- Suhted
- reljeef
- Nõuded
- Vahendid
- pensionile
- läbi
- Oht
- eeskirjade
- jooks
- jooksmine
- Skaalautuvus
- teadus
- SEA
- näeb
- tunne
- komplekt
- jagatud
- Transport TASUTA
- Lühike
- Märgid
- lihtne
- väike
- So
- tarkvara
- Lahendused
- LAHENDAGE
- kiirus
- Kulutused
- laiali
- kaalul
- algus
- alustatud
- riik
- Ühendriigid
- olek
- ladustamine
- salvestada
- kauplustes
- Toetab
- Pind
- süsteem
- Tehniline
- test
- Tulevik
- Mõtlemine
- kolmandad isikud
- aeg
- sallivus
- Jälgitavus
- tehing
- Tehingud
- Transformation
- läbipaistvus
- transportida
- Usalda
- Räsimata
- us
- USD
- Kasutajad
- äärel
- Kontrollimine
- vaade
- virtuaalne
- virtuaalne masin
- nähtavus
- Hääletamine
- ootama
- Läände
- WHO
- Wikipedia
- võitma
- Töö
- maailm
- väärt
- kirjutamine
- aastat
- Zcash
- null