Privaatsed plokiahelad on midagi enamat kui “lihtsalt” jagatud andmebaasid

Miks plokiahela alandajatel puudub mõte

Ja nii see jätkub. Alates Populaarsed postitused et põlglikud säutsud et ennustused tuleviku kohta, maailm ja selle ema on rivis, et visata tomateid privaatsetele plokiahelatele, enne isegi aru saada, mis nad on.

Öelda, et privaatne plokiahel on lihtsalt jagatud andmebaas, on sama, mis öelda, et HTML ja HTTP on "lihtsalt" hajutatud hüpertekst. See on vale kahel viisil. Esiteks semantiline: privaatsed plokiahelad on tehnoloogia, mis võimaldab jagatud andmebaasid, nagu pliiatsid, võimaldavad kirjutamist ja HTML/HTTP võimaldavad hajutatud hüperteksti. Bitcoini plokiahelat ja selle esmast rakendust ei saa sisuliselt eraldada, sest üks ei saaks eksisteerida ilma teiseta. Kuid see samaväärsus ei kehti üldse privaatsete plokiahelate kohta.

Teine viga on sõna "just" kasutamine. Lihtsalt? Need olid HTML ja HTTP lihtsalt viis teha hajutatud hüperteksti? Hüpertekst oli aastakümneid varem leiutatud, kas need tehnoloogiad on arvutiajaloo väike joonealune märkus? Oh, aga lubage mul kokku lugeda viise, kuidas nad oma koha teenisid: (a) lihtne märgistuskeel mida iga võhik võiks õppida, (b) a hierarhiline adresseerimisskeem mis töötab nii TCP/IP-ga kui ka meie kontseptuaalse kohamudeliga, (c) a lihtne protokoll sisu olekuvabaks otsimiseks ja (d) mõlemad klient ja server tarkvara, mis tõi kogu asja ellu. Sama hästi võiksime öelda, et Newton oli lihtsalt teadlane ja Dostojevski lihtsalt kirjanik.

Nii et teeme selle täiesti selgeks: jah, privaatsed plokiahelad on lihtsalt viis andmebaasi jagamiseks. Kuid need võimaldavad uut tüüpi jagatud andmebaasi, millel on tohutu mõju finantsmaailmale ja mujale. Ja kui soovite edasi lugeda, siis ma ütlen teile täpselt, miks.

Mis on andmebaas?

Andmebaas on struktureeritud teabe hoidla, mis on organiseeritud tabeliteks. Seda võib pidada ühest või mitmest Exceli tabelist koosneva kogumina, mida saab valikuliselt omavahel linkida. Iga tabel sisaldab teavet teatud tüüpi olemite komplekti kohta, iga rea ​​kohta üks olem. Igas tabelis on ka üks või mitu veergu, mis kirjeldavad nende olemite erinevaid aspekte. Näiteks võivad WidgetCo sisemise personalikataloogi tabelis olla veerud töötaja ID, eesnime, perekonnanime, osakonna, sisemise telefoninumbri ja ruumi numbri jaoks.

Üks olulisi viise, kuidas andmebaasid arvutustabelitest kaugemale ulatuvad, on see, et need sisaldavad reegleid nendesse salvestatud andmete kohta. Need reeglid aitavad tagada, et teave jääb mõistlikuks ja järjepidevaks kogu organisatsiooni hüvanguks. Tänapäevases kõige populaarsemad andmebaasid, on reeglitel mitu levinud vormi:

  • . andmebaasi skeem määratleb, millist teavet on igas veerus lubatud. Näiteks peab telefoninumber sisaldama 4 numbrit ja seda ei tohi tühjaks jätta ("null").
  • Unikaalsed võtmed mis väidavad, et konkreetsel veerul (nt töötaja ID) peab igal real olema erinev väärtus.
  • Kontrollige piiranguid mis jõustavad seoseid iga rea ​​veeru väärtuste vahel. Näiteks kui osakond on “Hanked”, siis peab ruumi number algama 3 või 4-ga.
  • Välis võtmed mis jõustavad seoseid tabelite vahel. Näiteks kui andmebaas sisaldab teist palgaarvestuse jaoks kasutatavat tabelit, võib kehtida reegel, et iga palgatabelis oleva töötaja ID peab olema olemas ka töötajate kataloogis.

