Hyperledger twal pou nul

Yon platfòm Blockchain pou antrepriz la

Hyperledger twal pou nul

Bon apremidi, chè lektè, non mwen se Nikolay Nefedov, mwen se yon espesyalis teknik nan IBM, nan atik sa a mwen ta renmen prezante ou nan platfòm la blockchain - Hyperledger Fabric. Platfòm nan fèt pou bati aplikasyon biznis klas antrepriz. Nivo atik la se pou lektè ki pa prepare ak konesans debaz nan teknoloji IT.

Hyperledger Fabric se yon pwojè sous louvri, youn nan branch pwojè Hyperledger sous louvri, yon consortium nan Linux Foundation. Hyperledger Fabric te orijinèlman te kòmanse pa Digital Assets ak IBM. Karakteristik prensipal la nan platfòm Hyperledger twal la se konsantre li sou itilizasyon antrepriz. Se poutèt sa, platfòm la te devlope pran an kont gwo vitès tranzaksyon yo ak pri ki ba yo, osi byen ke idantifikasyon tout patisipan yo. Avantaj sa yo reyalize atravè separasyon sèvis verifikasyon tranzaksyon an ak fòmasyon nan nouvo blòk nan rejis distribiye a, osi byen ke itilizasyon yon sant sètifikasyon ak otorizasyon patisipan yo.

Atik mwen an fè pati yon seri atik sou Hyperledger Fabric, nan ki nou dekri yon pwojè sistèm pou anrejistre elèv k ap antre nan yon inivèsite.

Achitekti jeneral nan Hyperledger twal

Hyperledger Fabric se yon rezo blockchain distribye ki gen plizyè konpozan fonksyonèl ki enstale sou nœuds rezo yo. Konpozan Hyperledger Fabric yo se resipyan Docker ki ka telechaje gratis nan DockerHub. Hyperledger Fabric kapab tou kouri nan yon anviwònman Kubernetes.

Pou ekri kontra entelijan (chaincode nan kontèks Hyperledger Fabric), nou te itilize Golang (byenke Hyperledger Fabric pèmèt itilizasyon lòt lang). Pou devlope yon aplikasyon koutim, nan ka nou an, nou te itilize Node.js ak korespondan Hyperledger Fabric SDK.

Nœuds yo egzekite lojik biznis (kontra entelijan) - chaincode, estoke eta a nan rejis la distribye (done done) ak egzekite lòt sèvis sistèm nan platfòm la. Yon ne se sèlman yon inite lojik; diferan nœuds ka egziste sou menm sèvè fizik la. Pi enpòtan anpil se ki jan nœuds yo gwoupe (Domèn fè konfyans) ak ki fonksyon rezo blòk yo asosye ak.

Achitekti jeneral la sanble sa a:

Hyperledger twal pou nul

Foto 1. Achitekti jeneral Hyperledger twal

Aplikasyon itilizatè (Submitting Client) se yon aplikasyon ak itilizatè yo travay ak rezo blockchain la. Pou travay, ou dwe gen otorizasyon epi gen dwa apwopriye pou plizyè kalite aksyon sou rezo a.

Kanmarad yo vini nan plizyè wòl:

  • Endorsing Peer se yon ne ki simule ekzekisyon yon tranzaksyon (egzekisyon kòd kontra entelijan). Apre verifikasyon ak egzekisyon kontra entelijan an, ne a retounen rezilta egzekisyon yo nan aplikasyon kliyan an ansanm ak siyati li yo.
  • Sèvis lòd se yon sèvis distribiye sou plizyè nœuds, yo itilize pou jenere nouvo blòk nan rejis distribiye a epi kreye yon sekans pou egzekite tranzaksyon yo. Sèvis Kòmande pa ajoute nouvo blòk nan rejis la (yo te deplase karakteristik sa a nan Komite Kanmarad pou amelyore pèfòmans).
  • Committing Peer se yon ne ki gen yon rejis distribye epi li ajoute nouvo blòk nan rejis la (ki te pwodwi pa Sèvis Komandasyon an). Tout kanmarad komèt yo genyen yon kopi lokal Ledger distribiye a. Committing Peer tcheke tout tranzaksyon ki nan blòk la pou validite anvan li ajoute yon nouvo blòk lokalman.

