Hyperledger efni fyrir imba

Blockchain vettvangur fyrir fyrirtækið

Hyperledger efni fyrir imba

Góðan daginn, kæru lesendur, ég heiti Nikolay Nefedov, ég er tæknifræðingur hjá IBM, í þessari grein langar mig að kynna ykkur blockchain vettvanginn - Hyperledger Fabric. Vettvangurinn er hannaður til að byggja upp fyrirtækjaforrit í fyrirtækjaflokki. Stig greinarinnar er fyrir óundirbúna lesendur með grunnþekkingu á upplýsingatæknitækni.

Hyperledger Fabric er opinn uppspretta verkefni, ein af útibúum opins uppspretta Hyperledger verkefnisins, hóps Linux Foundation. Hyperledger Fabric var upphaflega stofnað af Digital Assets og IBM. Helsti eiginleiki Hyperledger Fabric vettvangsins er áhersla hans á fyrirtækjanotkun. Þess vegna var vettvangurinn þróaður með hliðsjón af miklum hraða viðskipta og litlum kostnaði þeirra, svo og auðkenningu allra þátttakenda. Þessum kostum er náð með aðskilnaði sannprófunarþjónustunnar og myndun nýrra blokka dreifðrar skrásetningar, svo og notkun vottunarmiðstöðvar og heimild þátttakenda.

Grein mín er hluti af greinaröð um Hyperledger Fabric, þar sem við lýsum kerfisverkefni til að skrá nemendur inn í háskóla.

Almennur arkitektúr Hyperledger Fabric

Hyperledger Fabric er dreift blockchain net sem samanstendur af ýmsum hagnýtum hlutum sem eru settir upp á nethnútum. Hyperledger Fabric íhlutir eru Docker gámar sem hægt er að hlaða niður ókeypis frá DockerHub. Hyperledger Fabric er einnig hægt að keyra í Kubernetes umhverfi.

Til að skrifa snjalla samninga (keðjukóða í samhengi við Hyperledger Fabric) notuðum við Golang (þótt Hyperledger Fabric leyfi notkun annarra tungumála). Til að þróa sérsniðið forrit, í okkar tilviki, notuðum við Node.js með samsvarandi Hyperledger Fabric SDK.

Hnútarnir framkvæma viðskiptarökfræði (snjallsamningur) - keðjukóða, geyma stöðu dreifðrar skrásetningar (bókargögn) og framkvæma aðra kerfisþjónustu vettvangsins. Hnútur er aðeins rökrétt eining; mismunandi hnútar geta verið til á sama líkamlega netþjóninum. Miklu mikilvægara er hvernig hnútarnir eru flokkaðir (Trusted domain) og hvaða aðgerðir blockchain netsins þeir tengjast.

Almennur arkitektúr lítur svona út:

Hyperledger efni fyrir imba

Mynd 1. Almenn arkitektúr Hyperledger Fabric

Notendaforrit (Submitting Client) er forrit sem notendur vinna með blockchain netið með. Til að vinna þarftu að hafa heimild og hafa viðeigandi réttindi fyrir ýmiss konar aðgerðir á netinu.

Jafnaldrar koma í nokkrum hlutverkum:

  • Samþykki jafningi er hnút sem líkir eftir framkvæmd viðskipta (framkvæmir snjallsamningskóðann). Eftir sannprófun og framkvæmd snjallsamningsins skilar hnúturinn framkvæmdarniðurstöðum til viðskiptavinaforritsins ásamt undirskrift sinni.
  • Pöntunarþjónusta er dreifð þjónusta á nokkrum hnútum, notuð til að búa til nýjar blokkir í dreifðu skránni og búa til biðröð fyrir framkvæmd viðskipta. Pöntunarþjónusta bætir ekki nýjum kubbum við skrána (Þessi eiginleiki hefur verið færður í Committing Peers til að bæta árangur).
  • Committing Peer er hnút sem inniheldur dreifða skrásetningu og bætir nýjum kubbum við skrána (sem voru búnar til af pöntunarþjónustunni). Allir skuldbindandi jafningjar innihalda staðbundið afrit af dreifðu höfuðbókinni. Committing Peer athugar allar færslur innan reitsins fyrir gildi áður en nýrri reit er bætt við á staðnum.

