Rehita Tohaina mo nga Wira: He wheako me te papanga Hyperledger

Kia ora, kei te mahi ahau i roto i te roopu o te kaupapa DRD KP (rehita raraunga tohatoha mo te aro turuki i te huringa ora o nga huinga wira). I konei e hiahia ana ahau ki te whakapuaki i nga wheako o ta matou roopu ki te whakawhanake i tetahi poraka hinonga mo tenei kaupapa i raro i nga here o te hangarau. Ka korero ahau mo te Hyperledger Fabric, engari ko te huarahi e whakaahuatia ana i konei ka taea te taapiri atu ki tetahi poraka kua whakaaetia. Ko te tino whainga o a maatau rangahau ko te whakarite i nga otinga poraka hinonga kia pai ai te hua whakamutunga ki te whakamahi me te kore e tino uaua ki te pupuri.

Karekau he kitenga, he otinga ohorere, karekau he whanaketanga ahurei ka whakaatuhia ki konei (no te mea kaore au). Kei te hiahia noa ahau ki te whakapuaki i taku wheako ngawari, whakaatu "i taea" me, pea, panui mo nga wheako o etahi atu mo te whakatau pai me te kore e tino pai i roto i nga korero.

Raruraru: Kare ano kia tauine nga mekameka poraka

I tenei ra, ko nga mahi a nga kaihanga maha e whai ana ki te hanga poraka he hangarau tino watea, a ehara i te poma wa i roto i te takai ataahua. Ko nga hongere o te kawanatanga, te hurihanga pai, te plasma me te sharding ka noho noa. I etahi ra. Akene ka hikitia ano e TON te whakarewatanga mo nga marama e ono, ka mutu te noho o te roopu Plasma e whai ake nei. Ka taea e tatou te whakapono ki te mahere huarahi e whai ake nei me te panui i nga pepa maamaa maamaa i te po, engari i konei a inaianei me mahi tatou ki nga mea kei a tatou. Kia pai te mahi.

Ko te ahua o nga mahi kua whakaritea mo ta matou roopu i roto i te kaupapa o naianei he penei te ahua: he maha nga kaupapa, tae atu ki te tini mano, kaore e hiahia ki te hanga hononga i runga i te whakawhirinaki; He mea tika ki te hanga i tetahi otinga i runga i te DLT ka mahi i runga i nga PC noa kaore he whakaritenga mahi motuhake me te whakarato i te wheako kaiwhakamahi kaore he kino atu i nga punaha kaute kaute. Ko te hangarau kei muri i te otinga me whakaiti i te tupono o te raweke kino o nga raraunga - na reira kei konei poraka a.

Ko nga pepeha mai i nga pepa maa me te hunga panui e oati ana ma te whanaketanga e whai ake nei ka taea e tatou te hanga miriona tauwhitinga mo ia hekona. He aha tena?

Kei te rere a Mainnet Ethereum i tenei wa ~30 tps. Na tenei anake, he uaua ki te kii he poraka i nga huarahi e tika ana mo nga hiahia umanga. I roto i nga otinga kua whakaaetia he tohu tohu e whakaatu ana i te 2000 tps (Pŭpŭ) ranei 3000 tps (Te Hiko Kaiparau, he iti ake i roto i te whakaputanga, engari me whai whakaaro koe i mahia te tohu tohu i runga i te miihini whakaaetanga tawhito). Ko he ngana ki te tukatuka Fabric radical, kaore nga hua kino rawa atu, 20000 tps, engari i tenei wa he rangahau matauranga noa tenei, e tatari ana mo tana whakatinanatanga pumau. Kaore pea he kaporeihana e kaha ana ki te pupuri i tetahi tari o nga kaiwhakawhanake poraka ka mau ki nga tohu penei. Engari ko te raru ehara i te puta noa, kei reira ano hoki te roa.

Tuhinga

Ko te whakaroa mai i te wa i timatahia ai tetahi tauwhitinga ki tana whakaaetanga whakamutunga e te punaha, ehara i te mea ko te tere o te haere o te karere i roto i nga waahanga katoa o te whakamana me te ota, engari ki nga tawhā hanga poraka. Ahakoa ka taea e to maatau poraka te mahi i te tere o te 1000000 tps, engari me 10 meneti hei whakaputa i te poraka 488 MB, ka ngawari ake mo tatou?

