Pëlhurë Hyperledger për Dummies

Një platformë Blockchain për Ndërmarrjen

Pëlhurë Hyperledger për Dummies

Mirëmëngjes, të dashur lexues, emri im është Nikolai Nefedov, unë jam një specialist teknik i IBM, në këtë artikull do të doja t'ju prezantoj me platformën blockchain - Hyperledger Fabric. Platforma është menduar për ndërtimin e aplikacioneve të biznesit në nivel ndërmarrje (klasa e ndërmarrjes). Niveli i artikullit është për lexues të papërgatitur me njohuri bazë të teknologjive IT.

Hyperledger Fabric është një projekt me burim të hapur, një nga degët e projektit me kod të hapur Hyperledger, një konsorcium i Fondacionit Linux. Hyperledger Fabric fillimisht u lançua nga Digital Assets dhe IBM. Tipari kryesor i platformës Hyperledger Fabric është fokusi i saj në aplikacionet e korporatave. Prandaj, platforma u zhvillua duke marrë parasysh shpejtësinë e lartë të transaksioneve dhe koston e tyre të ulët, si dhe identifikimin e të gjithë pjesëmarrësve. Këto përfitime arrihen duke ndarë shërbimin e verifikimit të transaksioneve dhe duke formuar blloqe të reja të regjistrit të shpërndarë, si dhe duke përdorur një autoritet certifikues dhe duke autorizuar pjesëmarrësit.

Artikulli im është pjesë e një serie artikujsh rreth Hyperledger Fabric në të cilin ne përshkruajmë projektin e një sistemi për regjistrimin e studentëve që hyjnë në universitet.

Arkitektura e përgjithshme e pëlhurës Hyperledger

Hyperledger Fabric është një rrjet blockchain i shpërndarë i përbërë nga komponentë të ndryshëm funksionalë që janë instaluar në nyjet e rrjetit. Komponentët Hyperledger Fabric janë kontejnerë Docker që mund të shkarkohen lirisht nga DockerHub. Hyperledger Fabric mund të ekzekutohet gjithashtu në një mjedis Kubernetes.

Për të shkruar kontrata inteligjente (kodi zinxhir në kontekstin e Hyperledger Fabric), ne përdorëm Golang (megjithëse Hyperledger Fabric ju lejon të përdorni gjuhë të tjera). Për të zhvilluar një aplikacion të personalizuar, në rastin tonë, Node.js u përdor me SDK-në përkatëse Hyperledger Fabric.

Nyjet drejtojnë logjikën e biznesit (kontrata inteligjente) - kodin zinxhir, ruajnë gjendjen e regjistrit të shpërndarë (të dhënat e librit) dhe ekzekutojnë shërbime të tjera të sistemit të platformës. Një nyje është vetëm një njësi logjike, nyje të ndryshme mund të ekzistojnë në të njëjtin server fizik. Shumë më e rëndësishme është mënyra se si grupohen nyjet (domeni i besuar) dhe me cilat funksione të rrjetit blockchain lidhen ato.

Arkitektura e përgjithshme duket si kjo:

Pëlhurë Hyperledger për Dummies

Figura 1. Arkitektura e Përgjithshme e Pëlhurës Hyperledger

Aplikacioni i përdoruesit (Submitting Client) është një aplikacion me të cilin përdoruesit punojnë me rrjetin blockchain. Për të punuar, duhet të kaloni autorizimin dhe të keni të drejtat e duhura për lloje të ndryshme veprimesh në rrjet.

Peers (Nyjet) vijnë në disa role:

  • Endorsing Peer është një nyje që simulon ekzekutimin e një transaksioni (ekzekuton kodin e kontratës inteligjente). Pas vërtetimit dhe ekzekutimit të kontratës inteligjente, nyja i kthen rezultatet e ekzekutimit tek aplikacioni i klientit së bashku me nënshkrimin e saj.
  • Shërbimi i porositjes është një shërbim i shpërndarë në disa nyje, përdoret për të formuar blloqe të reja të librit të shpërndarë dhe për të krijuar një sekuencë për ekzekutimin e transaksioneve. Shërbimi i porositjes nuk shton blloqe të reja në regjistër (Moved to Committing Peers për performancë më të mirë).
  • Committing Peer - një nyje që përmban një regjistër të shpërndarë dhe shton blloqe të reja në regjistër (të cilat janë formuar nga Shërbimi i Porositjes). Të gjithë Kolegët e Përkushtimit përmbajnë një kopje lokale të librit të shpërndarë. Kolegja e zotimit, përpara se të shtojë një bllok të ri në nivel lokal, kontrollon të gjitha transaksionet brenda bllokut për vlefshmëri.

