Ndewo, m na-arụ ọrụ na otu ọrụ DRD KP (ndekọ data ekesara maka nyochaa usoro ndụ nke wheel sets). N'ebe a, achọrọ m ịkọrọ ahụmịhe otu anyị na ịmepụta blockchain ụlọ ọrụ maka ọrụ a n'okpuru mgbochi nke teknụzụ. Aga m ekwukarị maka akwa Hyperledger, mana usoro akọwara ebe a nwere ike ịwepụ ya na blockchain ọ bụla enyere ikike. Ebumnuche kachasị nke nyocha anyị bụ ịkwadebe ihe ngwọta blockchain nke ụlọ ọrụ ka ngwaahịa ikpeazụ wee dị ụtọ iji ma ọ bụghịkwa siri ike idobe.
A gaghị enwe nchoputa, ngwọta ndị a na-atụghị anya ya, na ọ dịghị ihe pụrụ iche ga-eme ka ọ pụta ìhè ebe a (n'ihi na enweghị m). Achọrọ m ịkọrọ ahụmahụ m dị obi umeala, gosi na "ọ ga-ekwe omume" na, ikekwe, gụọ banyere ahụmahụ ndị ọzọ nke ime mkpebi dị mma na ọ bụghị ezigbo mma na nkwupụta.
Nsogbu: Blockchains enwebeghị ọnụ
Taa, mbọ nke ọtụtụ ndị mmepe na-achọ ime blockchain ka ọ bụrụ teknụzụ dabara adaba n'ezie, ọ bụghị bọmbụ oge na mkpuchi mara mma. Ọwa steeti, mweghachi nwere nchekwube, plasma na sharding ga-abụ ihe a na-ahụkarị. Otu ụbọchị. Ma ọ bụ ikekwe TON ga-eyigharịrị mmalite ahụ ọzọ ọnwa isii, Plasma Group na-esote ga-akwụsị ịdị adị. Anyị nwere ike ikwere na map na-esote wee gụọ akwụkwọ ọcha na-egbuke egbuke n'abalị, ma ebe a na ugbu a anyị kwesịrị iji ihe anyị nwere mee ihe. Mere ihe ọjọọ.
Ọrụ e debere maka ndị otu anyị na ọrụ ugbu a na-ele anya n'ozuzu dị ka nke a: e nwere ọtụtụ isiokwu, na-eru ọtụtụ puku, ndị na-achọghị iwulite mmekọrịta na ntụkwasị obi; Ọ dị mkpa iji wuo ihe ngwọta na DLT nke ga-arụ ọrụ na PC ndị nkịtị na-enweghị ihe ọ bụla chọrọ ịrụ ọrụ pụrụ iche ma nye ahụmịhe onye ọrụ adịghị njọ karịa sistemụ ndekọ ego ọ bụla. Teknụzụ dị n'azụ ngwọta ga-ebelata ohere nke iji data ọjọọ eme ihe - ya mere blockchain ji nọrọ ebe a.
Okwu sitere na akwụkwọ ọcha na mgbasa ozi na-ekwe anyị nkwa na mmepe na-esote ga-enye anyị ohere ịme ọtụtụ nde azụmahịa kwa sekọnd. Gịnị bụ n'ezie?
Mainnet Ethereum na-agba ọsọ na ~ 30 tps. N'ihi naanị nke a, ọ na-esiri ike ịghọta ya dị ka blockchain n'ụzọ ọ bụla dabara adaba maka mkpa ụlọ ọrụ. N'ime ngwọta enyere ikike enwere akara ngosi na-egosi 2000 tps (ma ọ bụ 3000 tps, enwere ntakịrị ntakịrị na mbipụta ahụ, mana ịkwesịrị iburu n'uche na a na-eme akara ngosi ahụ na engine nkwenye ochie). bụ , nke nyere bụghị nsonaazụ kacha njọ, 20000 tps, ma ruo ugbu a nke a bụ naanị nchọpụta agụmakwụkwọ, na-echere mmejuputa ya siri ike. O yighị ka ụlọ ọrụ nke nwere ike ịkwado ngalaba nke ndị mmepe blockchain ga-edobe ihe ngosi dị otú ahụ. Mana nsogbu abụghị naanị site na ntinye, enwerekwa latency.
latency
Oge igbu oge site na mgbe a malitere azụmahịa na nkwenye ikpeazụ ya site na usoro ahụ na-adabere ọ bụghị naanị na ọsọ nke ozi na-agafe na ọkwa niile nke nkwado na ịtụ anya, kamakwa na ngọngọ nhazi ntọala. Ọ bụrụgodị na blockchain anyị na-enye anyị ohere ime ọsọ ọsọ nke 1000000 tps, mana ọ chọrọ nkeji iri iji mepụta ngọngọ 10 MB, ọ ga-adịrị anyị mfe?
Ka anyị lebakwuo anya na usoro ndụ azụmahịa na Hyperledger Fabric ka anyị ghọta ebe a na-eji oge na otu o si metụta igbochi ọgbọ ọgbọ.

