Allikas: https://ethereumworldnews.com/blockchain-technology-will-affect-your-future-wäis-you-like-it-or-not/

Millised on erinevused Ethereumi, Hyperledger Fabrici ja Hyperledger Sawtoothi ​​vahel?

Olles läbi viinud mitu blockchain-seminari, palutakse mul sageli selgitada erinevusi Ethereumi, Hyperledger Fabrici ja Hyperledger Sawtoothi ​​vahel.

Nende võrdlemiseks on mitmeid viise. Selle ajaveebi jaoks kirjeldan tehnilisi erinevusi kõrgel tasemel. Selle ajaveebi eesmärk on pakkuda teile piisavalt fakte erinevuste hindamiseks ja kvalitatiivse hinnangu andmiseks tugineda neile faktidele. Eelkõige siis, kui on vaja valida, millist plokiahelat kasutada.

Siinse arutelu tehnilise olemuse tõttu eeldatakse, et teil on arvutustehnika põhiteadmised.

Plokiahela vaimne pilt

Enne kui me kaalume erinevusi, kavatsen ma luua algse vaimse pildi plokiahelast. Alustame vastusega kahele küsimusele:

  • Mis on kett?
  • Milline probleem on plokiahela lahendamiseks mõeldud?

Mis on kett?

Plokiahelat nimetatakse erinevalt

  • “Hajutatud, detsentraliseeritud, avalik pearaamat” [1].
  • "Põhimõtteliselt on plokiahela plokkide seeria, mis sisaldab andmeid ja millel on eelmise ploki räsi- ja räsi number" [2]

Kahjuks ei paku kumbki neist määratlustest vajalikku vaimset pilti, mida peame aitama mõista Ethereumi, Kanga ja Sawrobi erinevusi.

Mõelge selle ajaveebi jaoks plokiahelast kui arvutiplatvormide või sõlmede võrgustikust. Iga sõlme keskmes on:

  • nutikas leping / ahelkood / tehinguprotsessor (mugavuse huvides kasutan mõistet „nutikas leping” kõigi sõnadena) - see on põhimõtteliselt arvutil põhinev äriloogika, mis reguleerib kahe või enama osapoole vahelisi äritehinguid;
  • pearaamat - on krüptograafiliselt turvatud plokkide ahelad (st plokiahelad), kus iga plokk sisaldab viiteid nutika lepingu aspektidele, mida me tahaksime, et sõlm arvutaks;
  • kontod / maailmariik / globaalne olek - on andmehoidla, mis hoiab püsivalt asjade (nt raha, majad, teadmised jne) olekut, mis on osa äritehingutest - mõiste, mida määratleme hiljem.

Milline probleem on plokiahela lahendamiseks mõeldud?

Plokiahela eesmärk on üldjoontes kajastada äritehinguid kahe või enama osapoole vahel. Äritehing on toiming, mille tulemuseks on oleku muutumine (näiteks maja omaniku muutus või teiselt osapoolelt teadmisi omandav osapool jne). Tehingute töötlemise süsteeme on palju, miks me vajame blockchaini?

Erinevalt paljudest tavapärastest tehingute töötlemise süsteemidest sobib plokiahel kõige paremini probleemide lahendamiseks, kus:

  • tehingu lõplikkus on deterministlik;
  • vaja on tehingu ja kõigi eelnevate lähtekohta;
  • tehingute kirjed on muutumatud;
  • tehingute dokumente tuleb töödelda detsentraliseeritult.

Samuti on blockchainil oluline funktsioon, mis muudab selle tavapärasest tehingute töötlemise süsteemist erinevaks; tehinguid ei toimu tehingupoolte vahel otse.

Kujutame näiteks ette äritehingut kahe osapoole - Johannese ja Pauli - vahel, kus John lubab maksta Paulusele hüpoteetilise blockchain-võrgu kaudu mingi summa raha. Sel juhul ei saada John Paulile otse sõnumit, nagu te vestlusrakenduses teeksite.

Selle asemel kirjutab John välja ja saadab nutikas lepingus teate oma sõlme, teatades sõlmele funktsiooni "pay" kutsumiseks (vt allpool pseudokoodi). Johnilt nõutakse ka sõnumi krüptograafilist allkirjastamist - see on midagi traditsioonilist tehingute töötlemise süsteemi, mis tavaliselt ei nõua.

