Tessili Hyperledger għall-manikini

Pjattaforma Blockchain għall-Intrapriża

Tessili Hyperledger għall-manikini

Wara nofsinhar it-tajjeb, għeżież qarrejja, jisimni Nikolay Nefedov, jien speċjalista tekniku f'IBM, f'dan l-artikolu nixtieq nintroduċikom fil-pjattaforma blockchain - Hyperledger Fabric. Il-pjattaforma hija mfassla għall-bini ta 'applikazzjonijiet tan-negozju ta' klassi ta 'intrapriża. Il-livell tal-artiklu huwa għal qarrejja mhux ippreparati b'għarfien bażiku tat-teknoloġiji tal-IT.

Hyperledger Fabric huwa proġett open source, waħda mill-fergħat tal-proġett Hyperledger open source, konsorzju tal-Linux Foundation. Hyperledger Fabric inbeda oriġinarjament minn Digital Assets u IBM. Il-karatteristika ewlenija tal-pjattaforma Hyperledger Fabric hija l-fokus tagħha fuq l-użu tal-intrapriża. Għalhekk, il-pjattaforma ġiet żviluppata b'kont meħud tal-veloċità għolja tat-tranżazzjonijiet u l-ispiża baxxa tagħhom, kif ukoll l-identifikazzjoni tal-parteċipanti kollha. Dawn il-vantaġġi jinkisbu permezz tas-separazzjoni tas-servizz ta 'verifika tat-tranżazzjonijiet u l-formazzjoni ta' blokki ġodda tar-reġistru distribwit, kif ukoll l-użu ta 'ċentru ta' ċertifikazzjoni u awtorizzazzjoni tal-parteċipanti.

L-artiklu tiegħi huwa parti minn sensiela ta’ artikli dwar Hyperledger Fabric, li fihom niddeskrivu proġett ta’ sistema għar-reġistrazzjoni ta’ studenti li jidħlu f’università.

Arkitettura ġenerali ta 'Hyperledger Fabric

Hyperledger Fabric huwa netwerk blockchain distribwit li jikkonsisti f'diversi komponenti funzjonali li huma installati fuq in-nodi tan-netwerk. Il-komponenti Hyperledger Fabric huma kontenituri Docker li jistgħu jitniżżlu liberament minn DockerHub. Hyperledger Fabric jista 'jitħaddem ukoll f'ambjent Kubernetes.

Biex tikteb kuntratti intelliġenti (chaincode fil-kuntest ta 'Hyperledger Fabric), użajna Golang (għalkemm Hyperledger Fabric jippermetti l-użu ta' lingwi oħra). Biex tiżviluppa applikazzjoni tad-dwana, fil-każ tagħna, użajna Node.js mal-Hyperledger Fabric SDK korrispondenti.

In-nodi jeżegwixxu loġika tan-negozju (kuntratt intelliġenti) - chaincode, jaħżnu l-istat tar-reġistru distribwit (data tal-ktieb) u jeżegwixxu servizzi oħra tas-sistema tal-pjattaforma. Nodu huwa biss unità loġika; nodi differenti jistgħu jeżistu fuq l-istess server fiżiku. Ħafna aktar importanti huwa kif in-nodi huma raggruppati (dominju fdat) u liema funzjonijiet tan-netwerk blockchain huma assoċjati magħhom.

L-arkitettura ġenerali tidher bħal din:

Tessili Hyperledger għall-manikini

Stampa 1. Arkitettura Ġenerali ta 'Tessili Hyperledger

L-applikazzjoni tal-utent (Submitting Client) hija applikazzjoni li biha l-utenti jaħdmu man-netwerk blockchain. Biex taħdem, trid tkun awtorizzat u jkollok id-drittijiet xierqa għal diversi tipi ta 'azzjonijiet fuq in-netwerk.