Kia ata titiro ki te huringa ora o te tauwhitinga i roto i te papanga Hyperledger kia mohio ai kei hea te wa e pau ana me te hono ki te aukati i nga tawhā whakatipuranga.

Rehita Tohaina mo nga Wira: He wheako me te papanga Hyperledger
tangohia mai i konei: hyperledger-fabric.readthedocs.io/en/release-1.4/arch-deep-dive.html#swimlane

(1) Ka hangaia e te kiritaki he tauwhitinga, ka tukuna ki te tautoko i nga hoa, ka whakatauhia e te hunga o muri te tauwhitinga (whakamahia nga huringa i mahia e te waehere mekameka ki te ahua o naianei, engari kaua e tuku ki te pukapuka pukapuka) ka whiwhi RWSet - ingoa matua, putanga me nga uara ​i tangohia mai i te kohinga i CouchDB, (2) ka tukuna e nga kaitautoko he RWSet kua hainatia ki te kiritaki, (3) ka tirohia e te kiritaki te waahi o nga hainatanga o nga hoa katoa e tika ana (kaiwhakahoki), ka tukuna atu te tauwhitinga ki te ratonga tono. , ka tukuna atu ranei me te kore manatoko (ka noho tonu te haki i muri mai), ka hangaia e te ratonga ota he poraka me te (4) ka whakahoki atu ki nga hoa katoa, kaua ki nga kaitautoko anake; Ka tirohia e nga hoa ko nga putanga matua o te huinga panui e rite ana ki nga putanga o te paataka korero, he hainatanga nga kai tautoko katoa, ka mutu ka mahia te poraka.

Engari ehara ko tera anake. Ko nga kupu "ka hangaia he poraka" e huna ana i te raupapa o nga whakawhitiwhitinga, engari ano hoki e 3 nga tono whatunga raupapa mai i te kaiarahi ki nga kaiwhaiwhai me te hoki mai: ka taapirihia e te kaiarahi he panui ki te raarangi, ka tukuna atu ki nga kaiwhaiwhai, ka taapirihia e muri. ki to ratou pororakau, ka tukuna he whakapumautanga mo te tukuruatanga angitu ki te kaihautu, ka tukuna e te kaihautu te karere, ka tuku whakapumautanga ki te hunga whai, ka mahia e nga kaiwhaiwhai. Ko te iti ake o te rahi me te wa o te hanga poraka, ko te nuinga o nga wa ka whakatauhia e te ratonga ota te whakaaetanga. E rua nga tawhā a Hyperledger Fabric mo te hanga poraka: BatchTimeout - te wa hanga poraka me te BatchSize - te rahi poraka (te maha o nga whakawhitinga me te rahi o te poraka i roto i nga paita). Ka tae tetahi o nga tawhā ki te rohe, ka tukuna he poraka hou. Ko te nui ake o nga node ota, ka roa ake tenei. No reira, me whakanui koe i te BatchTimeout me te BatchSize. Engari i te mea kua whakaputahia nga RWSets, ka nui ake te poraka ka mahia e matou, ka nui ake te tupono o nga papā MVCC. I tua atu, ka piki ake te BatchTimeout, ka tino heke te UX. Ko te kaupapa e whai ake nei mo te whakaoti i enei rapanga he ahua whaitake, he maamaa ki ahau.

Me pehea te karo i te tatari mo te whakaoti poraka me te kore e ngaro te kaha ki te whai i te mana tauwhitinga

Ko te roa o te wa hanga me te rahi o te poraka, ko te teitei ake o te whakaputanga o te poraka. Kaore tetahi e whai tika mai i tetahi atu, engari me maumahara ko te whakatu i te whakaaetanga i roto i te RAFT me toru nga tono whatunga mai i te kaiarahi ki nga kaiwhaiwhai me muri. Ko te nui ake o nga node ota, ka roa ake tenei. Ko te iti ake o te rahi me te wa o te hanga poraka, ka nui ake nga taunekeneke penei. Me pehea te whakanui ake i te wa whakatipuranga me te rahi o te poraka me te kore e whakanui ake i te wa whakautu punaha mo te kaiwhakamahi mutunga?