Leping{
  saaja konto
  maksja konto
  // arvutiga käivitatav maksetehing
  maksma (saaja, maksja, summa)
}

Johnile kuuluv sõlme saadab sõnumeid kõigile võrgusõlmedele, näidates, et ta soovib, et kõik sõlmed täidaksid maksmise funktsiooni. Vastuvõtvad sõlmed ei teosta veel taotletud funktsioonikõnet. Funktsioonikõne tuleb pakkida plokki.

Plokk sisaldab mitte ainult Johannese ja Pauli vahelisi tehinguid, vaid ka potentsiaalselt mitmeid muid tehingukombinatsioone, mis toimuvad plokiahela võrgus (vt allpool pseudokoodi, mis illustreerib bloki sisu).

Blokeeri {
  plokiID: räsi
  tehingud: [{
    functionName: "maksma"
    argumendid: ["Paulus", "Johannes", "1 dollar"]
    allkiri: väärtus,
    ....},
    {}, ..]
  previousBlockID: räsi
}

Kui plokk on täidetud kõigi tehinguteadetega, edastatakse see kõigile võrgu sõlmedele, kaasa arvatud Johannese ja Pauluse võrgud. Blokeeringu saamisel vastutavad Jaani ja Pauli sõlmpunktid funktsiooni „maksma” maksmise ja oma kontode värskendamise eest; üksteisest sõltumatult ja potentsiaalselt täidetakse erinevates ajaraamides. Seejärel tekib küsimus: kuidas tagavad kõik sellises detsentraliseeritud süsteemis olevad sõlmed, et nende pearaamatud oleksid järjepidevad (s.t jõuaksid konsensusele)?

Üksmeele saavutamiseks on mitu viisi; Ethereum, Fabric ja Sawtooth kasutavad erinevaid algoritme, mida me siin uurime.

Ethereum

Ethereum on ülekoormatud termin; see võib tähendada tehnoloogiate klassi, mis põhineb põhitehnoloogial, mida nimetatakse Ethereumi virtuaalmasinaks (EVM), või plokiahelavõrku, mida haldab Ethereumi projekt. Sellega seoses pean silmas viimast - Ethereumi võrku.

Ethereumi võrk on loodud toimima avaliku võrguna. See tähendab, et iga Ethereumi sõlm on leitav ja teada kõigile võrgusõlmedele.

See tähendab ka seda, et igal sõlmel on sama pearaamatu koopia. Igal sõlmel on teiste sõlmedega täielikult detsentraliseeritud suhted. Teisi sõlmi juhtivat peasõlme pole. Iga sõlm lihtsalt teavitab teisi sõlmi teostatavate tehingute tüüpidest ja nende täitmise järjekorrast.

Kõik Ethereumi võrgu kasutajad suhtlevad teiste sõlmedega nutikate lepingute kaudu, mis tuleb igasse sõlme “installida”. Nutika lepingu installimise protsess sarnaneb sellega, kuidas Ethereumi võrgus osapooled tehinguid algatavad. Näiteks allkirjastab lepingukirjutaja krüptograafiliselt oma lepingu ja edastab selle oma sõlme kaudu kõigile Ethereumi võrgu sõlmedele. Seejärel salvestatakse leping mõnes adresseeritavas andmehoidlas võrgus.

Märkus. Plokiahelas olevad plokid ei ole andmehoidlad! Plokk sisaldab ainult nutika lepinguga kutsutava funktsiooni kirjeldusi. Ethereumi andmesalvestus on püsivõtmed, näiteks LevelDB

Vaatame uuesti ülalkirjeldatud Johannese ja Pauli tehinguid. Ethereumi võrgu kontekstis saadab ja krüptograafiliselt kirjutab John oma sõlmele sõnumi käsuga 'maksta'. Seejärel paigutab sõlm selle teate tehingukogumisse.

Võrgus on mõned sõlmed (tuntud kui demineerijad) vabatahtlikult Johanneselt saadud sõnum plokkideks pakkimiseks ja seejärel ploki lisamiseks plokiahelasse. Kuna Ethereumi võrgus on rohkem kui üks kaevandaja; antud kaevandajale pakutakse seda eesõigust ainult siis, kui kaevandaja on juhuslikult genereeritud mõistatuse lahendamiseks teinud arvukalt arvutusi - see on mehhanism, mida nimetatakse töö tõenduseks. Kaevandajat premeeritakse ka mõne krüptovaluutaga töö eest (tuntud kui Gaas), mis on vajalik kontrollimaks, kas tehingud annavad püsivaid tulemusi.