ewepụtara ya ebe a:
(1) Onye ahịa ahụ na-emepụta azụmahịa, na-eziga ya na ndị ọgbọ na-akwado ya, nke ikpeazụ na-eme ka azụmahịa ahụ (tinye mgbanwe nke chaincode mere na steeti dị ugbu a, mana etinyela akwụkwọ akụkọ) wee nweta RWSet - aha isi, nsụgharị na ụkpụrụ . ewepụtara na mkpokọta na CouchDB, (2) ndị nkwado na-ezigara onye ahịa RWSet bịanyere aka n'akwụkwọ, (3) onye ahịa ahụ na-enyocha ọnụnọ nke mbinye aka nke ndị ọgbọ niile (ndị nkwado), wee ziga azụmahịa ahụ na ọrụ ịtụ ahịa. , ma ọ bụ na-eziga ya na-enweghị nkwenye (ntụle nlele ahụ ka ga-eme ma emesịa), ọrụ inye iwu na-emepụta ngọngọ na (4) na-ezigaghachi ndị ọgbọ niile, ọ bụghị naanị ndị nkwado; Ndị ọgbọ na-enyocha na isi nsụgharị dị na nhazi ọgụgụ dabara na nsụgharị dị na nchekwa data, na ndị nkwado niile nwere mbinye aka, ma mesịa mee ngọngọ ahụ.
Ma ọ bụghị naanị nke ahụ. Okwu a bụ "onye na-eme ihe na-emepụta ngọngọ" na-ezobe ọ bụghị naanị nhazi nke azụmahịa, kamakwa arịrịọ netwọk nke 3 nke onye isi na ndị na-eso ụzọ na azụ: onye ndu na-agbakwụnye ozi na ndekọ ahụ, na-ezigara ndị na-eso ụzọ ya, nke ikpeazụ na-agbakwụnye ya. na log ha, na-eziga nkwenye nke mmegharị nke ọma na onye ndu, onye ndu na-eme ozi ahụ, na-eziga nkwenye nye ndị na-eso ụzọ, ndị na-eso ụzọ eme. Ka obere nha na oge nhazi ngọngọ, ka ọtụtụ mgbe, ọrụ ịtụ ahịa ga-ewepụta nkwekọrịta.. Hyperledger Fabric nwere parampat abụọ maka nhazi ngọngọ: BatchTimeout - oge nhazi oge na BatchSize - nha ngọngọ (ọnụọgụ azụmahịa na nha nke ngọngọ n'onwe ya na bytes). Ozugbo otu n'ime paramita ahụ ruru oke, a na-ewepụta ngọngọ ọhụrụ. Ka ọnụ ọgụgụ dị ukwuu, ka nke a ga-ewe ogologo oge. Yabụ, ịkwesịrị ịbawanye BatchTimeout na BatchSize. Mana ebe ọ bụ na mbipute RWSets, ka nnukwu ngọngọ anyị na-eme, ka enwere ike inwe esemokwu MVCC dị elu. Na mgbakwunye, ka BatchTimeout na-abawanye, UX na-emebi mbibi. Atụmatụ na-esonụ maka idozi nsogbu ndị a yiri ihe ezi uche dị na ya na ihe doro anya nye m.
Otu esi zere ichere maka njedebe ngọngọ ma ghara ịla n'iyi iji soro ọnọdụ azụmahịa
Ogologo oge nhazi na nha ngọngọ, ka ntinye nke blockchain na-abawanye. Otu anaghị eso nke ọzọ ozugbo, mana ekwesịrị icheta na ịmepụta nkwenye na RAFT chọrọ arịrịọ netwọk atọ site n'aka onye isi na ndị na-eso ụzọ na azụ. Ka ọnụ ọgụgụ dị ukwuu, ka nke a ga-ewe ogologo oge. Obere nha na oge nke imepụta ngọngọ, ka enwere mmekọrịta dị otú ahụ. Kedu ka esi emewanye oge ọgbọ na igbochi nha na-enweghị ịbawanye oge nzaghachi usoro maka onye ọrụ njedebe?
Mbụ, anyị kwesịrị n'ụzọ ụfọdụ dozie MVCC esemokwu kpatara a nnukwu ngọngọ size, nke nwere ike ịgụnye dị iche iche RWSets na otu ụdị. N'ụzọ doro anya, n'akụkụ ndị ahịa (n'ihe metụtara netwọk blockchain, nke a nwere ike ịbụ azụ azụ, m na-ekwukwa ya) ị chọrọ. Onye njikwa esemokwu MVCC, nke nwere ike ịbụ ma ọ bụ ọrụ dị iche iche ma ọ bụ onye na-eme ihe ịchọ mma mgbe niile n'elu oku na-amalite azụmahịa na mgbagha ọzọ.
Enwere ike iji atụmatụ mgbawa mejuputa nnwale ọzọ, mana mgbe ahụ ịla azụ ga-eweda ya nke ukwuu. Yabụ ị ga-eji ma ọ bụ nyochagharị enweghị usoro n'ime obere oke ụfọdụ, ma ọ bụ nke na-adịgide adịgide. Na anya na ndakọrịta enwere ike na nhọrọ mbụ.
Nzọụkwụ ọzọ bụ ime ka mmekọrịta nke onye ahịa na sistemụ ahụ ghara ichere 15, 30 ma ọ bụ 10000000 sekọnd, nke anyị ga-edozi dị ka BatchTimeout. Ma n'otu oge ahụ, ọ dị mkpa iji nọgide na-enwe ike iji nyochaa na mgbanwe ndị malitere site na azụmahịa bụ / adịghị edekọ na blockchain.
Enwere ike iji nchekwa data chekwaa ọkwa azụmahịa. Nhọrọ kachasị mfe bụ CouchDB n'ihi na ọ dị mfe iji: nchekwa data nwere UI n'ime igbe ahụ, API REST, ma ị nwere ike ịhazigharị ya na nhazi ya ngwa ngwa. Ị nwere ike ịmepụta mkpokọta dị iche iche n'otu ihe atụ CouchDB nke na-eji Fabric chekwaa steeti ụwa ya. Anyị kwesịrị ịchekwa ụdị akwụkwọ ndị a.
{
Status string // Статус транзакции: "pending", "done", "failed"
TxID: string // ID транзакции
Error: string // optional, сообщение об ошибке
}Edere akwụkwọ a na nchekwa data tupu ezigara ndị ọgbọ azụmahịa ahụ, a na-eweghachi onye ọrụ ID ID ahụ (a na-eji otu ID ahụ dị ka igodo) ma ọ bụrụ na nke a bụ ọrụ okike, na ọnọdụ ọnọdụ, TxID na Error ubi. emelitere ka a na-enweta ozi dị mkpa n'aka ndị ọgbọ.

