Ukubhaliswa Okusabalalisiwe Kwamasondo Amasondo: Okuhlangenwe nakho Nge-Hyperledger Fabric

Sawubona, ngisebenza eqenjini lephrojekthi ye-DRD KP (irejista yedatha esabalalisiwe ukuze igade umjikelezo wempilo wamasethi wamasondo). Lapha ngifuna ukwabelana ngolwazi lwethimba lethu ekuthuthukiseni i-blockchain yebhizinisi yale phrojekthi ngaphansi kwezingqinamba zobuchwepheshe. Ngizobe ngikhuluma kakhulu nge-Hyperledger Fabric, kodwa indlela echazwe lapha ingadluliselwa kunoma iyiphi i-blockchain evunyelwe. Umgomo omkhulu wocwaningo lwethu ukulungiselela izixazululo ze-enterprise blockchain ukuze umkhiqizo wokugcina ube mnandi ukuwusebenzisa futhi ungabi nzima kakhulu ukuwugcina.

Ngeke kube khona okutholakele, izixazululo ezingalindelekile, futhi akukho ntuthuko eyingqayizivele ezogqanyiswa lapha (ngoba anginayo). Ngifuna nje ukwabelana ngolwazi lwami oluthobekile, ngibonise ukuthi "kungenzeka" futhi, mhlawumbe, ngifunde ngokuhlangenwe nakho kwabanye abantu okwenza izinqumo ezinhle hhayi ezinhle kakhulu kumazwana.

Inkinga: Ama-Blockchain awakakali okwamanje

Namuhla, imizamo yonjiniyela abaningi ihloselwe ukwenza i-blockchain ubuchwepheshe obulula ngempela, hhayi ibhomu lesikhathi ku-wrapper enhle. Iziteshi zombuso, i-rollup enethemba, i-plasma kanye ne-sharding cishe kuzoba yinto evamile. Ngolunye usuku. Noma mhlawumbe i-TON izophinde ihlehlise ukwethulwa izinyanga eziyisithupha, futhi i-Plasma Group elandelayo izophela. Singakholelwa kumephu yomgwaqo olandelayo futhi sifunde amaphepha amhlophe acwebezelayo ebusuku, kodwa lapha futhi manje sidinga ukwenza okuthile ngalokho esinakho. Yenza okubi.

Umsebenzi obekwe ithimba lethu kuphrojekthi yamanje ubukeka ngokujwayelekile kanje: kunezifundo eziningi, ezifinyelela ezinkulungwaneni ezimbalwa, ezingafuni ukwakha ubudlelwano ekuthembekeni; Kuyadingeka ukwakha isixazululo ku-DLT esizosebenza kuma-PC ajwayelekile ngaphandle kwezidingo ezikhethekile zokusebenza futhi sinikeze ulwazi lomsebenzisi olubi kakhulu kunanoma yiziphi izinhlelo zokubala ezimaphakathi. Ubuchwepheshe obusemuva kwesixazululo kumele bunciphise amathuba okukhohlisa idatha - yingakho i-blockchain ilapha.

Iziqubulo ezivela kumaphepha amhlophe nabezindaba ziyasithembisa ukuthi intuthuko elandelayo izosivumela ukuthi senze izigidi zokuthengiselana ngomzuzwana. Kuyini ngempela?

I-Mainnet Ethereum okwamanje isebenza ku-~30 tps. Ngenxa yalokhu kukodwa, kunzima ukukubona njenge-blockchain nganoma iyiphi indlela efanele izidingo zenkampani. Phakathi kwezixazululo ezivunyelwe kukhona ama-benchmarks abonisa ama-tps angu-2000 (I-Quorum) noma 3000 tps (Izindwangu zokuxhuma, kukhona okuncane ekushicilelweni, kodwa udinga ukucabangela ukuthi i-benchmark yenziwa injini yokuvumelana endala). Kwakunjalo umzamo wokucubungula i-Radical Fabric, engazange inikeze imiphumela emibi kakhulu, i-20000 tps, kodwa kuze kube manje lokhu kuwucwaningo lwezemfundo kuphela, olulindele ukuqaliswa kwalo okuzinzile. Akunakwenzeka ukuthi inkampani engakwazi ukugcina umnyango wabathuthukisi be-blockchain izobekezelela izinkomba ezinjalo. Kodwa inkinga akukona nje ukudlulisa, kukhona futhi ukubambezeleka.

I-Latency

Ukubambezeleka kusukela lapho ukuthengiselana kuqaliswa ekuvunyelweni kokugcina yisistimu akuxhomekile kuphela ngesivinini lapho umlayezo udlula kuzo zonke izigaba zokuqinisekisa nokuhleleka, kodwa futhi nemingcele yokwakheka vimba. Noma ngabe i-blockchain yethu isivumela ukuthi sizinikele ngesivinini esingu-1000000 tps, kodwa sidinga imizuzu eyi-10 ukwenza ibhulokhi engu-488 MB, ingabe kuzoba lula kithi?