Áritunarstefna er stefnan til að athuga gildi viðskipta. Þessar reglur skilgreina áskilið sett af hnútum sem snjallsamningurinn verður að framkvæma á til að viðskiptin verði viðurkennd sem gild.

Dreifða skráin - Lerger - samanstendur af tveimur hlutum: WolrldState (einnig kallað State DataBase) og BlockChain.

BlockChain er keðja af blokkum sem geymir skrár yfir allar breytingar sem hafa orðið á dreifðum skrásetningarhlutum.

WolrldState er dreifður höfuðbókarhluti sem geymir núverandi (framsækið) gildi allra dreifðra höfuðbókarhluta.

WorldState er gagnagrunnur, í grunnútgáfu - LevelDB eða flóknari - CouchDB, sem inniheldur lykilgildapör, til dæmis: Fornafn - Ivan, Eftirnafn - Ivanov, skráningardagur í kerfinu - 12.12.21/17.12.1961/XNUMX , fæðingardagur - XNUMX, o.fl. WorldState og dreifða skráin verða að vera í samræmi meðal allra þátttakenda í tiltekinni rás.

Þar sem Hyperledger Fabric er net þar sem allir þátttakendur eru þekktir og auðkenndir, notar það sérstakt vottunaryfirvald - CA (Certification Authority). CA starfar á grundvelli X.509 staðalsins og almenningslykilinnviði - PKI.

Aðildarþjónusta er þjónusta þar sem meðlimir sannreyna að hlutur tilheyri tiltekinni stofnun eða rás.

Færsla - í flestum tilfellum er að skrifa ný gögn í dreifða skráningu.
Það eru líka viðskipti til að búa til rásir eða snjallsamninga. Færslan er hafin af notendaforritinu og lýkur með skráningu í dreifðu höfuðbókinni.

Rás er lokað undirnet sem samanstendur af tveimur eða fleiri blockchain net þátttakendum, hannað til að framkvæma trúnaðarviðskipti innan takmarkaðs en þekkts hóps þátttakenda. Rásin er ákvörðuð af þátttakendum, dreifðri skráningu hennar, snjöllum samningum, pöntunarþjónustu, WorldState. Hver þátttakandi í rásinni þarf að hafa heimild til aðgangs að rásinni og hafa rétt til að framkvæma ýmis konar viðskipti. Heimild fer fram með aðildarþjónustunni.

Dæmigerð viðskiptaframkvæmd atburðarás

Næst langar mig að tala um dæmigerða framkvæmd viðskipta atburðarás með því að nota verkefnið okkar sem dæmi.

Sem hluti af innra verkefni okkar stofnuðum við Hyperledger Fabric netið, sem er hannað til að skrá og gera grein fyrir nemendum sem fara inn í háskóla. Netið okkar samanstendur af tveimur stofnunum sem tilheyra háskólanum A og háskólanum B. Hver stofnun inniheldur viðskiptavinaumsókn, auk eigin skuldbindingar og samþykkis jafningja. Við notum einnig almennu þjónusturnar pöntunarþjónustu, aðildarþjónustu og vottunaryfirvöld.

1) Upphaf viðskipta

Notendaforrit, sem notar Hyperledger Fabric SDK, setur af stað færslubeiðni og sendir beiðnina til hnúta með snjallsamninga. Beiðnin getur verið að breyta eða lesa úr dreifðri skráningu (Ledger). Ef við skoðum dæmi um uppsetningu prófunarkerfisins okkar fyrir bókhald fyrir háskólanema, sendir viðskiptavinaforritið viðskiptabeiðni til hnúta háskóla A og B, sem eru innifalin í áritunarstefnu hins kallaða snjallsamnings. Hnútur A er hnútur sem er staðsettur í háskólanum sem skráir komandi nemanda og hnútur B er hnútur sem er staðsettur í öðrum háskóla. Til þess að hægt sé að vista viðskipti í dreifðri skráningu er nauðsynlegt að allir hnútar sem, samkvæmt viðskiptarökfræði, verða að samþykkja viðskiptin, framkvæmi snjalla samninga með sömu niðurstöðu. Hnúturinn Notendaforrit, sem notar Hyperledger Fabric SDK tólin, fær áritunarstefnuna og lærir til hvaða hnúta á að senda viðskiptabeiðni. Þetta er beiðni um að kalla fram sérstakan snjallsamning (keðjukóðaaðgerð) til að lesa eða skrifa ákveðin gögn í dreifða skráningu. Tæknilega notar SDK viðskiptavinarins samsvarandi aðgerð, API sem fær ákveðinn hlut með færslubreytum, og bætir einnig við undirskrift viðskiptavinar og sendir þessi gögn í gegnum samskiptareglur biðminni yfir gRPC til viðeigandi hnúta (samþykkja jafningja).