Märkus. Kõik Ethereumi võrgu sõlmed tuginevad pearaamatule, tagamaks, et nende konto oleku muutused oleksid kooskõlas muude sõlmedega. Kaevurid korravad plokketti kapseldatud juhiseid ja võrdlevad üksmeelt enne ja pärast olekut.

Kui kaevandaja täidab ülesande lisada tehing plokki ja lisada see plokiahelasse, edastatakse ahel kõigile võrgu sõlmedele. Seejärel vastutavad kõik vastuvõtvad sõlmed oma andmehoidlate või kontode iseseisva värskendamise eest. Kaevuritevälised sõlmed tagavad ka üksmeele, korrates plokiahelasse kapseldatud tehinguid.

Hyperledger kangas

Kangas kuulub plokkkettide klassi, mida tuntakse kui lubatud plokiahelaid. Kangavõrgus pole sõlmed üksteise poolt avalikult leitavad. Sõlmede omanikud - tavaliselt mõned ettevõtlusorganisatsioonid - peavad nõustuma, et nad lubavad oma sõlmedel üksteisele sõnumeid saata.

Märkus: täpsem on vaadelda tehingupartnereid tegutsevatena äriorganisatsioonide vahel. Igal organisatsioonil võib olla üks või mitu sõlme. Fabrici abil saate konfigureerida sõlmi konkreetsete ülesannete täitmiseks, näiteks kliendisõlm lõppkasutajatega suhtlemiseks või sõlmede kinnitamine jne.

Alates versioonist 1.0 põhineb sõlmede üksteise teavitamiseks lubamisel X.509 sertifikaatide kasutamine. Selle mudeli puhul nõustuvad kõik osalevad organisatsioonid kasutama ühist juursertifikaati, nagu näiteks Verisign väljaantud, et kontrollida, kas osapooltel on lubatud omavahel tehinguid teha.

Märkus: kasutada võib ka muid loamehhanismide vorme. Alates selle ajaveebi avaldamisest on X.509 saadaval väljastpoolt.

Kangasõlmega suhtlevatel lõppkasutajatel peab olema lubatud ka kangavõrgus tehinguid teha. Kasutajaloa kureerib organisatsioon, kuhu nad kuuluvad. Iga organisatsioon haldab oma kasutajaid iseseisvalt. Kõigi Fabric-võrgu kasutajate haldamiseks pole vaja tsentraliseeritud asutust, kuid kui võrgus osalejad otsustavad omada keskset autoriteeti, saab selle seda konfigureerida.

Kui ühe organisatsiooni kasutaja soovib teha tehinguid teise organisatsiooni teise kasutajaga, sarnaneb protsess Ethereumi protsessiga, välja arvatud asjaolu, et on olemas kolm sammu - kinnitamine, tellimine ja kohustus (ametlik Fabrici dokumentatsioon viitab sellele protsessile nagu käivitamine, tellimine ja kinnitamine).

Sel juhul saadab kasutaja tehingu kangavõrgus mõnele või kõigile sõlmedele (tuntud kui kinnitamissõlm). Kinnitavad sõlmed kuuluvad erinevatele organisatsioonidele.

Kinnitava sõlme ülesanne on kontrollida tehingu allkirja ja simuleerida tehingu täitmist. Kui kõik kinnitavad sõlmed loovad ühtlase oleku ja nad edastavad tulemused tagasi saatva kliendi sõlme. Seejärel saadab kliendisõlm tulemused tellimussõlmele, kelle ülesanne on tehing blokeerida.

Tellimissõlm lisab tehingu põhimõttel „kes ees, see mees” (tuntud ka kui soolo). Plokkide tellimise alternatiivne lähenemisviis on kasutada Kafka sõnumsidetehnoloogiat, et lisada plokile tehing. Kui kõik tehingud on sõlme lisatud ja plokiahelale lisatud, edastab tellimussõlm plokiahela kõigile võrgus olevatele sõlmesõlmedele, kes vastutavad igaüks oma andmehoidla (tuntud ka kui maailmariik) värskendamise eest.