Tehing on andmebaasis tehtud muudatuste kogum, mis tervikuna aktsepteeritakse või lükatakse tagasi. Iga kord, kui tehing andmebaasi muudab, tagab tarkvara andmebaasi reeglite järgimise. Kui mõni tehingu osa rikub mõnda neist reeglitest, lükatakse kogu tehing vastava veaga tagasi.

On ka teisi esoteerilisemaid reeglitüüpe, mida võiksin loetleda, kuid neil kõigil on üks ühine joon. Nad vastavad küsimusele: Kas andmebaas on kehtivas olekus? Teisisõnu, need piiravad andmebaasi sisu kui vaadata ühel ajahetkel. Ja see töötab suurepäraselt andmebaasi jaoks, mis asub ühes organisatsioonis, sest piirangute põhiülesanne on programmeerija vigade vältimine. Kui üks WidgetCo siserakendustest üritas kataloogi sisestada 3-kohalist telefoninumbrit, ei ole selle põhjuseks pahatahtlikkus, vaid pigem viga arendaja mõtlemises või koodis. Andmebaasi võime neid vigu tabada on kahtlemata mugav ja aitab vältida halva teabe levikut organisatsiooni sees, kuid see ei lahenda usaldusprobleeme. (Piirangud võivad samuti aidata rakendusloogikat lihtsustada, näiteks kasutades võõrvõtme kaskaad or dubleerivad klauslid, kuid need on siiski vaid viisid arendajate abistamiseks.)

Andmebaasi jagamine

Mõelgem nüüd sellele, kuidas WidgetCo sisemist personalikataloogi välismaailmaga jagada. Paljudel juhtudel pole pakkumisega probleeme jagatud lugemist juurdepääs. Kataloogi saab eksportida tekstifaili ja saata e-postiga klientidele ja tarnijatele. Selle saab Internetti postitada, nii nagu see. Sellele võib anda isegi API, mis võimaldab otsida välise koodi järgi. Jagatud lugemine on tehniline segadus, otsustamise küsimus, kes mida näeb.

Kuid asjad hakkavad muutuma kleepuvamaks, kui mõtleme sellele jagatud kirjutamine. Mis siis, kui WidgetCo soovib välist üksust muutma selle andmebaas? Võib-olla asendab telefone PhoneCo, kes seejärel värskendab telefoninumbreid töötajate kataloogis. Sel juhul loob WidgetCo PhoneCo jaoks uue konto. Erinevalt WidgetCo sisekasutuse kontodest on PhoneCo kontol lubatud muuta ainult telefoninumbri veergu ning mitte kunagi lisada ega kustutada ridu. Kõiki PhoneCo tehinguid töötleb WidgetCo andmebaasisüsteem, mis rakendab nüüd kahte tüüpi piiranguid:

  • Globaalsed reeglid, mis kehtivad kõigile andmebaasi kasutajatele. Näiteks ei saa telefonifirma muuta numbrit nii, et see sisaldaks ainult 3 numbrit, ega ka keegi teine.
  • Kontopõhised reeglid, mis piiravad PhoneCo tegevust, muutes antud juhul ainult olemasolevate ridade telefoninumbrite veergu.

