Hyperledger Fabric foar Dummies

In Blockchain-platfoarm foar de Enterprise

Hyperledger Fabric foar Dummies

Goeie middei, bêste lêzers, myn namme is Nikolai Nefedov, ik bin in technyske spesjalist fan IBM, yn dit artikel wol ik jo graach yntrodusearje oan it blockchain-platfoarm - Hyperledger Fabric. It platfoarm is bedoeld foar it bouwen fan saaklike applikaasjes op bedriuwsnivo (Enterprise-klasse). It nivo fan it artikel is foar net-tariede lêzers mei basiskennis fan IT-technologyen.

Hyperledger Fabric is in iepen boarne projekt, ien fan 'e tûken fan it Hyperledger iepen boarne projekt, in konsortium fan' e Linux Foundation. Hyperledger Fabric waard oarspronklik lansearre troch Digital Assets en IBM. It haadfunksje fan it Hyperledger Fabric-platfoarm is har fokus op bedriuwsapplikaasjes. Dêrom waard it platfoarm ûntwikkele mei de hege snelheid fan transaksjes en har lege kosten, lykas de identifikaasje fan alle dielnimmers. Dizze foardielen wurde berikt troch it skieden fan 'e transaksjeferifikaasjetsjinst en it foarmjen fan nije blokken fan it ferspraat register, lykas it brûken fan in sertifikaatautoriteit en autorisearjende dielnimmers.

Myn artikel is ûnderdiel fan in searje artikels oer Hyperledger Fabric wêryn wy it projekt beskriuwe fan in systeem foar registrearjen fan studinten dy't in universiteit yngeane.

Algemiene arsjitektuer fan Hyperledger Fabric

Hyperledger Fabric is in ferspraat blockchain-netwurk besteande út ferskate funksjonele komponinten dy't binne ynstalleare op netwurkknooppunten. Hyperledger Fabric-komponinten binne Docker-konteners dy't frij kinne wurde downloade fan DockerHub. Hyperledger Fabric kin ek wurde útfierd yn in Kubernetes-omjouwing.

Om tûke kontrakten te skriuwen (chaincode yn 'e kontekst fan Hyperledger Fabric), hawwe wy Golang brûkt (hoewol't Hyperledger Fabric jo oare talen kinne brûke). Om in oanpaste applikaasje te ûntwikkeljen, yn ús gefal, waard Node.js brûkt mei de oerienkommende Hyperledger Fabric SDK.

De knooppunten rinne saaklike logika (smart kontrakt) - chaincode, bewarje de steat fan it ferspraat register (ledgergegevens) en útfiere oare platfoarmsysteemtsjinsten. In knooppunt is mar in logyske ienheid, ferskate knooppunten kinne bestean op deselde fysike tsjinner. Folle wichtiger is hoe't de knooppunten binne groepearre (Trusted domein) en hokker funksjes fan it blockchain-netwurk se binne assosjearre mei.

De algemiene arsjitektuer sjocht der sa út:

Hyperledger Fabric foar Dummies

Picture 1. Algemiene arsjitektuer fan Hyperledger Fabric

Brûkersapplikaasje (Submitting Client) is in applikaasje wêrmei brûkers wurkje mei it blockchain-netwurk. Om te wurkjen, moatte jo troch autorisaasje gean en de passende rjochten hawwe foar ferskate soarten aksjes op it netwurk.