Politika e miratimit është një politikë për kontrollimin e vlefshmërisë së një transaksioni. Këto politika përcaktojnë grupin e nevojshëm të nyjeve mbi të cilat duhet të ekzekutohet kontrata inteligjente në mënyrë që transaksioni të njihet si i vlefshëm.

Regjistri i shpërndarë - Lerger - përbëhet nga dy pjesë: WolrldState (i quajtur edhe Baza e të Dhënave Shtetërore) dhe BlockChain.

BlockChain është një zinxhir blloqesh që ruan të dhënat e të gjitha ndryshimeve që kanë ndodhur në objektet e librit të shpërndarë.

WolrldState është një komponent i regjistrit të shpërndarë që ruan vlerat aktuale (ekstreme) të të gjitha objekteve të regjistrit të shpërndarë.

WorldState është një bazë të dhënash, në versionin bazë - LevelDB ose më kompleks - CouchDB, e cila përmban çifte me vlerë kyçe, për shembull: Emri - Ivan, Mbiemri - Ivanov, data e regjistrimit në sistem - 12.12.21/17.12.1961/XNUMX, datë lindja - XNUMX etj. WorldState dhe libri i shpërndarë duhet të jenë konsistent në të gjithë anëtarët e një kanali të caktuar.

Meqenëse Hyperledger Fabric është një rrjet në të cilin të gjithë pjesëmarrësit njihen dhe vërtetohen, këtu përdoret një autoritet certifikues i dedikuar - CA (Autoriteti i Certifikimit). AK operon në bazë të standardit X.509 dhe infrastrukturës së çelësit publik - PKI.

Shërbimi i Anëtarësimit është një shërbim përmes të cilit anëtarët verifikojnë që një objekt i përket një organizate ose kanali të caktuar.

Një transaksion është, në shumicën e rasteve, një rekord i të dhënave të reja në një libër të shpërndarë.
Ka edhe transaksione për krijimin e kanaleve apo kontratave inteligjente. Transaksioni inicohet nga aplikacioni i përdoruesit dhe përfundon me një shkrim në librin e shpërndarë.

Kanali (Kanali) është një nënrrjet i mbyllur i përbërë nga dy ose më shumë pjesëmarrës në rrjetin blockchain, i krijuar për të kryer transaksione konfidenciale brenda një rrethi të kufizuar, por të njohur, pjesëmarrësish. Kanali përcaktohet nga pjesëmarrësit, libri i tij i shpërndarë, kontratat inteligjente, Shërbimi i Porositjes, WorldState. Çdo anëtar i kanalit duhet të jetë i autorizuar për të hyrë në kanal dhe të ketë të drejtën për të kryer lloje të ndryshme transaksionesh. Autorizimi kryhet duke përdorur Shërbimin e Anëtarësimit.

Skenari tipik i ekzekutimit të transaksionit

Më pas, do të doja të flisja për një skenar tipik për ekzekutimin e një transaksioni duke përdorur shembullin e projektit tonë.

Si pjesë e projektit tonë të brendshëm, ne kemi krijuar një rrjet Hyperledger Fabric, i cili është krijuar për të regjistruar dhe regjistruar studentët që hyjnë në universitete. Rrjeti ynë përbëhet nga dy organizata, në pronësi të Universitetit A dhe Universitetit B. Secila organizatë përmban një aplikacion klienti, si dhe homologun e vet të zotimit dhe miratimit. Ne përdorim gjithashtu shërbimet e përbashkëta të Shërbimit të Porositjes, Shërbimit të Anëtarësimit dhe Autoritetit të Certifikimit.

1) Fillimi i transaksionit

Aplikacioni i përdoruesit, duke përdorur Hyperledger Fabric SDK, fillon një kërkesë transaksioni dhe ia dërgon kërkesën nyjeve me kontrata inteligjente. Kërkesa mund të jetë për të ndryshuar ose lexuar nga një libër i shpërndarë (Ledger). Nëse marrim parasysh një shembull të konfigurimit të testit tonë të sistemit për kontabilitetin për studentët e universitetit, atëherë aplikacioni i klientit dërgon një kërkesë transaksioni në nyjet e universiteteve A dhe B, të cilat përfshihen në politikën e miratimit të kontratës së quajtur smart. Nyja A është një nyje që ndodhet në universitet që regjistron një student hyrës dhe nyja B është një nyje që ndodhet në një universitet tjetër. Në mënyrë që një transaksion të ruhet në një libër të shpërndarë, është e nevojshme që të gjitha nyjet që, sipas logjikës së biznesit, duhet të miratojnë transaksionin, të ekzekutojnë me sukses kontratat inteligjente me të njëjtin rezultat. Aplikacioni përdorues i nyjës A, duke përdorur mjetet Hyperledger Fabric SDK, merr politikën e miratimit (politikën e miratimit) dhe zbulon se në cilat nyje duhet të dërgojë një kërkesë transaksioni. Kjo është një kërkesë për të thirrur (thirrur) një kontratë të caktuar inteligjente (funksioni i kodit zinxhir) me qëllim që të lexoni ose shkruani të dhëna të caktuara në librin e shpërndarë. Teknikisht, klienti SDK përdor funksionin përkatës, API-së së të cilit i kalohet një objekt me parametra transaksioni, dhe gjithashtu shton një nënshkrim klienti dhe i dërgon këto të dhëna përmes buferit të protokollit mbi gRPC në nyjet e duhura (shoqëruesit miratues).