Siiamaani on kõik korras. Meil on ühine kirjutamisandmebaas. See toimib, kuna WidgetCo vastutab andmebaasi eest ja telefoniettevõte saab juurdepääsu WidgetCo heale armule. Kui PhoneCo hakkas telefoninumbreid juhuslikult määrama, saab WidgetCo sulgeda nende juurdepääsu, lõpetada lepingu ja taastada mõned vanad andmed varukoopiast. Ja kui WidgetCo hakkaks valesti käituma, näiteks PhoneCo sisestatud uued telefoninumbrid ümber pöörama, oleks see täiesti mõttetu, kuna see kahjustaks ainult WidgetCo-d endid. Telefonifirma peab WidgetCo-d omapäraseks kliendiks, kuid mitte eriti hoolivaks, kui nad tasunud arve õigeaegselt.

Kuid nüüd vaatame, mis juhtub, kui kaks või enam osapoolt soovivad jagada andmebaasi, mida (a) ükski osapooltest ei kontrolli, (b) kuhu ükski osapool saab kirjutada ja (c) millele kõik saavad tugineda. Asja hullemaks teeb, oletame, et neil osapooltel on erinevad stiimulid, nad ei usalda üksteist ja võivad olla isegi ägedad konkurendid. Sel juhul on lahendus alati olnud sama: tutvustada usaldusväärset vahendajat. See vahendaja haldab andmebaasi tsentraalselt, pakub kontosid kõigile osapooltele ja tagab, et kõik toimingud on teadaolevate reeglite järgi lubatud. Paljudel juhtudel, eriti rahalistel juhtudel, säilitab iga osapool siiski oma andmete koopia, nii et kõik kulutavad palju aega selle kontrollimisele. nende andmebaasid nõustuvad.

See kõik muutub üsna segaseks ja tülikaks. Aga kui me räägime a jagatud kirjutamisandmebaas piiratud usaldusega keskkonnas, praegu pole alternatiivi. See on üks peamisi põhjusi, miks finantstehinguid tehakse kesksed arvelduskojad, miks te kasutate Google Calendar isegi väikeses töörühmas ja miks see rahvahulgast pärit imestus on Wikipedia kulutab miljoneid dollareid hostimise kohta. Isegi kui veebi kasutajaliides liigub kliendi poolele, tsentraliseeritud serverid jätkavad andmete talletamist, millele need liidesed tuginevad.

Tõeline jagatud kirjutamine

Oletame, et tahtsime lubada andmebaasi jagada, kirjutamise mõttes, ilma keskasutuseta. Näiteks soovivad mitmed konkureerivad ettevõtted ühiste klientide huvides pidada ühist personalikataloogi. Kuidas see tegelikult välja näha võib? Noh, selleks oleks vaja mitmeid asju:

  • Tugev peer-to-peer võrk, mis võimaldab tehinguid luua mis tahes osapoolel ja levitada kiiresti kõikidesse ühendatud sõlmedesse.
  • Võimalus tuvastada tehingutevahelisi konflikte ja neid automaatselt lahendada.
  • Sünkroonimistehnoloogia, mis tagab, et kõik partnerid lähenevad andmebaasi identsele koopiale.
  • Meetod erinevatele osalistele erinevatele teabetükkidele kuuluvaks märgistamiseks ja sellise andmete omandivormi jõustamiseks ilma keskasutuseta.
  • Paradigma piirangute väljendamiseks, millised operatsioonid on lubatud, nt. et üks ettevõte ei paisuks kataloogi fiktiivsete kannetega.

vau. See on karm nimekiri ja tänapäevased valmisandmebaasid seda lihtsalt ei toeta. Praegune peer-to-peer replikatsioonitehnoloogia on kohmakas ja tal on kompleksne lähenemine konfliktide lahendamisele. Need andmebaasid, mis toetavad reapõhine turvalisus siiski nõuavad selle jõustamiseks keskasutust. Standardsed andmebaasitaseme piirangud, nagu kordumatud võtmed ja kontrollipiirangud, ei saa kaitsta andmebaasi pahatahtlike muudatuste eest. Lõpptulemus on järgmine:

Meil on jagatud kirjutamisandmebaaside töötamiseks vaja tervet hunnikut uut kraami ja see juhtub nii, et plokiahelad pakuvad neid.