Peers (knooppunten) komme yn ferskate rollen:

  • Endoring Peer is in knooppunt dat de útfiering fan in transaksje simulearret (fiert de tûke kontraktkoade). Nei it validearjen en útfieren fan it tûke kontrakt, jout de knoop de útfieringsresultaten werom nei de kliïntapplikaasje tegearre mei syn hantekening.
  • Ordering Service is in ferdielde tsjinst op ferskate knopen, it wurdt brûkt om nije blokken te foarmjen fan 'e ferdielde ledger en in folchoarder te meitsjen foar it útfieren fan transaksjes. Ordering Service foeget gjin nije blokken ta oan it register (ferpleatst nei Committing Peers foar bettere prestaasjes).
  • Committing Peer - in knooppunt dat in ferspraat register befettet en nije blokken tafoegje oan it register (dy't waarden foarme troch de Ordering Service). Alle Committing Peers befetsje in lokale kopy fan it ferspraat ledger. De Committing Peer kontrolearret, foardat in nij blok lokaal tafoege wurdt, alle transaksjes binnen it blok op jildichheid.

Endorsement Policy is in belied foar it kontrolearjen fan in transaksje op jildigens. Dit belied definiearret de nedige set knopen wêrop it tûke kontrakt moat wurde útfierd om de transaksje as jildich te erkennen.

It ferdielde register - Lerger - bestiet út twa dielen: WolrldState (ek wol State DataBase neamd) en BlockChain.

BlockChain is in ketting fan blokken dy't records opslacht fan alle wizigingen dy't bard binne oan ferdielde ledgerobjekten.

WolrldState is in ferspraat registerkomponint dat de aktuele (ekstreme) wearden opslacht fan alle ferspraat registerobjekten.

WorldState is in databank, yn 'e basisferzje - LevelDB of komplekser - CouchDB, dy't kaai-wearde-pearen befettet, bygelyks: Foarnamme - Ivan, Efternamme - Ivanov, registraasjedatum yn it systeem - 12.12.21/17.12.1961/XNUMX, datum fan berte - XNUMX/XNUMX/XNUMX, ensfh. WorldState en it ferspraat ledger moatte konsekwint wêze oer alle leden fan in bepaald kanaal.

Sûnt Hyperledger Fabric is in netwurk wêryn alle dielnimmers binne bekend en authentisearre, in tawijd sertifisearring autoriteit wurdt brûkt hjir - CA (Certification Authority). CA wurket op basis fan de X.509 standert en iepenbiere kaai ynfrastruktuer - PKI.

Membership Service is in tsjinst wêrmei leden ferifiearje dat in objekt heart by in bepaalde organisaasje of kanaal.

In transaksje is, yn 'e measte gefallen, in rekord fan nije gegevens yn in ferspraat ledger.
D'r binne ek transaksjes foar it meitsjen fan kanalen as tûke kontrakten. De transaksje wurdt inisjearre troch de brûkersapplikaasje en einiget mei in skriuwe nei de ferdielde ledger.

Kanaal (Kanaal) is in sletten subnet besteande út twa of mear dielnimmers yn it blockchain-netwurk, ûntwurpen om fertroulike transaksjes út te fieren binnen in beheinde, mar bekende sirkel fan dielnimmers. It kanaal wurdt bepaald troch de dielnimmers, har ferspraat ledger, smart kontrakten, Ordering Service, WorldState. Elk kanaallid moat autorisearre wêze om tagong te krijen ta it kanaal en it rjocht hawwe om ferskate soarten transaksjes út te fieren. Autorisaasje wurdt útfierd mei help fan de Lidmaatskip Service.

Typysk senario foar útfiering fan transaksjes

Folgjende wol ik prate oer in typysk senario foar it útfieren fan in transaksje mei it foarbyld fan ús projekt.

As ûnderdiel fan ús ynterne projekt hawwe wy in Hyperledger Fabric-netwurk makke, dat is ûntworpen om studinten te registrearjen en op te nimmen dy't universiteiten yngeane. Us netwurk bestiet út twa organisaasjes, eigendom fan Universiteit A en Universiteit B. Elke organisaasje befettet in kliïntapplikaasje, lykas ek syn eigen Committing and Endoring Peer. Wy brûke ek de mienskiplike tsjinsten foar bestellingstsjinst, lidmaatskipstsjinst en sertifikaasjeautoriteit.

1) Transaksje Initiation

De brûkersapplikaasje, mei help fan de Hyperledger Fabric SDK, inisjearret in transaksjefersyk en stjoert it fersyk nei knooppunten mei tûke kontrakten. It fersyk kin wêze om te feroarjen of te lêzen fan in ferdield ledger (Ledger). As wy in foarbyld beskôgje fan ús testkonfiguraasje fan it systeem foar boekhâlding foar universitêre studinten, dan stjoert de kliïntapplikaasje in transaksjeoanfraach nei de knooppunten fan universiteiten A en B, dy't opnommen binne yn it Endorsement-belied fan 'e neamde smart kontrakt. Knooppunt A is in knooppunt dat leit yn 'e universiteit dy't in ynkommende studint registrearret, en knooppunt B is in knooppunt dat yn in oare universiteit leit. Om in transaksje te bewarjen yn in ferspraat ledger, is it needsaaklik dat alle knopen dy't, neffens de saaklike logika, de transaksje moatte goedkarre, suksesfolle tûke kontrakten mei itselde resultaat útfiere. De brûkersapplikaasje fan knooppunt A, mei help fan de Hyperledger Fabric SDK-ark, ûntfangt it Endorsement-belied (goedkarringbelied) en fynt út nei hokker knooppunten in transaksjefersyk te stjoeren. Dit is in fersyk om in bepaald tûk kontrakt (kettingkoadefunksje) op te roppen (op te roppen) om bepaalde gegevens te lêzen of te skriuwen nei de ferdielde ledger. Technysk brûkt de kliïnt SDK de oerienkommende funksje, wêrfan de API in objekt wurdt trochjûn mei transaksjeparameters, en foeget ek in klantûndertekening ta en stjoert dizze gegevens fia protokolbuffer oer gRPC nei de passende knooppunten (ûnderskriuwe peers).