Règleman andòsman se politik pou tcheke validite yon tranzaksyon. Règleman sa yo defini seri nœud ki nesesè yo sou kontra entelijan yo dwe egzekite pou yo rekonèt tranzaksyon an kòm valab.

Rejis distribiye a - Lerger - konsiste de de pati: WolrldState (yo rele tou baz done Eta) ak BlockChain.

BlockChain se yon chèn blòk ki estoke dosye tout chanjman ki te fèt nan objè rejis distribiye yo.

WolrldState se yon eleman Ledger distribiye ki estoke valè aktyèl (koupe) tout objè Ledger distribiye yo.

WorldState se yon baz done, nan vèsyon debaz la - LevelDB oswa yon sèl ki pi konplèks - CouchDB, ki gen pè kle-valè, pou egzanp: Premye non - Ivan, Siyati - Ivanov, dat enskripsyon nan sistèm nan - 12.12.21/17.12.1961/XNUMX , dat nesans - XNUMX/XNUMX/XNUMX, elatriye. WorldState ak rejis distribiye a dwe konsistan pami tout patisipan yo nan yon chanèl bay yo.

Piske Hyperledger Fabric se yon rezo kote tout patisipan yo konnen ak otantifye, li itilize yon otorite sètifikasyon devwe - CA (Certification Authority). CA opere baze sou estanda X.509 ak enfrastrikti kle piblik - PKI.

Sèvis manm se yon sèvis kote manm yo verifye si yon objè fè pati yon òganizasyon oswa yon kanal patikilye.

Yon tranzaksyon - nan pifò ka yo, se ekri nouvo done nan yon rejis distribye.
Genyen tou tranzaksyon pou kreyasyon chanèl oswa kontra entelijan. Tranzaksyon an inisye pa aplikasyon itilizatè a epi li fini ak yon dosye nan Ledger distribiye a.

Yon Chèn se yon sou-rezo fèmen ki gen de oswa plis patisipan rezo blockchain, ki fèt pou fè tranzaksyon konfidansyèl nan yon sèk patisipan ki limite men li te ye. Se patisipan yo ki detèmine kanal la, rejis distribiye li yo, kontra entelijan, Sèvis Komandasyon, WorldState. Chak patisipan chanèl dwe gen otorizasyon pou jwenn aksè nan chanèl la epi yo dwe gen dwa fè plizyè kalite tranzaksyon. Otorizasyon fèt lè l sèvi avèk Sèvis Manm.

Senaryo ekzekisyon tranzaksyon tipik

Apre sa, mwen ta renmen pale sou yon senaryo ekzekisyon tranzaksyon tipik lè l sèvi avèk pwojè nou an kòm yon egzanp.

Kòm yon pati nan pwojè entèn nou an, nou te kreye rezo Hyperledger Fabric, ki fèt pou anrejistre ak kont pou elèv k ap antre nan inivèsite yo. Rezo nou an konsiste de de òganizasyon ki fè pati Inivèsite A ak Inivèsite B. Chak òganizasyon gen yon aplikasyon kliyan, ansanm ak pwòp Parèy Angajman ak Endorsement li yo. Nou itilize tou sèvis komen kòmand sèvis, sèvis manm ak Otorite Sètifikasyon.

1) Inisyasyon Tranzaksyon

Yon aplikasyon itilizatè, lè l sèvi avèk Hyperledger Fabric SDK, inisye yon demann tranzaksyon epi voye demann lan nan nœuds ki gen kontra entelijan. Demann lan kapab chanje oswa li nan yon rejis distribiye (Ledger). Si nou konsidere yon egzanp konfigirasyon sistèm tès nou an pou kontablite pou etidyan inivèsite yo, aplikasyon kliyan an voye yon demann tranzaksyon nan nœuds inivèsite A ak B, ki enkli nan politik andòsman kontra entelijan yo rele. Nœud A se yon nœud ki sitiye nan inivèsite a ki anrejistre elèv k ap vini an, ak nœud B se yon ne ki sitiye nan yon lòt inivèsite. Nan lòd pou yon tranzaksyon yo dwe sove nan yon rejis distribiye, li nesesè ke tout nœuds ki, dapre lojik biznis, dwe apwouve tranzaksyon an, avèk siksè egzekite kontra entelijan ak menm rezilta a. Nœud la Yon aplikasyon itilizatè, lè l sèvi avèk zouti Hyperledger Fabric SDK, jwenn politik andòsman an epi aprann nan ki nœuds pou voye yon demann tranzaksyon. Sa a se yon demann pou envoke yon kontra entelijan espesifik (fonksyon chaincode) pou li oswa ekri sèten done nan yon rejis distribye. Teknikman, SDK kliyan an sèvi ak fonksyon ki koresponn lan, API a ki pase yon sèten objè ak paramèt tranzaksyon, epi tou li ajoute yon siyati kliyan epi li voye done sa yo atravè tanpon pwotokòl sou gRPC nan nœuds ki apwopriye yo (andose kanmarad).

