Kitambaa cha Hyperledger kwa Dummies

Jukwaa la Blockchain kwa Biashara

Kitambaa cha Hyperledger kwa Dummies

Mchana mzuri, wasomaji wapendwa, jina langu ni Nikolay Nefedov, mimi ni mtaalamu wa kiufundi katika IBM, katika makala hii ningependa kukujulisha kwenye jukwaa la blockchain - Hyperledger Fabric. Jukwaa limeundwa kwa ajili ya kujenga maombi ya biashara ya kiwango cha biashara. Kiwango cha makala ni kwa wasomaji wasiojitayarisha na ujuzi wa msingi wa teknolojia za IT.

Hyperledger Fabric ni mradi wa chanzo huria, mojawapo ya matawi ya mradi wa chanzo huria wa Hyperledger, muungano wa Wakfu wa Linux. Hyperledger Fabric ilianzishwa awali na Vipengee vya Dijiti na IBM. Kipengele kikuu cha jukwaa la Hyperledger Fabric ni kuzingatia matumizi ya biashara. Kwa hiyo, jukwaa lilitengenezwa kwa kuzingatia kasi ya juu ya shughuli na gharama zao za chini, pamoja na utambulisho wa washiriki wote. Faida hizi zinapatikana kupitia mgawanyo wa huduma ya uthibitishaji wa shughuli na uundaji wa vitalu vipya vya Usajili uliosambazwa, pamoja na matumizi ya kituo cha vyeti na idhini ya washiriki.

Makala yangu ni sehemu ya mfululizo wa makala kuhusu Hyperledger Fabric, ambayo ndani yake tunaelezea mradi wa mfumo wa kurekodi wanafunzi wanaoingia chuo kikuu.

Usanifu wa jumla wa Kitambaa cha Hyperledger

Hyperledger Fabric ni mtandao wa blockchain uliosambazwa unaojumuisha vipengele mbalimbali vya kazi ambavyo vimewekwa kwenye nodes za mtandao. Vipengele vya Vitambaa vya Hyperledger ni vyombo vya Docker ambavyo vinaweza kupakuliwa bila malipo kutoka kwa DockerHub. Hyperledger Fabric pia inaweza kuendeshwa katika mazingira ya Kubernetes.

Tulitumia Golang kuandika mikataba mahiri (chaincode katika muktadha wa Hyperledger Fabric) (ingawa Hyperledger Fabric inaruhusu matumizi ya lugha zingine). Ili kutengeneza programu maalum, kwa upande wetu, tulitumia Node.js na SDK inayolingana ya Hyperledger Fabric.

Nodes hutekeleza mantiki ya biashara (mkataba wa smart) - chaincode, kuhifadhi hali ya rejista iliyosambazwa (data ya kitabu) na kutekeleza huduma nyingine za mfumo wa jukwaa. Nodi ni kitengo cha kimantiki tu; nodi tofauti zinaweza kuwepo kwenye seva moja ya kimwili. Muhimu zaidi ni jinsi nodi zimewekwa katika vikundi (kikoa kinachoaminika) na ni kazi gani za mtandao wa blockchain zinahusishwa nazo.

Usanifu wa jumla unaonekana kama hii:

Kitambaa cha Hyperledger kwa Dummies

Picha ya 1. Usanifu Mkuu wa Kitambaa cha Hyperledger

Programu ya mtumiaji (Kuwasilisha Mteja) ni programu ambayo watumiaji hufanya kazi na mtandao wa blockchain. Kufanya kazi, lazima uidhinishwe na uwe na haki zinazofaa kwa aina mbalimbali za vitendo kwenye mtandao.

Wenzake huja katika majukumu kadhaa:

  • Kuidhinisha Rika ni nodi inayoiga utekelezaji wa shughuli (hutekeleza msimbo mahiri wa mkataba). Baada ya uthibitishaji na utekelezaji wa mkataba mzuri, nodi inarudisha matokeo ya utekelezaji kwa programu ya mteja pamoja na saini yake.
  • Huduma ya Kuagiza ni huduma iliyosambazwa kwenye nodes kadhaa, zinazotumiwa kuzalisha vitalu vipya vya Usajili uliosambazwa na kuunda foleni kwa ajili ya utekelezaji wa shughuli. Huduma ya Kuagiza haiongezi vizuizi vipya kwenye sajili (Kipengele hiki kimehamishwa hadi kwa Kutuma Wenzake ili kuboresha utendaji).
  • Committing Peer ni nodi ambayo ina sajili iliyosambazwa na inaongeza vizuizi vipya kwenye sajili (ambavyo vilitolewa na Huduma ya Kuagiza). Wenzake Wote Wanaojituma wana nakala ya ndani ya leja iliyosambazwa. Committing Peer hukagua miamala yote ndani ya kizuizi ili kubaini uhalali kabla ya kuongeza kizuizi kipya ndani ya nchi.