Hyperledger Fabric foar Dummies
Picture 2. Transaction Initiation

2) Smart kontrakt útfiering

Knooppunten (Endorsing Peers), nei't se in fersyk krigen hawwe om in transaksje út te fieren, kontrolearje de klanthantekening en as alles yn oarder is, nimme se in objekt mei de fersykgegevens en rinne in simulaasje fan 'e útfiering fan in tûk kontrakt (chaincode-funksje) mei dizze gegevens. In tûk kontrakt is de saaklike logika fan in transaksje, in bepaalde set fan betingsten en ynstruksjes (yn ús gefal is dit in studintekontrôle, is it in nije studint, of is hy al registrearre, leeftydskontrôle, ensfh.). Om in tûk kontrakt út te fieren, sille jo ek gegevens fan WorldState nedich hawwe. As gefolch fan 'e tûke kontraktsimulaasje op' e Endorsing-peer, wurde twa datasets krigen - Read Set en Write Set. Read Set en Write Set binne de orizjinele en nije WorldState-wearden. (nij - yn 'e sin krigen troch simulearjen fan in tûk kontrakt).

Hyperledger Fabric foar Dummies
Picture 3. Smart kontrakt útfiering

3) Gegevens weromjaan nei de kliïntapplikaasje

Nei de simulaasje fan it tûke kontrakt, Endoring Peers werom nei de kliïntapplikaasje de earste gegevens en it resultaat fan 'e simulaasje, lykas de RW-set ûndertekene troch har sertifikaat. Op dit stadium binne d'r gjin feroaringen yn 'e ferdielde ledger. De kliïntapplikaasje ferifiearret de hantekening fan 'e Endorsing Peer, en fergeliket ek de orizjinele transaksjegegevens dy't stjoerd binne en de gegevens dy't weromkamen (dat is, it kontrolearret oft de orizjinele gegevens wêrop de transaksje waard simulearre is skansearre). As de transaksje allinich wie foar it lêzen fan gegevens út it register, dan ûntfangt de kliïntapplikaasje dus de nedige Read Set, en dêrop foltôget de transaksje meastentiids mei sukses sûnder it ferdielde register te feroarjen. Yn it gefal fan in transaksje dy't de gegevens yn 'e registraasje moatte feroarje, kontrolearret de kliïntapplikaasje ek oft it Endoring-belied is ymplementearre. It is mooglik dat de kliïntapplikaasje it resultaat fan 'e útfiering fan' e Endorsement Policy net kontrolearret, mar it Hyperledger Fabric-platfoarm yn dit gefal soarget foar it kontrolearjen fan it belied op 'e knopen (Committing Peers) op' e poadium fan it tafoegjen fan in transaksje oan it register.

Hyperledger Fabric foar Dummies
Picture 4. Gegevens weromjaan nei de kliïntapplikaasje

4) RW-sets ferstjoere nei bestellen fan Peers

De kliïntapplikaasje stjoert de transaksje tegearre mei relatearre gegevens nei de Bestellingstsjinst. Dit omfettet de RW-set, hantekeningen fan ûndertekenjende peers, en de kanaal-ID.