N'ime atụmatụ a, onye ọrụ anaghị echere ka ngọngọ ahụ mechaa, na-ekiri wheel na-agbagharị na ihuenyo maka 10 sekọnd, ọ na-enweta nzaghachi ozugbo site na usoro ahụ ma nọgide na-arụ ọrụ.
Anyị họọrọ BoltDB iji chekwaa ọnọdụ azụmahịa n'ihi na anyị kwesịrị ịchekwa ebe nchekwa ma achọghị ịla oge na mmekọrịta netwọk na sava nchekwa data dị iche, karịsịa mgbe mmekọrịta a na-eme site na iji usoro ederede doro anya. Site n'ụzọ, ma ị na-eji CouchDB iji mejuputa atụmatụ akọwara n'elu ma ọ bụ naanị iji chekwaa steeti ụwa, n'ọnọdụ ọ bụla ọ bụ ihe ezi uche dị na ya ịkwalite ụzọ echekwara data na CouchDB. Site na ndabara, na CouchDB, nha b-osisi ọnụ bụ 1279 bytes, nke dị ntakịrị karịa nha ngalaba na diski ahụ, nke pụtara ma ịgụ na ịhazigharị osisi ahụ ga-achọ ohere ịnweta diski ahụ. Ogo kachasị mma dabara na ọkọlọtọ na 4 kilobytes. Iji bulie elu anyị kwesịrị ịtọ oke btree_chunk_size hà nhata 4096 na faịlụ nhazi CouchDB. Maka BoltDB ntinye aka dị otú ahụ .
Nrụgide azụ: atụmatụ nchekwa
Mana enwere ike inwe ọtụtụ ozi. Karịrị usoro ahụ nwere ike ijikwa, ịkekọrịta akụrụngwa na ọrụ iri na abuo ndị ọzọ ma e wezụga ndị egosiri na eserese ahụ - na ihe a niile kwesịrị ịrụ ọrụ n'enweghị ntụpọ ọbụlagodi na igwe nke na-agba Intellij Idea ga-agwụ ike.
A na-edozi nsogbu nke ikike dị iche iche nke usoro nkwurịta okwu, ndị na-emepụta ihe na ndị na-azụ ahịa, n'ụzọ dị iche iche. Ka anyị hụ ihe anyị nwere ike ime.
Ibelata: Anyị nwere ike ikwu na anyị nwere ike nhazi na ọtụtụ X azụmahịa na T sekọnd. Arịrịọ niile gafere oke a na-atụfu. Nke a dị nnọọ mfe, ma mgbe ahụ ị nwere ike ichefu banyere UX.
Na-achịkwa: onye na-azụ ahịa ga-enwerịrị ụdị interface nke, dabere na ibu ahụ, ọ nwere ike ijikwa TPS nke onye na-emepụta ihe. Ọ bụghị ihe ọjọọ, ma ọ na-amanye ọrụ na ndị mmepe nke onye ahịa na-emepụta ibu iji mejuputa interface a. Nke a bụ ihe na-adịghị anabata maka anyị, ebe ọ bụ na a ga-ejikọta blockchain n'ọdịnihu n'ime ọnụ ọgụgụ buru ibu nke usoro dị ogologo.
Ebu: Kama ịnwa iguzogide iyi data ntinye, anyị nwere ike chekwaa iyi a ma hazie ya na ọsọ achọrọ. O doro anya na nke a bụ ngwọta kachasị mma ma ọ bụrụ na anyị chọrọ ịnye ezigbo ahụmịhe onye ọrụ. Anyị ji kwụ n'ahịrị na RabbitMQ mejuputa ihe nchekwa ahụ.