Pëlhurë Hyperledger për Dummies
Figura 2. Fillimi i transaksionit

2) Zbatimi i zgjuar i kontratës

Nyjet (Endosing Peers), pasi kanë marrë një kërkesë për të kryer një transaksion, kontrollojnë nënshkrimin e klientit dhe nëse gjithçka është në rregull, atëherë ata marrin një objekt me të dhënat e kërkesës dhe kryejnë një simulim të ekzekutimit të një kontrate inteligjente (funksioni i kodit zinxhir) me këto të dhëna. Një kontratë inteligjente është logjika e biznesit të një transaksioni, një grup i caktuar kushtesh dhe udhëzimesh (në rastin tonë, ky është një kontroll studenti, është një student i ri, apo është ai tashmë i regjistruar, kontroll moshe, etj.). Për të ekzekutuar një kontratë inteligjente, do t'ju duhen gjithashtu të dhëna nga WorldState. Si rezultat i simulimit të kontratës inteligjente në bashkëmoshatarin Endorsing, fitohen dy grupe të dhënash - Read Set dhe Write Set. Read Set and Write Set janë vlerat origjinale dhe të reja WorldState. (e re - në kuptimin e marrë duke simuluar një kontratë inteligjente).

Pëlhurë Hyperledger për Dummies
Figura 3. Zbatimi i zgjuar i kontratës

3) Kthimi i të dhënave në aplikacionin e klientit

Pas simulimit të kontratës inteligjente, Endorsing Peers kthejnë në aplikacionin e klientit të dhënat fillestare dhe rezultatin e simulimit, si dhe grupin RW të nënshkruar nga certifikata e tyre. Në këtë fazë, nuk ka ndryshime në librin e shpërndarë. Aplikacioni i klientit verifikon nënshkrimin e bashkëmoshatarit të miratimit dhe krahason gjithashtu të dhënat origjinale të transaksionit që u dërguan dhe të dhënat që u kthyen (d.m.th., kontrollon nëse të dhënat origjinale mbi të cilat është simuluar transaksioni janë korruptuar). Nëse transaksioni ishte vetëm për leximin e të dhënave nga regjistri, atëherë aplikacioni i klientit merr në përputhje me rrethanat grupin e nevojshëm të leximit, dhe mbi këtë transaksioni zakonisht përfundon me sukses pa ndryshuar regjistrin e shpërndarë. Në rastin e një transaksioni që duhet të ndryshojë të dhënat në regjistër, aplikacioni i klientit kontrollon gjithashtu nëse politika e miratimit është zbatuar. Është e mundur që aplikacioni i klientit të mos kontrollojë rezultatin e ekzekutimit të politikës së miratimit, por platforma Hyperledger Fabric në këtë rast parashikon kontrollimin e politikave në nyjet (Comitting Peers) në fazën e shtimit të një transaksioni në regjistër.

Pëlhurë Hyperledger për Dummies
Figura 4. Kthimi i të dhënave në aplikacionin e klientit

4) Dërgimi i grupeve RW te Ordering Peers

Aplikacioni i klientit dërgon transaksionin së bashku me të dhënat përkatëse në shërbimin e Porositjes. Kjo përfshin grupin RW, nënshkrimet e bashkëmoshatarëve miratues dhe ID-në e kanalit.