Ake sibhekisise umjikelezo wempilo wokuthengiselana ku-Hyperledger Fabric ukuze siqonde ukuthi isikhathi sichithwa kuphi nokuthi sihlobana kanjani nokuvinjwa kwamapharamitha wokukhiqiza.

Ukubhaliswa Okusabalalisiwe Kwamasondo Amasondo: Okuhlangenwe nakho Nge-Hyperledger Fabric
ethathwe lapha: hyperledger-fabric.readthedocs.io/zu/release-1.4/arch-deep-dive.html#swimlane

(1) Iklayenti lidala ukuthengiselana, likuthumele kontanga abavumelanayo, laba bakamuva balingisa okwenziwayo (sebenzisa izinguquko ezenziwe nge-chaincode esimweni samanje, kodwa ungazibophezeli encwadini) futhi bathole i-RWSet - amagama angukhiye, izinguqulo namanani ethathwe eqoqweni le-CouchDB, (2) abagunyazi babuyisela i-RWSet esayiniwe kuklayenti, (3) iklayenti lingase lihlole ukuba khona kwamasiginesha abo bonke ontanga (abanikezeli), bese lithumela okwenziwayo enkonzweni yoku-oda. , noma ithumele ngaphandle kokuqinisekisa (isheke lisazokwenziwa kamuva), isevisi yoku-oda yakha ibhulokhi futhi ( 4) ithumela emuva kubo bonke ontanga, hhayi nje kubasekeli; ontanga bahlola ukuthi izinguqulo eziyisihluthulelo kusethi efundiwe zifana nezinguqulo kusizindalwazi, ukuthi bonke abasekeli banamasiginesha, futhi ekugcineni benze ibhulokhi.

Kodwa akugcini lapho. Amagama athi "i-orderer yakha i-block" ayifihli kuphela ukuhleleka kokuthengiselana, kodwa futhi nezicelo zenethiwekhi ezi-3 ezilandelanayo ezivela kumholi kuya kubalandeli nangemuva: umholi wengeza umlayezo kulogi, uwuthumele kubalandeli, owedlule uyengeza. kulogi yabo, ithumela isiqinisekiso sokuphindaphinda okuphumelelayo kumholi, umholi wenza umlayezo, ithumela isiqinisekiso sokuzibophezela kubalandeli, abalandeli bazibophezele. Uma kuncane usayizi kanye nesikhathi sokwakhiwa kwebhulokhi, ngokuvamile isevisi yoku-oda kuzodingeka isungule ukuvumelana. Indwangu ye-Hyperledger inamapharamitha amabili okwakhiwa kwebhulokhi: I-BatchTimeout - isikhathi sokwakheka kwebhulokhi kanye ne-BatchSize - usayizi webhulokhi (inani lokuthengiselana kanye nosayizi webhulokhi ngokwawo ngamabhayithi). Ngokushesha nje lapho enye yepharamitha ifinyelela umkhawulo, kukhishwa ibhulokhi entsha. Uma ama-oda amaningi, lokhu kuzothatha isikhathi eside. Ngakho-ke, udinga ukwandisa i-BatchTimeout ne-BatchSize. Kodwa njengoba ama-RWSets eguqulelwe, uma ibhulokhi esiyenza ibe nkulu, ayanda amathuba okungqubuzana kwe-MVCC. Ngaphezu kwalokho, njengoba i-BatchTimeout ikhula, i-UX idiliza ngendlela eyinhlekelele. Uhlelo olulandelayo lokuxazulula lezi zinkinga lubonakala lunengqondo futhi lusobala kimi.

Ungakugwema kanjani ukulinda ukuphothulwa kwebhulokhi futhi ungalahlekelwa amandla okulandelela isimo sokwenziwe

Uma isikhathi sokubunjwa eside nosayizi webhulokhi, siphezulu ukuphuma kwe-blockchain. Omunye akalandeli ngokuqondile komunye, kodwa kufanele kukhunjulwe ukuthi ukusungula ukuvumelana ku-RAFT kudinga izicelo ezintathu zenethiwekhi ezivela kumholi kubalandeli nangemuva. Uma ama-oda amaningi, lokhu kuzothatha isikhathi eside. Ubukhulu obuncane kanye nesikhathi sokwakheka kwebhulokhi, kuningi ukusebenzisana okunjalo. Indlela yokwandisa isikhathi sokukhiqiza kanye nosayizi wokuvimba ngaphandle kokwandisa isikhathi sokuphendula uhlelo lomsebenzisi wokugcina?