Märkus. Tellimussõlmi haldab tavaliselt mõni muu organisatsioon, mis on valitud kangavõrgu neutraalseks osaks.

Ahelkoodide paigaldamisel - kanga nutika lepingu tähtajaks - tegemist on kaheastmelise protsessiga: installimine (kettside tuleb saata igale osalevale organisatsioonile; seejärel vastutab kettkoodi paigaldamise eest iga organisatsioon oma sõlmedesse). Sellele järgneb kiirustamisprotsess, kus kutsutakse erifunktsiooni kutset „init“. Algaja kutsumine käivitas äsja installitud ahelkoodi.

Kanga ainulaadne aspekt on võime lubada sõlmede rühmad eraldi „kanalitesse”. Ühele kanalile kuuluvad sõlmed ei saa teise kanaliga tehinguid teha.

Märkus. Mõiste kanal põhjustab sageli segadust. Sageli peetakse seda lõpptarbijate vahelise erasuhtluse mingiks kanaliks (nt Pauluse ja Johannese vahel). See pole nii. Täpsem on mõelda kanalitele kui ühise pearaamatu sõlmede (või alamvõrkude) kogumile ja tellimissõlmel on lubatud suhelda (st saata plokid) sõlmpunktidega, millel on lubatud kanalil osaleda.

Hyperledger Sawtooth

Sawtooth on ainulaadne blockchain. Seda saab konfigureerida toimima nagu avalik võrk või lubade võrk. Väljastpoolt sobib see aga pigem kasutamiseks lubatud keskkonnas.

Ethereumi nutileping ja Fabrici ahelkood on koodide kogu, mis tähistab kahe tehingupoole vahelist lepingulist lepingut. Sawtoothi ​​puhul on kontseptuaalne vaste tuntud kui tehinguprotsessor. Te loote ja installite tehinguprotsessori sarnaselt tavalise rakendusega.

Märkus. Ma hoiaksin, kui tehingute töötlejat ei vaadata nutika lepingu või vähemal määral ahelkoodi otsese ekvivalendina. Täpsem on vaadata tehinguprotsessorit arvutiplatvormina, mis võimaldab nutikaid lepinguid täita. Sawtoothil on omamoodi tehinguprotsessor - tuntud kui Sethi tehinguprotsessor, mis põhineb Hyperledger Burrow Ethereumi virtuaalmasinal (EVM). See võimaldab tal hallata Ethereumi nutilepingut, mis on kirjutatud keeles, mis on tuntud kui Solidity.

Mineri või tellimissõlme ekvivalent on Sawtoothi ​​valideerija. Valideerija ülesanne on kontrollida ja veenduda, et tehingul (või täidetavale tehingule osutaval sõnumil) on kehtiv allkiri ja seejärel suunata see vastavale tehinguprotsessorile. Tehingute töötleja rakendatud äriloogika vastutab selle eest, et tehingut töödeldakse õigesti.

Kui tehinguprotsessor on lõpetanud oma äriloogika valideerimise, saadetakse teade tagasi valideerijale, kes vastutab seejärel tehingu pakkimise eest plokki pakkimise ja selle plokiahelasse lisamise eest, samuti edastamisega teistele valideerijatele tagamaks, et kõigil sõlmedel on ühine seisukoht - st jõuda konsensusele. Lisaks tehingute pakkimiseks plokkidesse vastutab ka globaalse oleku (s.o Merkle puupõhine andmehoidla) värskendamise eest.

Sawtoothi ​​ainulaadne omadus on võime grupeerida tehingud partiideks. Tehingupartii saab pakkida plokki. Seega antakse Sawtoothile võimalus keerukate tehingutega hakkama saada. Kujutage ette stsenaariumi, kus John müüb oma autot Paulile. See võib hõlmata mitmeid seotud tehinguid:

  • Raha vahetamine;
  • Mõnes reguleerivas üksuses registreeritud omandiõiguse üleminek;
  • Kindlustuspoliisi ülekandmine.

Nende tehingute töötlemiseks saate konfigureerida spetsialiseerunud tehinguprotsessoreid. Kuid kõik need tehingud peavad kas õnnestuma või ebaõnnestuvad paketina - teisisõnu peavad tehingud vastama aatomi, järjepidevuse, eraldatuse ja vastupidavuse (ACID) põhimõttele.