Tuatahi, me whakatau e matou nga papā MVCC na te rahi o te poraka nui, tera pea he rereke nga RWSets me te ahua rite. Ma te mohio, mo te taha o te kiritaki (e pa ana ki te whatunga poraka, koinei pea te tuara, a ko taku tikanga) me hiahia koe MVCC kaiwhawhai pakanga, ka taea he ratonga motuhake, he whakapaipai auau i runga ake i te waea ka timata te tauwhitinga me te arorau ngana ano.

Ka taea te whakatinana i te ngana ano me te rautaki taupuke, engari ka heke te roanga o te waa. Na me whakamahi koe i te ngana matapōkeretia i roto i etahi rohe iti, i te waa tonu ranei. Ma te titiro ki nga tukinga ka taea i te whiringa tuatahi.

Ko te mahi e whai ake nei ko te whakakorikori i te taunekeneke a te kiritaki me te punaha kia kore ai e tatari mo te 15, 30, 10000000 hēkona ranei, ka tohua hei BatchTimeout. Engari i te wa ano, he mea tika kia mau tonu te kaha ki te manatoko ko nga huringa i timatahia e te tauwhitinga kaore i tuhia i roto i te poraka.
Ka taea te whakamahi i te putunga raraunga hei penapena i te mana tauwhitinga. Ko te kowhiringa ngawari ko CouchDB na te ngawari o te whakamahi: he UI kei waho o te pouaka te papaaarangi, he REST API, a ka taea e koe te whakarite i te tukurua me te tohatoha mo taua mea. Ka taea e koe te hanga i tetahi kohinga motuhake i roto i te tauira CouchDB kotahi e whakamahi ana i te Fabric ki te penapena i tona ahuatanga o te ao. Me penapena enei momo tuhinga.

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

Ka tuhia tenei tuhinga ki te papaaarangi i mua i te tukunga atu o te tauwhitinga ki nga hoa, ka whakahokia te ID hinonga ki te kaiwhakamahi (ko taua ID ano ka whakamahia hei taviri) mena he mahi hangahanga tenei, katahi ko nga mara Tūnga, TxID me te Hapa. ka whakahouhia i te mea ka tae mai nga korero e tika ana mai i nga hoa.

Rehita Tohaina mo nga Wira: He wheako me te papanga Hyperledger

I roto i tenei kaupapa, kaore te kaiwhakamahi e tatari kia puta te poraka, ka maataki i te wira hurihuri i runga i te mata mo te 10 hēkona, ka whiwhi ia i te whakautu tere mai i te punaha ka mahi tonu.

I whiriwhiria e matou a BoltDB ki te penapena i nga ahuatanga tauwhitinga na te mea me penapena te mahara me te kore e hiahia ki te moumou taima i runga i te hononga whatunga me te tūmau pātengi raraunga motuhake, ina koa ka puta tenei taunekeneke ma te whakamahi i te kawa tuhinga maamaa. Ma te ara, ahakoa ka whakamahi koe i te CouchDB ki te whakatinana i te kaupapa kua whakaahuahia i runga ake nei, ki te penapena noa ranei i nga ahuatanga o te ao, ahakoa he mea tika ki te arotau i te ahua o te penapena raraunga ki CouchDB. Ma te taunoa, i roto i te CouchDB, ko te rahi o nga node b-rakau he 1279 paita, he iti ake i te rahi o te rängai i runga i te kōpae, ko te tikanga o te panui me te whakahoki ano i te rakau ka nui ake te urunga tinana ki te kōpae. Ko te rahi tino pai e rite ana ki te paerewa Hōputu Aratau me te 4 kiropaita. Ki te arotau me tautuhi i te tawhā btree_chunk_size rite ki te 4096 i roto i te konae whirihoranga CouchDB. Mo BoltDB taua wawaotanga a-ringa kaua e hiahiatia.

Te whakamuri: rautaki parepare

Engari tera pea he maha nga karere. He nui ake i te kaha o te punaha, te tohatoha rauemi ki etahi atu tatini ratonga i tua atu i era e whakaatuhia ana i roto i te hoahoa - a ko enei mea katoa me mahi koretake ahakoa i runga i nga miihini e whakahaere ana a Intellij Idea ka tino hoha.