Okokuqala, sidinga ngandlela thize ukuxazulula izingxabano ze-MVCC ezibangelwa usayizi omkhulu webhulokhi, okungase kuhlanganise ama-RWSets ahlukene anenguqulo efanayo. Ngokusobala, ohlangothini lweklayenti (ngokuphathelene nenethiwekhi ye-blockchain, lokhu kungase kube i-backend, futhi ngiqonde ukuthi) udinga MVCC isibambi ukungqubuzana, okungaba isevisi ehlukile noma isihlobisi esivamile ngaphezu kwekholi eqalisa umsebenzi ngokuzama okunengqondo futhi.

Ukuzama futhi kungenziwa ngesu le-exponential, kodwa ukubambezeleka kuzokwehliswa ngendlela efanayo. Ngakho-ke kufanele usebenzise ukuzama futhi okungahleliwe ngaphakathi kwemikhawulo ethile emincane, noma engashintshi. Ngeso lokushayisana okungenzeka kunketho yokuqala.

Isinyathelo esilandelayo siwukwenza ukusebenzisana kweklayenti nohlelo lulingane ukuze lungalindi amasekhondi angu-15, 30 noma angu-10000000, esizosetha njenge-BatchTimeout. Kodwa ngesikhathi esifanayo, kuyadingeka ukugcina ikhono lokuqinisekisa ukuthi izinguquko eziqalwe ukuthengiselana azirekhodiwe ku-blockchain.
Isizindalwazi singasetshenziswa ukugcina isimo sokwenziwe. Inketho elula kakhulu i-CouchDB ngenxa yokusebenziseka kwayo kalula: isizindalwazi sine-UI ngaphandle kwebhokisi, i-REST API, futhi ungakwazi ukusethela ukuphindaphinda nokukwabela kalula. Ungamane udale iqoqo elihlukile esimweni esifanayo se-CouchDB esebenzisa Indwangu ukugcina isimo sayo somhlaba. Kudingeka sigcine lezi zinhlobo zamadokhumenti.

{
 Status string // Статус транзакции: "pending", "done", "failed"
 TxID: string // ID транзакции
 Error: string // optional, сообщение об ошибке
}

Lo mbhalo ubhalelwa kusizindalwazi ngaphambi kokuthi okwenziwayo kuthunyelwe kontanga, i-ID yebhizinisi ibuyiselwa kumsebenzisi (i-ID efanayo isetshenziswa njengokhiye) uma lokhu kuwumsebenzi wokudala, bese kuba Izinkambu Zesimo, TxID kanye Nephutha ibuyekezwa njengoba ulwazi olufanele lutholwa kontanga.

Ukubhaliswa Okusabalalisiwe Kwamasondo Amasondo: Okuhlangenwe nakho Nge-Hyperledger Fabric

Kulolu hlelo, umsebenzisi akalindi ukuthi i-block ekugcineni yakheke, ebuka isondo lokuphotha esikrinini imizuzwana engu-10, uthola impendulo esheshayo ohlelweni futhi aqhubeke nokusebenza.

Sikhethe i-BoltDB ukuthi igcine izimo zokwenziwe ngoba sidinga ukulondoloza inkumbulo futhi asifuni ukuchitha isikhathi ekusebenzelaneni kwenethiwekhi neseva yedatha ehlukile, ikakhulukazi uma lokhu kusebenzisana kwenzeka kusetshenziswa iphrothokholi yombhalo ongenalutho. Nokho, kungakhathaliseki ukuthi usebenzisa i-CouchDB ukuze usebenzise uhlelo oluchazwe ngenhla noma umane ugcine isimo somhlaba, noma kunjalo kunengqondo ukukhulisa indlela idatha egcinwa ngayo ku-CouchDB. Ngokuzenzakalelayo, ku-CouchDB, usayizi wamanodi we-b-tree ungamabhayithi angu-1279, okuncane kakhulu kunosayizi womkhakha kudiski, okusho ukuthi kokubili ukufunda nokulinganisa kabusha isihlahla kuzodinga ukufinyelela okungaphezulu ngokomzimba kudiski. Usayizi olungile uhambisana nezinga Isakhiwo Esithuthukile futhi 4 kilobytes. Ukuze sithuthukise sidinga ukusetha ipharamitha btree_chunk_size ilingana no-4096 kufayela lokumisa le-CouchDB. Nge-BoltDB ukungenelela okwenziwa ngesandla akudingeki.

I-backpressure: isu le-buffer

Kodwa kungaba nemiyalezo eminingi. Okungaphezu kwalokho uhlelo olungakwazi ukukusingatha, ukwabelana ngezinsiza nezinye izinsiza eziyishumi nambili ngaphandle kwalezo eziboniswe kumdwebo - futhi konke lokhu kufanele kusebenze ngokungenasici ngisho nasemishinini lapho ukusebenzisa i-Intellij Idea kungaba yisicefe ngokwedlulele.