Samuti saate konfigureerida omandiõiguse ja kindlustuspoliisi ülekandmisega seotud tehingud nii, et need teostatakse paralleelselt rahavahetuse tehinguga, mis tuleb teostada alles pärast nende edukat lõpuleviimist. Ja kui raha vahetamine on õnnestunud, on kogu tehinguportfell rahuldanud ACID põhimõtte.

Lõpuks saate Sawtoothi ​​konfigureerimiseks kas avalikeks või lubatud toiminguteks kasutada väljundseadistuste tehinguprotsessorit, et suunata klientide liiklus vastavalt teie konfiguratsioonile; aktsepteerida tehinguid mis tahes võrgus asuvalt kliendilt (võimaldades sellega Sawtoothil töötada nagu avalik plokiahel) või piirata seda lubavate klientide (st volitatud plokiahelate) klientide sõnumeid.

Märkus. Saate asendada sätete tehinguprotsessori omaenda juurutamisega, et lisada keerukama loa algoritmi, et tulla toime avaliku võrgu nõudmistega.

Sawtoothi ​​võrgus pole ühte valideerijat, neid on palju. Sarnaselt Ethereumi kaevuritele saab plokki värskendada korraga ainult üks valideerija. Kuid erinevalt Ethereumi tõendist töötamise kohta kasutab Sawtooth väljastpoolt algoritmi, mis on tuntud kui Proof of Alenpsed Time (PoET), et valida valideerija plokiahela värskendamiseks. PoET-i lihtsustatud vaade tähendab, et kõik võrgu valideerijad on magavad ja juhuslikult esimestena, kes äratavad end aktiivseks valideerijaks.

Märkus. Võite kasutada ka muud konsensuse algoritmi, näiteks RAFT või PBFT. Selle ajaveebi avaldamise ajal on need väljatöötamisel.

Järeldus

See on üsna kõrge ülevaade erinevustest Ethereumi, Hyperledger Fabrici ja Hyperledger Sawtoothi ​​vahel. Kokku võtma:

  • Ethereum on avalik plokiahel (kõik sõlmed on täielikult detsentraliseeritud), kus tehingud tellitakse (kaevandajate kaudu) ja üksikud sõlmed vastutavad värskendamise eest. Kaevandajad võidavad õiguse uuendada plokiahelat protsessi kaudu, mida tuntakse kui tõendit töö kohta.
  • Fabric on lubatud plokiahel, kus sõlmed on teistele sõlmedele teada ainult siis, kui sõlmede omanikud (tavaliselt ettevõtluse korraldamise üksus) lubavad sõlmede üksteisele leitavaks teha (alates versioonist 1.0 põhineb see X.509 sertifitseerimisprotsessil). Tehinguid teostatakse selles järjestuses; kinnitamine, tellimine ja kohustus. Plokid tellitakse põhimõttel „kes ees, see mees” (soolo) või Kafka mehhanismi alusel. Seega ei ole sõlmede tellimine tegelikult täielikult detsentraliseeritud. Soolo konfiguratsiooni korral on võrgu jaoks ainult üks tellimussõlm. Kafka konfiguratsioonis võidakse tellimissõlme levitada, kuid oma töö tegemiseks on endiselt vaja Kafka tsentraliseeritud mehhanismi. Juursertifikaadi kasutamine tutvustab ka ühte tõrkeallikat.
  • Sawtooth võib sõltuvalt selle konfiguratsioonist töötada kas avaliku (kuid teatud piirangutega) või lubatava plokiahelana. Kõik sõlmed on täielikult detsentraliseeritud isegi loakonfiguratsioonis. Vaikimisi kasutab see PoET-i tehingute valideerimise sõlmede valimiseks. Saate grupeerida mitu tehingut partiideks ja konfigureerida tehinguid vajadusel paralleelselt teostama.

Kohustustest loobumine

Neid tehnoloogiaid arendatakse pidevalt, võite eeldada, et mõned siin kirjeldatud aspektid on muutunud.

Viited

[1] https://www.investopedia.com/terms/b/blockchain.asp

[2] https://101blockchains.com/blockchain-vs-linked-list/

Klõpsake, et lugeda tänase päeva parimat lugu