Ko te raruraru o te kaha rereke o nga punaha whakawhitiwhiti, te kaihanga me te kaihoko, ka whakatauhia i roto i nga huarahi rereke. Kia kite tatou he aha ka taea e tatou.

Ka mutu: Ka taea e matou te kii ka taea e matou te tukatuka i te nuinga o nga whakawhitinga X i roto i te T hēkona. Ko nga tono katoa ka nui ake i tenei tepe ka makahia. He tino ngawari tenei, engari ka wareware koe mo te UX.

Te whakahaere: me whai momo atanga te kaihoko, na runga i te kawenga, ka taea e ia te whakahaere i te TPS o te kaihanga. Ehara i te kino, engari ka tukuna he here ki nga kaihanga o te kiritaki e hanga ana i te kawenga ki te whakatinana i tenei atanga. Kaore tenei e whakaaetia mo matou, na te mea ka whakauruhia te poraka i te wa kei te heke mai ki te maha o nga punaha kua roa.

Whakawhitu: Engari i te ngana ki te aukati i te awa raraunga whakauru, ka taea e tatou te aukati i tenei awa me te tukatuka i te tere e hiahiatia ana. Maamaa koinei te otinga pai mena ka hiahia matou ki te whakarato wheako kaiwhakamahi pai. I whakatinanahia e matou te parapara ma te whakamahi i te rarangi i RabbitMQ.

Rehita Tohaina mo nga Wira: He wheako me te papanga Hyperledger

E rua nga mahi hou kua taapirihia ki te kaupapa: (1) i muri i te taenga mai o te tono ki te API, ka tukuna he karere me nga tawhā e tika ana ki te karanga i tetahi tauwhitinga ki roto i te rarangi, a ka whiwhi te kaihoko i te panui kua whakaaehia te tauwhitinga e te punaha, (2) ka panuihia e te tuara nga raraunga i te tere kua tohua ki te whirihora mai i te rarangi; ka timata i te tauwhitinga me te whakahou i nga raraunga i roto i te toa mana.
Inaianei ka taea e koe te whakanui ake i te waa hanga me te aukati i te kaha ki te hiahia koe, ka huna i nga whakaroa mai i te kaiwhakamahi.

Ētahi atu taputapu

Kaore he korero i konei mo te chaincode, na te mea, hei tikanga, kaore he mea hei whakapai ake i roto. Ko te Chaincode kia ngawari me te haumaru ka taea - heoi ano nga mea e hiahiatia ana. Ko te angamahi ka awhina i a maatau ki te tuhi i te waehere mekameka kia ngawari me te haumaru CCKit mai i te S7 Techlab me te kaitirotiro pateko whakaora^CC.

Hei taapiri, kei te whanakehia e ta maatau roopu he huinga taputapu kia pai ai te mahi me te Fabric: kaihōpara poraka, he whaipainga mo huringa whirihoranga whatunga aunoa (te taapiri/tango whakahaere, RAFT pona), whaipainga mo te whakakore i nga tiwhikete me te tango i te tuakiri. Mena kei te pirangi koe ki te koha, nau mai.

mutunga

Ma tenei huarahi ka taea e koe te whakakapi ngawari i a Hyperledger Fabric me te Quorum, etahi atu whatunga Ethereum tūmataiti (PoA, ara PoW ranei), ka tino whakaitihia te whakaputanga tuuturu, engari i te wa ano ka mau tonu te UX (mo nga kaiwhakamahi i roto i te tirotiro me nga punaha whakauru). Ina whakakapia te Fabric ki te Ethereum i roto i te kaupapa, ka hiahia koe ki te huri i te arorau o te ratonga ngana ano/whakapaipai mai i te tukatuka i nga papā MVCC ki te pikinga nonce ngota me te tuku ano. Ko te putunga me te rokiroki mana i taea te wehe i te wa whakautu mai i te wa hanga poraka. Inaianei ka taea e koe te taapiri i nga mano tini o nga node ota me te kore e mataku kei te hanga nga poraka i nga wa maha ka utaina te ratonga ota.

Ko te tikanga, koinei anake taku hiahia ki te whakapuaki. Ka koa ahau mena ka awhina tenei i tetahi ki a raatau mahi.

Source: will.com

Tāpiri i te kōrero