Hyperledger twal pou nul
Foto 2. Kòmanse yon Tranzaksyon

2) Egzekisyon kontra entelijan

Nœuds (Endorsing Peers), yo te resevwa yon demann pou fè yon tranzaksyon, tcheke siyati kliyan an epi si tout bagay anfòm, yo pran yon objè ki gen done demann lan epi kouri yon simulation nan ekzekisyon yon kontra entelijan (fonksyon chaincode) ak done sa yo. Yon kontra entelijan se lojik biznis nan yon tranzaksyon, yon seri sèten kondisyon ak enstriksyon (nan ka nou an, sa a se verifikasyon yon elèv, èske se yon nouvo elèv, oswa èske li deja anrejistre, verifikasyon laj, elatriye). Pou egzekite kontra entelijan an, w ap bezwen tou done ki soti nan WorldState. Kòm yon rezilta nan similye yon kontra entelijan sou kamarad andòsman an, yo jwenn de seri done - Read Set ak Write Set. Lekti ansanm ak ekriti yo se valè orijinal ak nouvo WorldState yo. (nouvo - nan sans yo jwenn pandan simulation nan yon kontra entelijan).

Hyperledger twal pou nul
Foto 3. Egzekisyon yon kontra entelijan

3) Retounen done nan aplikasyon kliyan an

Apre yo fin fè yon simulation nan kontra entelijan an, Endorsing Peers retounen done orijinal yo ak rezilta simulasyon an, ansanm ak RW Set la, ki siyen pa sètifika yo nan aplikasyon kliyan an. Nan etap sa a, pa gen okenn chanjman ki fèt nan rejis distribiye a. Aplikasyon kliyan an tcheke siyati Endorsing Peer la, epi tou konpare done orijinal tranzaksyon yo te voye ak done yo te retounen (ki vle di, li tcheke si done orijinal yo te similye tranzaksyon an te defòme). Si tranzaksyon an te sèlman pou lekti done ki soti nan rejis la, Lè sa a, aplikasyon kliyan an kòmsadwa resevwa nesesè Read Set la epi anjeneral sa a konplete tranzaksyon an avèk siksè san yo pa chanje rejis la distribye. Nan ka a nan yon tranzaksyon ki dwe chanje done nan rejis la, aplikasyon an kliyan anplis tcheke aplikasyon an nan politik la andòsman. Li posib ke yon aplikasyon kliyan pa tcheke rezilta egzekite Règleman andòsman an, men platfòm Hyperledger Fabric nan ka sa a bay pou tcheke règleman sou nœuds (Committing Peers) nan etap nan ajoute yon tranzaksyon nan rejis la.

Hyperledger twal pou nul
Foto 4. Retounen done nan aplikasyon kliyan an

4) Voye RW ansanm bay kòmande kanmarad

Aplikasyon kliyan an voye tranzaksyon an ansanm ak done ki akonpaye yo nan sèvis la kòmande. Sa gen ladann RW Set la, siyati Endorsing peers, ak Channel ID la.

Sèvis kòmande - ki baze sou non an, fonksyon prensipal sèvis sa a se pou fè aranjman pou tranzaksyon k ap fèk ap rantre yo nan lòd ki kòrèk la. Osi byen ke fòmasyon nan yon nouvo blòk nan rejis la distribiye ak garanti livrezon nan nouvo blòk pwodwi nan tout nœuds komèt, konsa asire konsistans done sou tout nœuds ki genyen rejis la distribye (komisyon konpayon). An menm tan an, sèvis la kòmande tèt li pa chanje rejis la nan okenn fason. Sèvis Komandasyon se yon eleman enpòtan nan sistèm nan, kidonk li se yon gwoup plizyè nœuds. Sèvis Komandasyon an pa tcheke tranzaksyon an pou validite, li tou senpleman aksepte yon tranzaksyon ak yon idantifyan chanèl sèten, fè aranjman pou tranzaksyon fèk ap rantre nan yon sèten lòd ak fòme nouvo blòk nan rejis la distribye nan men yo. Yon sèvis kòmande ka sèvi plizyè chanèl an menm tan. Sèvis Komandasyon an gen ladan yon gwoup Kafka, ki kenbe keu tranzaksyon kòrèk (imuitab) (gade Pwen 7).