Sera ya Uidhinishaji ni sera ya kuangalia uhalali wa shughuli. Sera hizi hufafanua seti zinazohitajika za nodi ambapo mkataba mahiri lazima utekelezwe ili shughuli itambuliwe kuwa halali.

Sajili iliyosambazwa - Lerger - ina sehemu mbili: WolrldState (pia inaitwa State DataBase) na BlockChain.

BlockChain ni mlolongo wa vitalu vinavyohifadhi rekodi za mabadiliko yote ambayo yametokea kwa vitu vya usajili vilivyosambazwa.

WolrldState ni sehemu ya leja iliyosambazwa ambayo huhifadhi maadili ya sasa (ya kukata) ya vitu vyote vya leja iliyosambazwa.

WorldState ni hifadhidata, katika toleo la msingi - LevelDB au ngumu zaidi - CouchDB, ambayo ina jozi za thamani, kwa mfano: Jina la kwanza - Ivan, Jina la mwisho - Ivanov, tarehe ya usajili katika mfumo - 12.12.21/17.12.1961/XNUMX , tarehe ya kuzaliwa - XNUMX/XNUMX/XNUMX, nk. WorldState na sajili iliyosambazwa lazima iwe sawa kati ya washiriki wote katika kituo fulani.

Kwa kuwa Hyperledger Fabric ni mtandao ambao washiriki wote wanajulikana na kuthibitishwa, hutumia mamlaka maalum ya uthibitishaji - CA (Mamlaka ya Udhibitishaji). CA hufanya kazi kulingana na kiwango cha X.509 na miundombinu muhimu ya umma - PKI.

Huduma ya Uanachama ni huduma ambayo wanachama huthibitisha kuwa kitu ni cha shirika au chaneli fulani.

Muamala - katika hali nyingi, ni kuandika data mpya kwa sajili iliyosambazwa.
Pia kuna miamala ya kuunda vituo au mikataba mahiri. Muamala huanzishwa na programu ya mtumiaji na huisha na rekodi katika leja iliyosambazwa.

Kituo ni mtandao mdogo uliofungwa unaojumuisha washiriki wawili au zaidi wa mtandao wa blockchain, iliyoundwa kufanya miamala ya siri ndani ya mduara mdogo lakini unaojulikana wa washiriki. Kituo kinaamuliwa na washiriki, sajili yake iliyosambazwa, mikataba mahiri, Huduma ya Kuagiza, WorldState. Kila mshiriki wa kituo lazima aidhinishwe kufikia kituo na awe na haki ya kufanya aina mbalimbali za miamala. Uidhinishaji unafanywa kwa kutumia Huduma ya Uanachama.

Hali ya kawaida ya utekelezaji wa muamala

Ifuatayo, ningependa kuzungumza juu ya hali ya kawaida ya utekelezaji wa shughuli kwa kutumia mradi wetu kama mfano.

Kama sehemu ya mradi wetu wa ndani, tulitengeneza mtandao wa Hyperledger Fabric, ambao umeundwa kusajili na kuhesabu wanafunzi wanaoingia vyuo vikuu. Mtandao wetu una mashirika mawili ya Chuo Kikuu A na Chuo Kikuu B. Kila shirika lina maombi ya mteja, pamoja na Kujitolea na Kuidhinisha Rika lake. Pia tunatumia Huduma za Kuagiza za huduma za kawaida, Huduma ya Uanachama na Mamlaka ya Uthibitishaji.

1) Kuanzishwa kwa Muamala

Programu ya mtumiaji, kwa kutumia Hyperledger Fabric SDK, huanzisha ombi la ununuzi na kutuma ombi kwa nodi zilizo na mikataba mahiri. Ombi linaweza kuwa kubadilisha au kusoma kutoka kwa rejista iliyosambazwa (Ledger). Ikiwa tutazingatia mfano wa usanidi wetu wa mfumo wa majaribio kwa ajili ya uhasibu kwa wanafunzi wa chuo kikuu, ombi la mteja hutuma ombi la muamala kwa nodi za vyuo vikuu A na B, ambazo zimejumuishwa katika sera ya Uidhinishaji wa mkataba unaoitwa smart. Node A ni nodi ambayo iko katika chuo kikuu kinachosajili mwanafunzi anayeingia, na nodi B ni nodi ambayo iko katika chuo kikuu kingine. Ili shughuli ihifadhiwe kwa usajili uliosambazwa, ni muhimu kwamba nodi zote ambazo, kwa mujibu wa mantiki ya biashara, lazima ziidhinishe shughuli hiyo, kutekeleza kwa ufanisi mikataba ya smart na matokeo sawa. Programu ya nodi A ya mtumiaji, kwa kutumia zana za Hyperledger Fabric SDK, hupata sera ya Uidhinishaji na kujifunza ni nodi zipi za kutuma ombi la muamala. Hili ni ombi la kuomba mkataba mahiri mahususi (kazi ya chaincode) ili kusoma au kuandika data fulani kwa sajili iliyosambazwa. Kitaalam, SDK ya mteja hutumia kazi inayolingana, API ambayo hupitishwa kitu fulani na vigezo vya shughuli, na pia huongeza saini ya mteja na kutuma data hii kupitia bafa ya itifaki juu ya gRPC kwa nodi zinazofaa (kuidhinisha wenzao).