Inkinga yamandla ahlukene wezinhlelo zokuxhumana, umkhiqizi kanye nomthengi, ixazululwa ngezindlela ezahlukene. Ake sibone ukuthi yini esasingayenza.

Ukudonsa: Singafuna ukuthi siyakwazi ukucubungula imisebenzi eminingi engu-X kumasekhondi angu-T. Zonke izicelo ezeqa lo mkhawulo ziyalahlwa. Lokhu kulula kakhulu, kepha ungakhohlwa nge-UX.

Ukulawula: umthengi kufanele abe nohlobo oluthile lwesixhumi esibonakalayo lapho, kuye ngomthwalo, angakwazi ukulawula i-TPS yomkhiqizi. Akukubi, kodwa kubeka izibopho kubathuthukisi beklayenti elidala umthwalo wokusebenzisa lesi sikhombimsebenzisi. Lokhu akwamukeleki kithi, ngoba i-blockchain izohlanganiswa nenani elikhulu lezinhlelo ezihlala isikhathi eside.

Ukubheja: Esikhundleni sokuzama ukumelana nokusakaza kwedatha yokufaka, singabhafa lokhu kusakaza futhi sikucubungule ngesivinini esidingekayo. Ngokusobala lesi yisixazululo esingcono kakhulu uma sifuna ukuhlinzeka ngolwazi oluhle lomsebenzisi. Senze isilondolozi sisebenzisa ulayini ku-RabbitMQ.

Ukubhaliswa Okusabalalisiwe Kwamasondo Amasondo: Okuhlangenwe nakho Nge-Hyperledger Fabric

Izenzo ezimbili ezintsha zengezwe ohlelweni: (1) ngemuva kokufika kwesicelo ku-API, umlayezo onemingcele edingekayo ukuze kushayelwe ukuthengiselana ubekwe emgqeni, futhi iklayenti lithola umlayezo wokuthi ukuthengiselana kwamukelwe uhlelo, (2) i-backend ifunda idatha ngesivinini esishiwo ku-config ukusuka kulayini; iqala umsebenzi futhi ibuyekeze idatha esitolo sesimo.
Manje ungakwazi ukwandisa isikhathi sokwakheka kanye nomthamo wokuvimba ngendlela ofuna ngayo, ufihle ukubambezeleka kumsebenzisi.

Amanye amathuluzi

Akukho okushiwo lapha mayelana ne-chaincode, ngoba, njengomthetho, akukho lutho lokuthuthukisa kuwo. I-Chaincode kufanele ibe lula futhi ivikeleke ngangokunokwenzeka - yilokho kuphela okudingekayo kuyo. Uhlaka lusisiza ukuthi sibhale i-chaincode kalula futhi ngokuphepha I-CCKit kusuka ku-S7 Techlab kanye ne-static analyzer vuselela^CC.

Ngaphezu kwalokho, ithimba lethu lakha isethi yezinsiza ukwenza ukusebenza nge-Fabric kube lula futhi kujabulise: umhloli we-blockchain, insiza ye izinguquko zokucushwa kwenethiwekhi okuzenzakalelayo (engeza/isusa izinhlangano, ama-RAFT node), usizo lwe ukuhoxiswa kwezitifiketi nokususwa komazisi. Uma ufuna ukufaka isandla, wamukelekile.

isiphetho

Le ndlela ikuvumela ukuthi ushintshe kalula i-Hyperledger Fabric nge-Quorum, amanye amanethiwekhi angasese e-Ethereum (i-PoA noma ngisho ne-PoW), ukunciphisa kakhulu ukuphuma kwangempela, kodwa ngesikhathi esifanayo gcina i-UX evamile (kokubili kubasebenzisi kusiphequluli kanye nezinhlelo ezihlanganisiwe). Lapho ushintsha Indwangu nge-Ethereum esikimini, uzodinga kuphela ukushintsha ingqondo yesevisi yokuphinda uzame/umhlobisi kusukela ekucubunguleni izingxabano ze-MVCC ukuya ekukhuphuleni okungahambi kahle kwe-athomu kanye nokuthumela kabusha. Ukubhafa nokugcinwa kwesimo kwenze kwaba nokwenzeka ukuhlukanisa isikhathi sokuphendula kusukela esikhathini sokwakheka kwebhulokhi. Manje ungakwazi ukwengeza izinkulungwane zama-oda futhi ungesabi ukuthi amabhlogo akheka kaningi futhi alayishe isevisi yoku-oda.

Empeleni, yilokho kuphela engangifuna ukwabelana ngakho. Ngingajabula uma lokhu kusiza othile emsebenzini wakhe.

Source: www.habr.com

Engeza amazwana