Hyperledger twal pou nul
Foto 5. Voye RW ansanm bay kòmande kanmarad

5) Voye blòk généré bay Parèy komèt

Blòk ki te pwodwi nan Sèvis Komandasyon yo transmèt (difize) nan tout nœuds rezo yo. Chak ne, li te resevwa yon nouvo blòk, tcheke li pou konfòmite ak Règleman andòsman an, tcheke ke tout Parèy andòsman yo te resevwa menm rezilta a (Write Set) kòm yon rezilta nan simulation kontra entelijan an, epi tou tcheke si valè orijinal yo genyen. chanje (ki vle di, Read Set - done li pa entelijan kontra a soti nan WorldState) soti nan moman sa a tranzaksyon an te inisye. Si tout kondisyon yo satisfè, tranzaksyon an make kòm valab, otreman, tranzaksyon an resevwa estati a envalid.

Hyperledger twal pou nul
Foto 6. Voye blòk ki te pwodwi bay Parèy komèt

6) Ajoute yon blòk nan rejis la

Chak ne ajoute yon tranzaksyon nan kopi lokal li yo nan rejis distribiye a, epi si tranzaksyon an valab, Lè sa a, Write Set la aplike nan WorldState (eta aktyèl la), ak kòmsadwa, nouvo valè nan objè yo ki te afekte pa a. tranzaksyon yo ekri. Si yon tranzaksyon te resevwa yon siy ki pa valab (pa egzanp, de tranzaksyon ki te fèt ak menm objè yo nan menm blòk la, Lè sa a, youn nan tranzaksyon yo ap tounen envalid, paske valè orijinal yo te deja chanje pa yon lòt. tranzaksyon). Tranzaksyon sa a tou ajoute nan liv distribiye a ak yon siy ki pa valab, men Write Set tranzaksyon sa a pa aplike nan WorldState aktyèl la epi, kòmsadwa, pa chanje objè ki patisipe nan tranzaksyon an. Apre sa, yo voye yon notifikasyon nan aplikasyon itilizatè a ke tranzaksyon an te ajoute pou tout tan nan rejis distribiye a, osi byen ke estati a nan tranzaksyon an, se sa ki, si li valab oswa ou pa...

Hyperledger twal pou nul
Foto 7. Ajoute yon blòk nan rejis la

SÈVIS LÒD

Sèvis Komandasyon an konsiste de yon gwoup Kafka ak nœuds ZooKeeper korespondan ak Nœuds Sèvis Komandasyon (OSN), ki kanpe ant kliyan sèvis Commanding yo ak Kafka Cluster la. Kafka cluster se yon platfòm jesyon distribisyon koule (mesaj) ki toleran fay. Chak chanèl (sijè) nan Kafka se yon sekans dosye imuiabl ki sèlman sipòte ajoute yon nouvo dosye (efase yon sèl ki deja egziste pa posib). Yo montre pi ba a yon ilistrasyon estrikti sijè a. Se pwopriyete sa a nan Kafka ki itilize pou konstwi yon platfòm blockchain.

Hyperledger twal pou nul
pran nan kafka.apache.org

  • Foto 8. Estrikti sijè sèvis kòmande*

Lyen itil

Youtube - Bati yon blockchain pou biznis ak Pwojè Hyperledger la
Hyperledger Fabric Docs
Hyperledger twal: yon sistèm opere distribye pou blockchains otorize

Remèsiman

Mwen ta renmen eksprime gwo rekonesans mwen bay kòlèg mwen yo pou èd yo nan prepare atik sa a:
Nikolay Marin
Igor Khapov
Dmitri Gorbachev
Alexander Zemtsov
Ekaterina Guseva

Sous: www.habr.com

Add nouvo kòmantè