Kitambaa cha Hyperledger kwa Dummies
Picha ya 2. Kuanzisha Muamala

2) Utekelezaji wa mkataba mzuri

Nodi (Kuidhinisha Rika), baada ya kupokea ombi la kufanya shughuli, angalia saini ya mteja na ikiwa kila kitu kiko sawa, huchukua kitu na data ya ombi na kuendesha simulation ya utekelezaji wa mkataba mzuri (kazi ya chaincode) na. data hii. Mkataba mzuri ni mantiki ya biashara ya shughuli, seti fulani ya masharti na maagizo (kwa upande wetu, hii ni uthibitishaji wa mwanafunzi, huyu ni mwanafunzi mpya, au tayari amesajiliwa, uthibitishaji wa umri, nk). Ili kutekeleza mkataba mzuri, utahitaji pia data kutoka kwa WorldState. Kama matokeo ya kuiga mkataba mzuri kwenye programu rika inayoidhinisha, seti mbili za data hupatikana - Soma Seti na Andika Seti. Soma Seti na Andika Seti ndizo thamani asili na mpya za WorldState. (mpya - kwa maana iliyopatikana wakati wa uigaji wa mkataba mzuri).

Kitambaa cha Hyperledger kwa Dummies
Picha ya 3. Utekelezaji wa mkataba mzuri

3) Kurejesha data kwa programu ya mteja

Baada ya kufanya uigaji wa mkataba mahiri, Kuidhinisha Wenzake hurejesha data asilia na matokeo ya uigaji, pamoja na Seti ya RW, iliyosainiwa na cheti chao, kwa programu ya mteja. Katika hatua hii, hakuna mabadiliko yanayotokea katika Usajili uliosambazwa. Programu ya mteja hukagua saini ya Kuidhinisha Rika, na pia inalinganisha data ya awali ya muamala ambayo ilitumwa na data iliyorejeshwa (yaani, inakagua ikiwa data asili ambayo muamala uliigwa imepotoshwa). Ikiwa muamala ulikuwa wa kusoma data kutoka kwa sajili pekee, basi maombi ya mteja ipasavyo hupokea Soma Set muhimu na hii kwa kawaida hukamilisha muamala bila kubadilisha sajili iliyosambazwa. Katika kesi ya muamala ambao lazima ubadilishe data katika sajili, programu ya mteja pia hukagua utekelezaji wa sera ya Kuidhinisha. Inawezekana kwamba ombi la mteja haliangalii matokeo ya utekelezaji wa Sera ya Kuidhinisha, lakini jukwaa la Hyperledger Fabric katika kesi hii hutoa sera za kuangalia kwenye nodi (Kufanya Wenzake) katika hatua ya kuongeza shughuli kwenye usajili.

Kitambaa cha Hyperledger kwa Dummies
Picha 4. Kurejesha data kwa programu ya mteja

4) Kutuma seti za RW kwa Kuagiza Wenzake

Programu ya mteja hutuma muamala pamoja na data inayoambatana na huduma ya Kuagiza. Hii ni pamoja na RW Set, Kuidhinisha sahihi za wenzako, na Kitambulisho cha Kituo.

Huduma ya kuagiza - kulingana na jina, kazi kuu ya huduma hii ni kupanga shughuli zinazoingia kwa utaratibu sahihi. Pamoja na uundaji wa kizuizi kipya cha sajili iliyosambazwa na utoaji wa uhakika wa vitalu vipya vinavyozalishwa kwa nodi zote za Kufanya, na hivyo kuhakikisha uthabiti wa data kwenye nodi zote zilizo na sajili iliyosambazwa (Kufanya wenzao). Wakati huo huo, huduma ya Kuagiza yenyewe haibadilishi Usajili kwa njia yoyote. Huduma ya Kuagiza ni sehemu muhimu ya mfumo, kwa hivyo ni nguzo ya nodi kadhaa. Huduma ya Kuagiza haiangalii muamala kwa uhalali, inakubali tu muamala na kitambulisho fulani cha kituo, inapanga miamala inayoingia kwa mpangilio fulani na kuunda vizuizi vipya vya sajili iliyosambazwa kutoka kwao. Huduma Moja ya Kuagiza inaweza kutoa vituo kadhaa kwa wakati mmoja. Huduma ya Kuagiza inajumuisha nguzo ya Kafka, ambayo hudumisha foleni ya muamala sahihi (isiyobadilika) (angalia Pointi 7).