Hyperledger efni fyrir imba
Mynd 2. Að hefja viðskipti

2) Framkvæmd snjallsamnings

Hnútar (endorsing peers), eftir að hafa fengið beiðni um að framkvæma viðskipti, athuga undirskrift viðskiptavinarins og ef allt er í lagi, taka þeir hlut með beiðnigögnunum og keyra eftirlíkingu af framkvæmd snjallsamnings (keðjukóðaaðgerð) með þessi gögn. Snjall samningur er viðskiptarökfræði viðskipta, ákveðið sett af skilyrðum og leiðbeiningum (í okkar tilfelli er þetta staðfesting á nemanda, er þetta nýr nemandi, eða er hann þegar skráður, aldursstaðfesting osfrv.). Til að framkvæma snjallsamninginn þarftu einnig gögn frá WorldState. Sem afleiðing af því að líkja eftir snjöllum samningi á samþykkjandi jafningja, fást tvö sett af gögnum - Lessett og Skrifsett. Read Set og Write Set eru upprunalegu og nýju WorldState gildin. (nýtt - í þeim skilningi sem fæst við eftirlíkingu á snjöllum samningi).

Hyperledger efni fyrir imba
Mynd 3. Framkvæmd snjallsamnings

3) Skila gögnum til viðskiptavinaforritsins

Eftir að hafa framkvæmt eftirlíkingu á snjallsamningnum, skila áritunarfélögum upprunalegu gögnunum og niðurstöðu uppgerðarinnar, sem og RW-settinu, undirritað með skírteini þeirra, til viðskiptavinaforritsins. Á þessu stigi eiga sér engar breytingar sér stað í dreifðu skránni. Biðlaraforritið athugar undirskrift jafningja og ber einnig saman upprunalegu viðskiptagögnin sem voru send og gögnin sem voru skilað (þ.e. það athugar hvort upprunalegu gögnin sem aðgerðin var líkt eftir hafi verið brengluð). Ef viðskiptin voru aðeins til að lesa gögn úr skráningunni, þá fær viðskiptavinaforritið í samræmi við það nauðsynlega lestrarsett og þetta lýkur venjulega viðskiptunum með góðum árangri án þess að breyta dreifðu skránni. Ef um er að ræða færslu sem þarf að breyta gögnum í skránni, athugar viðskiptavinaforritið að auki framkvæmd áritunarstefnunnar. Hugsanlegt er að biðlaraforrit kanni ekki niðurstöðuna af framkvæmd áritunarstefnunnar, en Hyperledger Fabric vettvangurinn í þessu tilfelli gerir ráð fyrir að athuga stefnur á hnútum (Committing Peers) á því stigi að færslu er bætt við skrárinn.

Hyperledger efni fyrir imba
Mynd 4. Skilagögnum í biðlaraforritið

4) Sendi RW sett til pöntunarfélaga

Viðskiptavinaforritið sendir færsluna ásamt meðfylgjandi gögnum til pöntunarþjónustunnar. Þetta felur í sér RW-settið, samþykkja undirskrift jafningja og auðkenni rásarinnar.