Peers jidħlu f'diversi rwoli:

  • Endorsing Peer huwa node li jissimula l-eżekuzzjoni ta 'tranżazzjoni (jesegwixxi l-kodiċi tal-kuntratt intelliġenti). Wara l-verifika u l-eżekuzzjoni tal-kuntratt intelliġenti, in-nodu jirritorna r-riżultati tal-eżekuzzjoni lill-applikazzjoni tal-klijent flimkien mal-firma tiegħu.
  • Ordering Service huwa servizz distribwit fuq diversi nodi, użat biex jiġġenera blokki ġodda tar-reġistru distribwit u joħloq kju għall-eżekuzzjoni tat-tranżazzjonijiet. Servizz ta 'Ordni ma jżidx blokki ġodda mar-reġistru (Din il-karatteristika ġiet imċaqalqa għal Committing Peers biex ittejjeb il-prestazzjoni).
  • Committing Peer huwa node li fih reġistru distribwit u jżid blokki ġodda mar-reġistru (li ġew iġġenerati mis-Servizz tal-Ordni). Il-Pari kollha tal-Impenn fihom kopja lokali tar-reġistru mqassam. Committing Peer jiċċekkja t-tranżazzjonijiet kollha fi ħdan il-blokk għall-validità qabel ma żżid blokka ġdida lokalment.

Il-Politika ta' Endorsjar hija l-politika għall-iċċekkjar tal-validità ta' tranżazzjoni. Dawn il-politiki jiddefinixxu s-sett meħtieġ ta 'nodi li fuqhom għandu jiġi esegwit il-kuntratt intelliġenti sabiex it-tranżazzjoni tkun rikonoxxuta bħala valida.

Ir-reġistru distribwit - Lerger - jikkonsisti f'żewġ partijiet: WolrldState (imsejjaħ ukoll State DataBase) u BlockChain.

BlockChain hija katina ta 'blokki li taħżen rekords tal-bidliet kollha li seħħew għall-oġġetti tar-reġistru distribwiti.

WolrldState huwa komponent tar-reġistru distribwit li jaħżen il-valuri attwali (tal-pijunieri) tal-oġġetti kollha tar-reġistru distribwit.

WorldState hija database, fil-verżjoni bażika - LevelDB jew waħda aktar kumplessa - CouchDB, li fiha pari ta' valuri ewlenin, pereżempju: Isem - Ivan, Kunjom - Ivanov, data ta' reġistrazzjoni fis-sistema - 12.12.21/17.12.1961/XNUMX , data tat-twelid - XNUMX/XNUMX/XNUMX, eċċ. WorldState u r-reġistru mqassam għandhom ikunu konsistenti fost il-parteċipanti kollha f'kanal partikolari.

Peress li Hyperledger Fabric huwa netwerk li fih il-parteċipanti kollha huma magħrufa u awtentikati, juża awtorità ta 'ċertifikazzjoni ddedikata - CA (Awtorità taċ-Ċertifikazzjoni). CA topera bbażata fuq l-istandard X.509 u l-infrastruttura taċ-ċavetta pubblika - PKI.

Servizz ta 'Sħubija huwa servizz li permezz tiegħu l-membri jivverifikaw li oġġett jappartjeni għal organizzazzjoni jew kanal partikolari.

Tranżazzjoni - fil-biċċa l-kbira tal-każijiet, qed tikteb dejta ġdida f'reġistru distribwit.
Hemm ukoll transazzjonijiet għall-ħolqien ta 'kanali jew kuntratti intelliġenti. It-tranżazzjoni tinbeda mill-applikazzjoni tal-utent u tispiċċa b'rekord fir-reġistru distribwit.

Kanal huwa sottonetwerk magħluq li jikkonsisti f'żewġ parteċipanti jew aktar tan-netwerk blockchain, iddisinjat biex iwettaq transazzjonijiet kunfidenzjali f'ċirku limitat iżda magħruf ta' parteċipanti. Il-kanal huwa determinat mill-parteċipanti, ir-reġistru distribwit tiegħu, kuntratti intelliġenti, Servizz ta 'Ordni, WorldState. Kull parteċipant tal-kanal għandu jkun awtorizzat biex jaċċessa l-kanal u jkollu d-dritt li jwettaq diversi tipi ta 'tranżazzjonijiet. L-awtorizzazzjoni ssir bl-użu tas-Servizz tas-Sħubija.

Xenarju tipiku ta' eżekuzzjoni ta' tranżazzjoni