Kitambaa cha Hyperledger kwa Dummies
Picha ya 5. Kutuma seti za RW kwa Kuagiza Wenzake

5) Kutuma vizuizi vilivyotengenezwa kwa Kujitolea kwa Rika

Vitalu vinavyozalishwa katika Huduma ya Kuagiza vinapitishwa (matangazo) kwa nodi zote za mtandao. Kila nodi, ikiwa imepokea kizuizi kipya, huiangalia kwa kufuata Sera ya Kuidhinisha, hukagua kuwa Washirika wote wa Kuidhinisha walipata matokeo sawa (Seti ya Kuandika) kama matokeo ya simulizi ya mkataba mzuri, na pia huangalia ikiwa maadili asili yana. iliyopita (yaani, Soma Set - data iliyosomwa na mkataba mahiri kutoka WorldState) tangu shughuli ilipoanzishwa. Ikiwa masharti yote yametimizwa, shughuli hiyo itawekwa alama kuwa halali, vinginevyo, muamala utapokea hali kuwa batili.

Kitambaa cha Hyperledger kwa Dummies
Picha ya 6. Kutuma vizuizi vilivyotengenezwa kwa Kujitolea kwa Rika

6) Kuongeza kizuizi kwenye Usajili

Kila nodi inaongeza ununuzi kwenye nakala yake ya ndani ya Usajili uliosambazwa, na ikiwa shughuli hiyo ni halali, basi Andika Seti inatumika kwa Ulimwenguni (hali ya sasa), na ipasavyo, maadili mapya ya vitu vilivyoathiriwa na shughuli zimeandikwa. Ikiwa shughuli ilipokea ishara ambayo sio halali (kwa mfano, shughuli mbili zilifanyika na vitu sawa ndani ya kizuizi kimoja, basi moja ya shughuli itageuka kuwa batili, kwani maadili ya awali tayari yamebadilishwa na mwingine. shughuli). Muamala huu pia huongezwa kwenye leja iliyosambazwa kwa tokeni isiyo sahihi, lakini Andika Seti ya muamala huu haitumiki kwa Jimbo la sasa la Dunia na, ipasavyo, haibadilishi vitu vinavyoshiriki katika shughuli hiyo. Baada ya hayo, arifa inatumwa kwa programu ya mtumiaji kwamba muamala umeongezwa kabisa kwenye sajili iliyosambazwa, pamoja na hali ya muamala, yaani, ikiwa ni halali au la...

Kitambaa cha Hyperledger kwa Dummies
Picha 7. Kuongeza kizuizi kwenye Usajili

HUDUMA YA KUAGIZA

Huduma ya Kuagiza ina kundi la Kafka lenye nodi za ZooKeeper na Nodi za Huduma za Kuagiza (OSN), ambazo husimama kati ya Wateja wa huduma ya Kuagiza na Kundi la Kafka. Nguzo ya Kafka ni jukwaa la usimamizi lililosambazwa, linalohimili makosa (ujumbe). Kila kituo (mada) katika Kafka ni mlolongo usiobadilika wa rekodi ambao unaauni tu kuongeza rekodi mpya (kufuta iliyopo haiwezekani). Mchoro wa muundo wa mada umeonyeshwa hapa chini. Ni mali hii ya Kafka ambayo hutumiwa kujenga jukwaa la blockchain.

Kitambaa cha Hyperledger kwa Dummies
imechukuliwa kutoka kafka.apache.org

  • Picha ya 8. Muundo wa Mada ya Huduma ya Kuagiza*

Viungo muhimu

Youtube - Kuunda blockchain kwa biashara na Mradi wa Hyperledger
Hati za Vitambaa vya Hyperledger
Kitambaa cha Hyperledger: mfumo wa uendeshaji uliosambazwa kwa blockchains zilizoidhinishwa

Shukrani

Napenda kutoa shukrani zangu za dhati kwa wenzangu kwa msaada wao katika kuandaa makala hii:
Nikolay Marin
Igor Khapov
Dmitry Gorbachev
Alexander Zemtsov
Ekaterina Guseva

Chanzo: mapenzi.com

Kuongeza maoni