Pöntunarþjónusta – byggt á nafninu er meginhlutverk þessarar þjónustu að raða inn færslum í réttri röð. Eins og myndun nýrrar blokkar dreifðu skrárinnar og tryggð afhending nýrra myndaðra blokka til allra Commiting hnúta, sem tryggir gagnasamkvæmni á öllum hnútum sem innihalda dreifða skrárinn (Committing peers). Á sama tíma breytir pöntunarþjónustan sjálf ekki skrásetningunni á nokkurn hátt. Pöntunarþjónusta er mikilvægur hluti kerfisins, svo það er þyrping nokkurra hnúta. Pöntunarþjónustan athugar ekki gildi færslunnar, hún tekur einfaldlega við færslu með ákveðnu rásaauðkenni, raðar mótteknum færslum í ákveðinni röð og myndar nýjar blokkir af dreifðri skránni úr þeim. Ein pöntunarþjónusta getur þjónað nokkrum rásum samtímis. Pöntunarþjónustan inniheldur Kafka þyrping, sem heldur réttri (óbreytanleg) færsluröð (sjá lið 7).

Hyperledger efni fyrir imba
Mynd 5. Sendi RW sett til að panta jafningja

5) Senda myndaðar blokkir til Committing Peer

Blokkir sem myndast í pöntunarþjónustunni eru sendar (útvarpað) til allra nethnúta. Hver hnútur, eftir að hafa fengið nýjan blokk, athugar hvort hann sé í samræmi við áritunarstefnuna, athugar hvort allir áritunarjafningjar hafi fengið sömu niðurstöðu (skrifsett) vegna snjallsamningsuppgerðarinnar og athugar einnig hvort upprunalegu gildin hafi breytt (þ.e. Read Set - gögn lesin af snjallsamningnum frá WorldState) frá því augnabliki sem viðskiptin voru hafin. Ef öll skilyrði eru uppfyllt er færslan merkt sem gild, annars fær færslan stöðuna ógild.

Hyperledger efni fyrir imba
Mynd 6. Sendir myndaðar blokkir til Committing Peer

6) Bæti blokk við skrásetninguna

Hver hnút bætir viðskiptum við staðbundið eintak sitt af dreifðu skránni, og ef viðskiptin eru gild, þá er skrifsettið notað á WorldState (núverandi ástand), og í samræmi við það, ný gildi hlutanna sem voru fyrir áhrifum af viðskipti eru skrifuð. Ef færsla fékk tákn sem er ekki gilt (td tvö viðskipti áttu sér stað með sömu hlutina innan sömu blokkar, þá mun ein af viðskiptunum reynast ógild, þar sem upprunalegu gildunum hefur þegar verið breytt af öðrum viðskipti). Þessari færslu er einnig bætt við dreifða höfuðbókina með ógildu tákni, en skrifsetti þessarar færslu er ekki notað á núverandi heimsríki og breytir því ekki hlutunum sem taka þátt í færslunni. Eftir þetta er tilkynning send í notendaforritið um að færslunni hafi verið varanlega bætt við dreifða skráninguna, sem og stöðu færslunnar, það er hvort hún sé gild eða ekki...

Hyperledger efni fyrir imba
Mynd 7. Bæti blokk við skrásetninguna

PANTAÞJÓNUSTU

Pöntunarþjónustan samanstendur af Kafka þyrpingu með samsvarandi ZooKeeper hnútum og pöntunarþjónustuhnútum (OSN), sem standa á milli pöntunarþjónustu viðskiptavina og Kafka þyrpingarinnar. Kafka þyrping er dreifður, villuþolinn flæði (skilaboð) stjórnunarvettvangur. Hver rás (efni) í Kafka er óbreytanleg röð af færslum sem styður aðeins að bæta við nýrri færslu (ekki er hægt að eyða núverandi færslu). Skýring á efnisskipaninni er sýnd hér að neðan. Það er þessi eign Kafka sem er notaður til að byggja upp blockchain vettvang.

Hyperledger efni fyrir imba
tekið af kafka.apache.org

  • Mynd 8. Umræðuefni pöntunarþjónustu*

Gagnlegar hlekkir

Youtube – Að byggja upp blockchain fyrir viðskipti með Hyperledger Project
Hyperledger Fabric Docs
Hyperledger efni: dreift stýrikerfi fyrir leyfilegar blokkakeðjur

Viðurkenningar

Ég vil koma á framfæri kæru þakklæti til samstarfsmanna minna fyrir hjálpina við undirbúning þessarar greinar:
Nikolay Marin
Igor Khapov
Dmitry Gorbatsjov
Alexander Zemtsov
Ekaterina Guseva

Heimild: www.habr.com

Bæta við athugasemd