Sussegwentement, nixtieq nitkellem dwar xenarju tipiku ta 'eżekuzzjoni ta' tranżazzjoni billi tuża l-proġett tagħna bħala eżempju.

Bħala parti mill-proġett intern tagħna, ħloqna n-netwerk Hyperledger Fabric, li huwa ddisinjat biex jirreġistra u jagħti kont tal-istudenti li jidħlu fl-universitajiet. In-netwerk tagħna jikkonsisti f'żewġ organizzazzjonijiet li jappartjenu għall-Università A u l-Università B. Kull organizzazzjoni fiha applikazzjoni tal-klijent, kif ukoll il-Pari ta' Kommissjoni u Endorsjar tagħha stess. Aħna nużaw ukoll is-servizzi komuni tas-Servizz tal-Ordni, is-Servizz tas-Sħubija u l-Awtorità taċ-Ċertifikazzjoni.

1) Bidu tat-Tranżazzjoni

Applikazzjoni tal-utent, li tuża l-Hyperledger Fabric SDK, tibda talba ta 'tranżazzjoni u tibgħat it-talba lil nodi b'kuntratti intelliġenti. It-talba tista' tkun li tinbidel jew tinqara minn reġistru distribwit (Ledger). Jekk nikkunsidraw eżempju tal-konfigurazzjoni tas-sistema tat-test tagħna għall-kontabilità għal studenti universitarji, l-applikazzjoni tal-klijent tibgħat talba ta 'tranżazzjoni lin-nodi tal-universitajiet A u B, li huma inklużi fil-politika ta' Endorsjar tal-kuntratt intelliġenti msejjaħ. Node A huwa node li jinsab fl-università li tirreġistra l-istudent deħlin, u node B huwa node li jinsab f'università oħra. Sabiex tranżazzjoni tiġi ffrankata f'reġistru distribwit, huwa meħtieġ li n-nodi kollha li, skont il-loġika tan-negozju, għandhom japprovaw it-tranżazzjoni, iwettqu b'suċċess kuntratti intelliġenti bl-istess riżultat. L-applikazzjoni tal-utent node A, bl-użu tal-għodod tal-Hyperledger Fabric SDK, tikseb il-politika tal-Endorsement u titgħallem lil liema nodi tibgħat talba għal tranżazzjoni. Din hija talba biex jiġi invokat kuntratt intelliġenti speċifiku (funzjoni chaincode) biex taqra jew tikteb ċerta data f'reġistru distribwit. Teknikament, l-SDK tal-klijent juża l-funzjoni korrispondenti, li l-API tagħha jgħaddi ċertu oġġett b'parametri ta 'tranżazzjoni, u żżid ukoll firma tal-klijent u tibgħat din id-dejta permezz ta' buffer tal-protokoll fuq gRPC lin-nodi xierqa (il-pari tal-approvazzjoni).

Tessili Hyperledger għall-manikini
Stampa 2. Nibdew Tranżazzjoni

2) Eżekuzzjoni ta 'kuntratt intelliġenti

Nodes (Endorsing Peers), wara li rċevew talba biex iwettqu tranżazzjoni, jiċċekkjaw il-firma tal-klijent u jekk kollox huwa fl-ordni, jieħdu oġġett bid-dejta tat-talba u jmexxu simulazzjoni tal-eżekuzzjoni ta 'kuntratt intelliġenti (funzjoni chaincode) b' din id-data. Kuntratt intelliġenti huwa l-loġika tan-negozju ta 'tranżazzjoni, ċertu sett ta' kundizzjonijiet u struzzjonijiet (fil-każ tagħna, din hija verifika ta 'student, dan huwa student ġdid, jew huwa diġà rreġistrat, verifika tal-età, eċċ.). Biex tesegwixxi l-kuntratt intelliġenti, ser ikollok bżonn ukoll dejta minn WorldState. Bħala riżultat tas-simulazzjoni ta 'kuntratt intelliġenti fuq il-pari ta' Endorsing, jinkisbu żewġ settijiet ta 'dejta - Aqra Set u Write Set. Aqra Set u Write Set huma l-valuri WorldState oriġinali u ġodda. (ġdid – fis-sens miksub waqt is-simulazzjoni ta’ kuntratt intelliġenti).

Tessili Hyperledger għall-manikini
Stampa 3. Eżekuzzjoni ta 'kuntratt intelliġenti

3) Ir-ritorn tad-dejta lill-applikazzjoni tal-klijent