Shërbimi i porositjes - Bazuar në emrin, funksioni kryesor i këtij shërbimi është të ndërtojë transaksionet hyrëse në rendin e duhur. Si dhe formimi i një blloku të ri të regjistrit të shpërndarë dhe dorëzimi i garantuar i blloqeve të reja të gjeneruara në të gjitha nyjet e Komitetit, duke siguruar kështu konsistencën e të dhënave në të gjitha nyjet që përmbajnë regjistrin e shpërndarë (Committing peers). Në të njëjtën kohë, vetë shërbimi i porositjes nuk e ndryshon regjistrin në asnjë mënyrë. Shërbimi i porositjes është një komponent jetik i sistemit, kështu që është një grup i disa nyjeve. Shërbimi i porositjes nuk e kontrollon transaksionin për vlefshmëri, ai thjesht pranon një transaksion me një ID të kanalit të caktuar, rregullon transaksionet hyrëse në një renditje specifike dhe formon blloqe të reja të librit të shpërndarë prej tyre. Një shërbim porositjeje mund të shërbejë disa kanale në të njëjtën kohë. Shërbimi i porositjes përfshin një grup Kafka, i cili ruan radhën e saktë (të pandryshuar) të transaksioneve (shih pikën 7).

Pëlhurë Hyperledger për Dummies
Figura 5. Dërgimi i grupeve RW te Ordering Peers

5) Dërgimi i blloqeve të krijuara te kolegu i zotimit

Blloqet e formuara në Shërbimin e Porositjes transmetohen në të gjitha nyjet e rrjetit. Çdo nyje, pasi ka marrë një bllok të ri, e kontrollon atë për pajtueshmërinë me Politikën e Mbështetjes, kontrollon që të gjithë homologët e Mbështetjes kanë marrë të njëjtin rezultat (Write Set) si rezultat i simulimit të kontratës inteligjente, dhe gjithashtu kontrollon nëse vlerat origjinale kanë ndryshuar (d.m.th., - Read Set - të dhëna të lexuara nga kontrata inteligjente nga WorldState) që nga fillimi i transaksionit. Nëse plotësohen të gjitha kushtet, transaksioni shënohet si i vlefshëm, përndryshe, transaksioni merr statusin e pavlefshëm.

Pëlhurë Hyperledger për Dummies
Figura 6. Dërgimi i blloqeve të krijuara te kolegu i zotimit

6) Shtimi i një blloku në regjistër

Secila nyje shton një transaksion në kopjen e saj lokale të librit të shpërndarë, dhe nëse transaksioni është i vlefshëm, atëherë Write Set zbatohet në WorldState (gjendja aktuale), përkatësisht, shkruhen vlera të reja të objekteve që janë prekur nga transaksioni. . Nëse një transaksion ka marrë një shenjë që nuk ishte e vlefshme (për shembull, ka pasur dy transaksione me të njëjtat objekte brenda të njëjtit bllok, atëherë një nga transaksionet nuk do të jetë i vlefshëm, pasi vlerat origjinale janë ndryshuar tashmë nga një transaksion tjetër ). Ky transaksion shtohet gjithashtu në librin e shpërndarë me një shënues të pavlefshëm, por grupi i shkrimit të këtij transaksioni nuk zbatohet për gjendjen aktuale të Shtetit Botëror dhe, në përputhje me rrethanat, nuk ndryshon objektet që marrin pjesë në transaksion. Pas kësaj, aplikacioni i përdoruesit i dërgohet një njoftim se transaksioni është shtuar përgjithmonë në librin e shpërndarë, si dhe statusi i transaksionit, domethënë nëse është i vlefshëm apo jo ...

Pëlhurë Hyperledger për Dummies
Figura 7. Shtimi i një blloku në regjistër

SHËRBIMI I POROSIT

Shërbimi i porositjes përbëhet nga një grup Kafka me nyjet përkatëse të ZooKeeper dhe një Nyje Shërbimin e Porositjes (OSN) që ndodhen midis klientëve të shërbimit të porositjes dhe grupit Kafka. Cluster Kafka është një platformë e menaxhimit të rrjedhës (mesazheve) të shpërndarë, tolerante ndaj gabimeve. Çdo kanal (temë) në Kafka është një sekuencë e pandryshueshme regjistrimesh që mbështet vetëm shtimin e një rekordi të ri (fshirja e një ekzistuesi nuk është e mundur). Një ilustrim i strukturës së temës është dhënë më poshtë. Është kjo pronë e Kafkës që përdoret për të ndërtuar platformën blockchain.

Pëlhurë Hyperledger për Dummies
marrë nga kafka.apache.org

  • Figura 8. Struktura e temës së shërbimit të porositjes*

Lidhje të dobishme

Youtube - Ndërtimi i një blockchain për biznesin me Projektin Hyperledger
Dokumentet e pëlhurës Hyperledger
Pëlhurë Hyperledger: një sistem operativ i shpërndarë për blloqe të lejuara

Mirënjohje

Shpreh mirënjohjen time të thellë për kolegët e mi për ndihmën e tyre në përgatitjen e artikullit:
Nikolai Marina
Igor Khapov
Dmitri Gorbaçov
Aleksandër Zemtsov
Ekaterina Guseva

Burimi: www.habr.com

Shto një koment