Bestelle tsjinst - Op grûn fan 'e namme is de haadfunksje fan dizze tsjinst it bouwen fan ynkommende transaksjes yn' e juste folchoarder. Lykas de foarming fan in nij blok fan 'e ferspraat register en de garandearre levering fan nije generearre blokken oan alle Commiting knopen, sa garandearje gegevens konsistinsje op alle knopen befetsje de ferspraat register (Committing peers). Tagelyk feroaret de Bestellingstsjinst sels it register op gjin inkelde manier. Ordering Service is in fitale komponint fan it systeem, dus it is in kluster fan ferskate knopen. De Ordering Service kontrolearret de transaksje net op jildichheid, it akseptearret gewoan in transaksje mei in spesifyk kanaal ID, regelet ynkommende transaksjes yn in spesifike folchoarder, en foarmet nije blokken fan 'e ferdielde grutboek fan har. Ien besteltsjinst kin ferskate kanalen tagelyk tsjinje. De besteltsjinst befettet in Kafka-kluster, dy't de juste (net feroare) transaksjewachtrige behâldt (sjoch punt 7).

Hyperledger Fabric foar Dummies
Ofbylding 5. RW-sets ferstjoere om Peers te bestellen

5) It ferstjoeren fan de generearre blokken nei de Committing Peer

De blokken foarme yn 'e besteltsjinst wurde útstjoerd nei alle netwurkknooppunten. Elke knooppunt, nei't er in nij blok hat krigen, kontrolearret it op neilibjen fan it Endossing Policy, kontrolearret dat alle Endorsing Peers itselde resultaat krigen (Write Set) as gefolch fan 'e smart kontraktsimulaasje, en kontrolearret ek as de orizjinele wearden hawwe feroare (dat is, - Read Set - gegevens lêzen troch de smart kontrakt út WorldState) sûnt it inisjearjen fan de transaksje. As alle betingsten foldien binne, wurdt de transaksje markearre as jildich, oars krijt de transaksje de status fan net jildich.

Hyperledger Fabric foar Dummies
Ofbylding 6. It ferstjoeren fan generearre blokken nei de Committing Peer

6) In blok tafoegje oan it register

Elke knooppunt foeget in transaksje ta oan syn lokale kopy fan it ferspraat ledger, en as de transaksje jildich is, dan wurdt Write Set tapast op 'e WorldState (hjoeddeistige steat), respektivelik, nije wearden fan objekten dy't waarden beynfloede troch de transaksje wurde skreaun . As in transaksje in token krige dy't net jildich is (d'r wiene bygelyks twa transaksjes mei deselde objekten binnen itselde blok, dan sil ien fan 'e transaksjes net jildich wêze, om't de orizjinele wearden al binne feroare troch in oare transaksje ). Dizze transaksje wurdt ek tafoege oan it ferspraat ledger mei in ûnjildige marker, mar de Write Set fan dizze transaksje is net fan tapassing op 'e aktuele steat fan' e WorldState en feroaret dêrtroch de objekten dy't dielnimme oan 'e transaksje net. Dêrnei wurdt in notifikaasje stjoerd nei de brûkersapplikaasje dat de transaksje foar altyd is tafoege oan it ferdielde grutboek, lykas ek de status fan 'e transaksje, dat is oft it jildich is of net ...

Hyperledger Fabric foar Dummies
Ofbylding 7. In blok tafoegje oan it register

BESTELLINGSSERVICE

De Bestellingstsjinst bestiet út in Kafka-kluster mei oerienkommende ZooKeeper-knooppunten en in Bestellingstsjinstknooppunten (OSN) dy't sitte tusken de opdrachtjouwerstsjinstkliïnten en it Kafka-kluster. Kafka kluster is in ferspraat, fout-tolerant stream (berjocht) behear platfoarm. Elk kanaal (ûnderwerp) yn Kafka is in ûnferoarlike folchoarder fan records dy't allinich it tafoegjen fan in nij rekord stipet (wiskje in besteande is net mooglik). In yllustraasje fan 'e ûnderwerpstruktuer wurdt hjirûnder jûn. It is dit eigendom fan Kafka dat wurdt brûkt om it blockchain-platfoarm te bouwen.

Hyperledger Fabric foar Dummies
nommen fan kafka.apache.org

  • Ofbylding 8. Underwerpstruktuer bestelle tsjinst*

Nuttige keppelings

Youtube - Bouwe in blockchain foar bedriuw mei it Hyperledger Project
Hyperledger Fabric Docs
Hyperledger fabric: in ferspraat bestjoeringssysteem foar tastiene blockchains

Erkennings

Ik uterje myn djippe tankberens oan myn kollega's foar har help by it tarieden fan it artikel:
Nikolai Marina
Igor Khapov
Dmitry Gorbatsjov
Alexander Zemtsov
Ekaterina Guseva

Boarne: www.habr.com

Add a comment