Ma ei lasku liiga palju üksikasjadesse kuidas plokiahelad teevad neid asju, sest ma olen kattis suure osa sellest varem. Mõned põhielemendid hõlmavad tavalist peer-to-peer tehnikad, rühmitamine tehingud plokkideks, ühesuunaline krüptograafilised räsifunktsioonid, mitmepartei konsensuse algoritm, jagatud multiversioonide samaaegsuse kontroll ja reapõhised load avaliku võtme krüptograafia. Pikk nimekiri vanadest ideedest, mis on kombineeritud uuel viisil. HTML/HTTP, kui soovite.

Lisaks kõigile neile nõuavad jagatud kirjutamisandmebaasid täiesti uut tüüpi reeglit piirata teisendusi, mida tehing teha saab. See on absoluutselt oluline uuendus ja muudab kõik oluliseks, kui jagame andmebaasi mitteusaldusväärsete üksuste vahel. Seda tüüpi reegleid saab väljendada bitcoini stiilis tehingupiirangutena või Ethereumi stiilis jõustatavatena salvestatud protseduurid (“nutikad lepingud”), millest igaühel on eelised ja puudused. Võib-olla on veel paremaid viise, mis ootavad avastamist. Kuid nad kõik jagavad andmebaasi oleku sidumist enne ja pärast tehingu toimumist. Teisisõnu, nad vastavad küsimusele: Kas see oli kehtiv tehing? See erineb põhimõtteliselt küsimisest, kas andmebaas kehtib ühel ajahetkel.

Kui soovite teada, kas seda tüüpi andmebaasil on kasulikke reaalmaailma rakendusi, on see õiglane küsimus. Kuid võite märgata intensiivset huvi privaatsete plokiahelate vastu vähemalt üks sektor, kuna need võivad protsesse lihtsustada ning kulusid ja viivitusi vähendada. Finantsasutused on tänapäeva andmebaasiplatvormide suured kasutajad ja need platvormid ei võimalda jagatud kirjutamise stsenaariumi. Seda pangad otsivad.

Sellel probleemil ja selle lahendusel pole absoluutselt mingit pistmist bitcoini ja tsensuurivaba raha ideega. Tegelikult on ainus ühendus bitcoiniga tehniline sarnasus bitcoini plokiahela ja selle vahel, kuidas mõned neist privaatsetest plokiahelatest on rakendatakse täna. Üks peamisi erinevusi on see, et privaatseid plokiahelaid pole vaja töö tõend kaevandamine, kuna plokid loob tuvastatud osalejate suletud komplekt. Aja jooksul võivad need kaks maailma veelgi erineda, sest nende nõuded on täiesti erinevad. Ükskõik, kas teile meeldib finantsregulatsioon või mitte, on lihtne tõsiasi, et privaatsed plokiahelad on reguleeritud maailmas potentsiaalselt kasulikud, kuigi vähemalt praegu avalikud plokiahelad ei ole.

Kui ma võin lõpetada analoogiaga, siis ÜRO Deklaratsioon rahvusvahelise õiguse põhimõtete kohta ei ütle riikidele, et nad võivad omada mis tahes territooriumi, mida nad soovivad, kui see on ümbritsetud selgelt märgistatud aiaga. Pigem öeldakse, et "jõuga ähvardamisest või jõu kasutamisest tulenevat territoriaalset omandamist ei tunnistata seaduslikuks". Teisisõnu, see on seaduspärasuse reegel muutused, mitte ainult olukordades. Ja ÜRO deklaratsioon, mis meile praegu nii enesestmõistetav tundub, oli täielik revolutsioon rahvusvahelises õiguses. See tähendas maailma, mis ei põhine enam ühepoolsel võimul ja autoriteedil, vaid sellist, kus erimeelsusi saab lahendada vastastikusel konsensusel.

Kui rääkida jagatud andmebaasidest, siis privaatsed plokiahelad teevad täpselt sama asja.

Ajatempel:

Veel alates Mitmeharuline