Agbakwunyere omume ọhụrụ abụọ na atụmatụ ahụ: (1) mgbe arịrịọ API rutere, a na-etinye ozi nwere paramita dị mkpa iji kpọọ azụmahịa na kwụ n'ahịrị, onye ahịa na-enweta ozi na anabatala azụmahịa ahụ. usoro, (2) backend na-agụ data na ọsọ kpọmkwem na config si kwụ n'ahịrị; na-amalite azụmahịa ma na-emelite data na ụlọ ahịa ọkwa.
Ugbu a ị nwere ike ịbawanye oge nhazi na igbochi ikike dịka ịchọrọ, na-ezochi oge n'aka onye ọrụ.
Ngwa ndị ọzọ
Ọ dịghị ihe e kwuru ebe a banyere chaincode, n'ihi na, dị ka a na-achị, ọ dịghị ihe na-ebuli na ya. Chaincode kwesịrị ịdị mfe yana nchekwa dịka o kwere mee - nke ahụ bụ ihe achọrọ na ya. Usoro ahụ na-enyere anyị aka ide chaincode dị mfe yana n'enweghị nsogbu sitere na S7 Techlab na static analyzer .
Na mgbakwunye, ndị otu anyị na-emepụta ihe eji arụ ọrụ iji mee ka ịrụ ọrụ na Fabric dị mfe ma na-atọ ụtọ: , ngwa maka (na-agbakwụnye / wepụ òtù, RAFT ọnụ), ịba uru maka . Ọ bụrụ na ị chọrọ inye aka, ị na-anabata.
nkwubi
Usoro a na-enye gị ohere iji Quorum dochie Hyperledger Fabric n'ụzọ dị mfe, netwọk Ethereum ndị ọzọ (PoA ma ọ bụ ọbụna PoW), na-ebelata mmepụta ihe n'ezie, ma n'otu oge ahụ na-ejigide UX nkịtị (ma maka ndị ọrụ na ihe nchọgharị na maka usoro nhazi). Mgbe ị na-edochi ákwà na Ethereum na atụmatụ ahụ, ọ ga-adị mkpa ka ị gbanwee echiche nke ọrụ nyochaghachi / onye na-achọ mma site na nhazi esemokwu MVCC ka ọ bụrụ ihe na-adịghị na atomic nonce increment na resending. Ndokwa na nchekwa ọkwa mere ka o kwe omume ịwepu oge nzaghachi site na oge nhazi ngọngọ. Ugbu a, ị nwere ike ịgbakwunye ọtụtụ puku ọnụ ọnụ ọnụ ma atụla egwu na a na-emepụta ihe mgbochi ọtụtụ mgbe ma buru ọrụ nhazi.
N'ụzọ bụ isi, nke ahụ bụ naanị ihe m chọrọ ịkọrọ. Obi ga-adị m ụtọ ma ọ bụrụ na nke a na-enyere mmadụ aka n'ọrụ ya.
isi: www.habr.com