Wara li twettaq simulazzjoni tal-kuntratt intelliġenti, Peers Endorsing jirritorna d-dejta oriġinali u r-riżultat tas-simulazzjoni, kif ukoll is-Sett RW, iffirmat miċ-ċertifikat tagħhom lill-applikazzjoni tal-klijent. F'dan l-istadju, ma jseħħ l-ebda tibdil fir-reġistru distribwit. L-applikazzjoni tal-klijent tiċċekkja l-firma Endorsing Peer, u tqabbel ukoll id-dejta oriġinali tat-tranżazzjoni li ntbagħtet u d-dejta li ġiet irritornata (jiġifieri, tiċċekkja jekk id-dejta oriġinali li fuqha ġiet simulata t-tranżazzjoni tkunx ġietx distorta). Jekk it-tranżazzjoni kienet biss għall-qari tad-dejta mir-reġistru, allura l-applikazzjoni tal-klijent għalhekk tirċievi s-Sett Aqra meħtieġ u dan normalment itemm it-tranżazzjoni b'suċċess mingħajr ma jbiddel ir-reġistru distribwit. Fil-każ ta’ tranżazzjoni li trid tibdel id-dejta fir-reġistru, l-applikazzjoni tal-klijent tiċċekkja wkoll l-implimentazzjoni tal-politika ta’ Endorsjar. Huwa possibbli li applikazzjoni tal-klijent ma tiċċekkjax ir-riżultat tal-eżekuzzjoni tal-Politika ta 'Endorsement, iżda l-pjattaforma Hyperledger Fabric f'dan il-każ tipprovdi għall-iċċekkjar ta' politiki fuq nodi (Committing Peers) fl-istadju taż-żieda ta 'tranżazzjoni mar-reġistru.

Tessili Hyperledger għall-manikini
Stampa 4. Ir-ritorn tad-dejta lill-applikazzjoni tal-klijent

4) Jibgħat settijiet RW lil Peers tal-Ordni

L-applikazzjoni tal-klijent tibgħat it-tranżazzjoni flimkien mad-dejta ta' akkumpanjament lis-servizz tal-Ordni. Dan jinkludi s-Sett RW, il-firem tal-pari tal-Endorsing, u l-ID tal-Kanal.

Servizz ta 'ordnijiet - ibbażat fuq l-isem, il-funzjoni ewlenija ta' dan is-servizz hija li tirranġa transazzjonijiet deħlin fl-ordni korretta. Kif ukoll il-formazzjoni ta’ blokk ġdid tar-reġistru distribwit u l-konsenja garantita ta’ blokki ġenerati ġodda lin-nodi kollha tal-Impenn, biex b’hekk tiġi żgurata l-konsistenza tad-dejta fuq in-nodi kollha li fihom ir-reġistru distribwit (il-pari tal-Kommissjoni). Fl-istess ħin, is-servizz tal-Ordni nnifsu ma jbiddel ir-reġistru bl-ebda mod. Ordering Service huwa komponent vitali tas-sistema, għalhekk huwa grupp ta 'diversi nodi. Is-Servizz tal-Ordni ma jiċċekkjax it-tranżazzjoni għall-validità, sempliċement jaċċetta tranżazzjoni b'ċertu identifikatur tal-kanal, jirranġa tranżazzjonijiet deħlin f'ċerta ordni u jifforma blokki ġodda tar-reġistru distribwit minnhom. Servizz ta 'Ordni wieħed jista' jservi diversi kanali fl-istess ħin. Is-Servizz tal-Ordni jinkludi cluster Kafka, li jżomm il-kju tat-tranżazzjonijiet korrett (immutabbli) (ara l-Punt 7).

Tessili Hyperledger għall-manikini
Stampa 5. Tibgħat settijiet RW lil Peers tal-Ordni

5) Jibgħat blokki ġenerati lil Committing Peer

Blokki ġġenerati fis-Servizz tal-Ordni huma trażmessi (xandir) lin-nodi kollha tan-netwerk. Kull nodu, wara li rċieva blokka ġdida, jiċċekkjah għall-konformità mal-Politika ta' Endorsjar, jiċċekkja li Peers Endorsing kollha rċevew l-istess riżultat (Write Set) bħala riżultat tas-simulazzjoni tal-kuntratt intelliġenti, u jiċċekkja wkoll jekk il-valuri oriġinali għandhomx mibdula (jiġifieri, Aqra Set - data moqrija mill-kuntratt intelliġenti minn WorldState) mill-mument li t-tranżazzjoni nbdiet. Jekk il-kundizzjonijiet kollha jiġu sodisfatti, it-tranżazzjoni hija mmarkata bħala valida, inkella, it-tranżazzjoni tirċievi l-istatus invalidu.

Tessili Hyperledger għall-manikini
Stampa 6. Tibgħat blokki ġenerati lil Committing Peer

6) Żieda ta 'blokk mar-reġistru

Kull nodu jżid tranżazzjoni mal-kopja lokali tiegħu tar-reġistru mqassam, u jekk it-tranżazzjoni hija valida, allura l-Write Set jiġi applikat għall-WorldState (l-istat attwali), u għaldaqstant, valuri ġodda tal-oġġetti li ġew affettwati mill- transazzjoni huma miktuba. Jekk tranżazzjoni rċeviet token li mhuwiex validu (pereżempju, żewġ tranżazzjonijiet seħħew bl-istess oġġetti fl-istess blokk, allura waħda mit-tranżazzjonijiet tirriżulta li tkun invalida, peress li l-valuri oriġinali diġà nbidlu minn ieħor transazzjoni). Din it-tranżazzjoni hija miżjuda wkoll mar-reġistru distribwit b'token invalidu, iżda s-Sett tal-Kitba ta 'din it-tranżazzjoni mhuwiex applikat għall-WorldState attwali u, għaldaqstant, ma jbiddilx l-oġġetti li jipparteċipaw fit-tranżazzjoni. Wara dan, tintbagħat notifika lill-applikazzjoni tal-utent li t-tranżazzjoni ġiet miżjuda b'mod permanenti mar-reġistru distribwit, kif ukoll l-istatus tat-tranżazzjoni, jiġifieri, jekk hijiex valida jew le...

Tessili Hyperledger għall-manikini
Stampa 7. Żieda ta 'blokk mar-reġistru

SERVIZZ TA' ORDNI

Is-Servizz tal-Ordni jikkonsisti minn raggruppament Kafka b'nodi ZooKeeper korrispondenti u Nodi tas-Servizz tal-Ordni (OSN), li jinsabu bejn il-klijenti tas-servizz tal-Ordni u l-Kafka Cluster. Kafka cluster huwa pjattaforma ta' ġestjoni tal-fluss (messaġġ) distribwita u tolleranti għall-ħsarat. Kull kanal (suġġett) f'Kafka huwa sekwenza immutabbli ta' rekords li jappoġġja biss iż-żieda ta' rekord ġdid (tħassir wieħed eżistenti mhux possibbli). Illustrazzjoni tal-istruttura tas-suġġett tidher hawn taħt. Hija din il-proprjetà ta 'Kafka li tintuża biex tinbena pjattaforma blockchain.

Tessili Hyperledger għall-manikini
meħuda minn kafka.apache.org

  • Stampa 8. Struttura tas-Suġġett tas-Servizz tal-Ordni*

Links utli

Youtube – Bini ta’ blockchain għan-negozju bil-Proġett Hyperledger
Hyperledger Tessili Docs
Drapp Hyperledger: sistema operattiva distribwita għal blockchains permessi

Rikonoxximenti

Nixtieq nesprimi l-gratitudni profonda tiegħi lill-kollegi tiegħi għall-għajnuna tagħhom fit-tħejjija ta 'dan l-artikolu:
Nikolay Marin
Igor Khapov
Dmitry Gorbachev
Alexander Zemtsov
Ekaterina Guseva

Sors: www.habr.com

Żid kumment