Distributed Registry for Wheelsets: Chiitiko neHyperledger Fabric

Mhoroi, ini ndinoshanda muchikwata cheDRD KP chirongwa (yakagoverwa data registry yekutarisa kutenderera kwehupenyu hwemavhiri seti). Pano ndinoda kugovera ruzivo rwechikwata chedu mukugadzira bhizinesi blockchain yepurojekiti iyi pasi pezvirambidzo zvetekinoroji. Kune chikamu chikuru, ini ndichave ndichitaura nezve Hyperledger Fabric, asi nzira inotsanangurwa pano inogona kuwedzeredzwa kune chero yakabvumidzwa blockchain. Chinangwa chekupedzisira chekutsvaga kwedu ndechekugadzirira bhizinesi blockchain mhinduro nenzira yekuti chigadzirwa chekupedzisira chinonakidza kushandisa uye kwete chakanyanya kuoma kuchengetedza.

Pachave pasina kuwanikwa, mhinduro dzisingatarisirwe, uye hapana chakasarudzika budiriro ichafukidzwa pano (nekuti handina). Ini ndinongoda kugovera ruzivo rwangu rwekuzvininipisa, kuratidza kuti "zvaibvira" uye, zvichida, kuverenga pamusoro pezvakaitika kune mumwe munhu mukuita zvakanaka uye kwete zvisarudzo zvakanaka mumashoko.

Dambudziko: blockchains haisati yawedzera

Nhasi, kuedza kwevazhinji vanogadzira kwakanangana nekuita iyo blockchain tekinoroji yakanyatso kurongeka, uye kwete bhomba renguva yekukwevera mune yakanakisa kuputira. Zviteshi zvehurumende, optimistic rollup, plasma uye sharding zvinogona kuve zvakajairika. Rimwe zuva. Kana kuti pamwe TON ichamisa zvakare kutanga kwemwedzi mitanhatu, uye inotevera Plasma Group icharega kuvapo. Tinogona kutenda mune imwe mepu yemugwagwa uye kuverenga mapepa machena anopenya usiku, asi pano uye zvino isu tinofanirwa kuita chimwe chinhu nezvatinazvo. Ita tsvina.

Basa rakapiwa kuboka redu mubasa remazuva ano rinoratidzika seizvi mumashoko ose: kune zvidzidzo zvakawanda, kusvika kune zviuru zvakawanda, vasingadi kuvaka hukama pakuvimba; zvinodikanwa kuvaka paDLT mhinduro inoshanda pamaPC akajairwa pasina zvakakosha kuita zvinodiwa uye inopa ruzivo rwemushandisi kwete yakaipisisa kupfuura chero centralized accounting system. Iyo tekinoroji kuseri kwemhinduro kunofanirwa kudzikisa mukana wekukanganisa data manipulation - ndosaka blockchain iri pano.

Slogan kubva kuwhitepapers uye midhiya inotivimbisa kuti budiriro inotevera ichabvumira mamirioni ekutengeserana pasekondi. Chii chaizvo?

Mainnet Ethereum parizvino iri kushanda pa ~ 30 tps. Nekuda kweizvi chete, zvakaoma kuti uzvione se blockchain iyo iri munzira ipi neipi yakakodzera kune zvinodiwa nemakambani. Pakati pemhinduro dzakabvumidzwa, mabhenji anoratidza 2000 tps anozivikanwa (Quorum) kana 3000 tps (Hyperledger Fabric, pane zvishoma zvishoma mukudhindwa, asi ramba uchifunga kuti bhenji yakaitwa painjini yekare yekubvumirana). Was kuyedza kuita zvakanyanya rework Fabric, iyo isina kupa mhedzisiro yakaipisisa, 20000 tps, asi kusvika zvino izvi zvingori zvidzidzo zvedzidzo zvakamirira kuita kwavo kwakadzikama. Hazvigoneki kuti mubatanidzwa unokwanisa kuchengetedza dhipatimendi revagadziri ve blockchain vanoisa zviratidzo zvakadaro. Asi dambudziko harisi chete mukubuda, kune zvakare latency.

Latency

Iko kunonoka kubva panguva iyo kutengeserana kwakatangwa kusvika kubvumidzwa kwayo kwekupedzisira neiyo sisitimu kunoenderana kwete chete nekumhanya kwemeseji inopfuura nematanho ese ekusimbisa uye kurongeka, asiwo pamatanho ekugadzira block. Kunyangwe blockchain yedu ichitibvumidza kuita pa1000000 tps, asi zvinotora maminetsi gumi kuumba 10MB block, zvichatiitira nyore here?

Ngatitarisei zvakanyanya kutenderera kwehupenyu hwekutengeserana muHyperledger Fabric kuti tinzwisise zvinotora nguva uye kuti zvine hukama sei nekuvhara magadzirirwo ekugadzirisa.

Distributed Registry for Wheelsets: Chiitiko neHyperledger Fabric
kutorwa kubva pano: hyperledger-fabric.readthedocs.io/en/release-1.4/arch-deep-dive.html#swimlane

(1) Mutengi anoita kutengeserana, anoitumira kune vanobvumira vezera, iyo yekupedzisira inoteedzera kutengeserana (shandisa shanduko dzakaitwa nechaincode kune yazvino mamiriro, asi usazvipira kune ledger) uye gamuchira RWSet - akakosha mazita, shanduro uye tsika dzakatorwa kubva muunganidzwa muCouchDB, (2) vabatsiri vanotumira iyo yakasainwa RWSet kumashure kumutengi, (3) mutengi angangotarisa masiginecha evose vanodiwa vezera (endorers), obva atumira kutengeserana kune basa rekuraira. , kana kuitumira isina kusimbiswa (kusimbisa kucharamba kuchiitika gare gare), sevhisi yekuraira inoumba bhuroko uye (4) inotumira kumashure kune vese vezera, kwete vanotsigira chete; vezera vanotarisa kuti shanduro dzekiyi mukuverenga seti dzinoenderana neshanduro dziri mudhatabhesi, masiginecha evose vanotsigira, uye pakupedzisira vape block.

Asi handizvo zvoga. Seri kwemazwi ekuti "anoronga anoumba block" yakavanzwa kwete chete kurongeka kwekutengeserana, asiwo 3 inoteedzana network zvikumbiro kubva kumutungamiri kune vateveri uye kumashure: mutungamiri anowedzera meseji kurogi, anotumira kune vateveri, iyo yekupedzisira inowedzera kune. yavo log, tumira simbiso yekubudirira kudzokorora kune mutungamiri, mutungamiri anoita meseji, anotumira simbiso yekuzvipira kune vateveri, vateveri vanozvipira. Iyo diki saizi yebhuroka uye nguva, kazhinji iyo sevhisi yekuraira ichafanirwa kumisikidza kubvumirana. Hyperledger Fabric ine maviri block block parameters: BatchTimeout - block yekugadzira nguva uye BatchSize - block size (nhamba yekutengeserana uye saizi yebhuroka pachayo mumabhayiti). Pangosvika imwe yeparamendi yasvika pamuganho, bhuroka nyowani inoburitswa. Kunyanya kuodha node, zvinotora nguva yakareba. Naizvozvo, iwe unofanirwa kuwedzera BatchTimeout uye BatchSize. Asi sezvo maRWSets akashandurwa, kukura kwatinoita bhuroko, kunowedzera mukana wekukonana kweMVCC. Uye zvakare, nekuwedzera kweBatchTimeout, UX inodzikisira zvine njodzi. Zvinoita kwandiri zvine musoro uye zviri pachena chirongwa chinotevera chekugadzirisa aya matambudziko.

Maitiro ekudzivirira kumirira kupedzisa block uye usarasikirwe nemamiriro ekutengeserana

Iyo yakareba iyo nguva yekugadzira uye saizi yebhuroka, inokwirisa iyo kuburikidza neiyo blockchain. Imwe haiteveri zvakananga kubva kune imwe, asi zvinofanirwa kuyeukwa kuti kumisa kubvumirana muRAFT kunoda matatu network zvikumbiro kubva kumutungamiri kune vateveri uye kumashure. Kunyanya kurongeka node, iyo inotora nguva yakareba. Iyo diki saizi uye nguva yekugadzira block, iyo yakawanda yekudyidzana kwakadaro. Nzira yekuwedzera sei nguva yekugadzira uye kuvhara saizi pasina kuwedzera nguva yekupindura system yemushandisi wekupedzisira?

Kutanga, iwe unofanirwa kugadzirisa kusawirirana kweMVCC kunokonzerwa nehukuru hwebhuroka, iyo inogona kusanganisira maRWSets akasiyana neshanduro imwechete. Zviripachena, kudivi remutengi (zvichienderana neiyo blockchain network, izvi zvinogona kunge zviri backend, uye ndinozvireva) MVCC gakava rinobata, inogona kunge iri sevhisi yakaparadzana kana mugadziri wenguva dzose pamusoro pekutengesa-kutanga kufona nekuedzazve kufunga.

Kuedzazve kunogona kuitwa neexponential strategy, asi ipapo iyo latency inodzikisira exponentially zvakare. Saka iwe unofanirwa kushandisa chero randomized kuedza zvakare mukati memamwe madiki madiki, kana anogara aripo. Neziso kune zvinogona kudhumhana mune yekutanga musiyano.

Danho rinotevera nderekuita kuti kudyidzana kwemutengi nehurongwa kuve asynchronous kuitira kuti irege kumirira masekonzi gumi nemashanu, makumi matatu, kana gumi, 15, yatichaisa seBatchTimeout. Asi panguva imwecheteyo, zvinodikanwa kuchengetedza kugona kuve nechokwadi chekuti shanduko dzakatangwa nekutengeserana dzakanyorwa / hadzina kunyorwa mu blockchain.
Dhatabhesi inogona kushandiswa kuchengetedza mamiriro ekutengeserana. Iyo iri nyore sarudzo ndeye CouchDB nekuda kwekureruka kwayo kwekushandisa: dhatabhesi ine UI kunze kwebhokisi, REST API, uye iwe unogona nyore kuseta kudzokorora uye sharding yayo. Iwe unogona kungogadzira yakaparadzana muunganidzwa mune imwecheteyo CouchDB muenzaniso iyo Fabric inoshandisa kuchengetedza yayo yenyika. Tinofanira kuchengeta magwaro erudzi urwu.

{
 Status string // Бтатус Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ: "pending", "done", "failed"
 TxID: string // ID Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ
 Error: string // optional, сообщСниС ΠΎΠ± ошибкС
}

Gwaro iri rinonyorerwa kudhatabhesi kutengeserana kusati kwatumirwa kune vezera, iyo ID yenhengo inodzoserwa kumushandisi (iyo ID imwechete inoshandiswa sekiyi) kana iri basa rekugadzira, uyezve Mamiriro, TxID uye Error minda. yakagadziridzwa seruzivo rwakakodzera rwunogamuchirwa kubva kune vezera.

Distributed Registry for Wheelsets: Chiitiko neHyperledger Fabric

Muchirongwa ichi, mushandisi haamirire kuti chivharo chiite, achiona vhiri rinotenderera pachiratidziri kwemasekonzi gumi, anogamuchira mhinduro pakarepo kubva kuhurongwa uye anoenderera mberi achishanda.

Isu takasarudza BoltDB kuchengetedza mameseji ekutengeserana nekuti isu tinoda kuchengetedza ndangariro uye hatidi kutambisa nguva pane network yekudyidzana neyakamira-yega database server, kunyanya kana kusangana uku kuchiitika uchishandisa plain text protocol. Nenzira, ingave iwe unoshandisa CouchDB kuita chirongwa chakatsanangurwa pamusoro kana kungochengeta nyika yenyika, chero zvakadaro, zvine musoro kukwirisa nzira iyo data inochengetwa muCouchDB. Nekumisikidza, muCouchDB, saizi ye-b-muti node i1279 bytes, iri shoma pane saizi yechikamu pane diski, izvo zvinoreva kuti zvese kuverenga nekugadzirisa zvakare muti kunoda akawanda emuviri disk kuwana. Saizi yakakwana inoenderana neyakajairwa advanced format uye 4 kilobytes. Kuti tiite optimization, isu tinofanirwa kuseta iyo parameter btree_chunk_size yakaenzana ne4096 mune iyo CouchDB yekumisikidza faira. YeBoltDB kupindira kwakadaro kwemanyorero kwete.

Back pressure: buffer strategy

Asi panogona kunge paine mameseji akawanda. Zvinopfuura iyo sisitimu inogona kubata, kugovera zviwanikwa nemamwe gumi nemaviri mamwe masevhisi kunze kweaya anoratidzwa mudhayagiramu - uye zvese izvi zvinofanirwa kushanda zvisina mhosva kunyangwe pamichina inomhanyisa Intellij Idea ingave inonetesa.

Dambudziko rekubuda kwakasiyana kwemaitiro ekutaurirana, mugadziri uye mutengi, anogadziriswa nenzira dzakasiyana. Ngationei zvataigona kuita.

Kudonha: tinogona kutaura kuti tinokwanisa kugadzirisa pakawanda X transactions mumasekonzi T. Zvese zvikumbiro zvinodarika muganhu uyu zvinoraswa. Zviri nyore, asi ipapo unogona kukanganwa nezve UX.

Kudzora: mutengi anofanira kunge ane imwe interface iyo, zvichienderana nemutoro, anogona kudzora tps yemugadziri. Hazvina kushata, asi zvinoisa chisungo kune vagadziri vemutengi wemutoro kuita iyi interface. Kwatiri, izvi hazvigamuchirwi, sezvo blockchain mune ramangwana ichabatanidzwa muhuwandu hwakawanda hwemaitiro anogara aripo.

Kubheja: pachinzvimbo chekugadzira kuramba kuyerera kwedata rekuisa, tinogona kuvharira rukova urwu nekuchigadzirisa nekumhanya kunodiwa. Zviripachena, iyi ndiyo yakanakisa mhinduro kana isu tichida kupa yakanaka mushandisi ruzivo. Isu takaita iyo buffer tichishandisa mutsara muRabbitMQ.

Distributed Registry for Wheelsets: Chiitiko neHyperledger Fabric

Zviito zviviri zvitsva zvakawedzerwa kuchirongwa: (1) mushure mekunge chikumbiro che API chagamuchirwa, meseji inomisikidzwa nematanho anodiwa kufonera kutengeserana, uye mutengi anogamuchira meseji yekuti kutengeserana kwakagamuchirwa nehurongwa, ( 2) iyo backend inoverenga data nekumhanya kwakataurwa mu config kubva pamutsetse; inotanga kutengeserana uye inovandudza data muchitoro chemamiriro.
Iye zvino unogona kuwedzera nguva yekuvaka uye kuvhara simba zvakanyanya sezvaunoda, kuvanza kunonoka kubva kumushandisi.

Zvimwe zvishandiso

Hapana chakataurwa pano nezve chaincode, nekuti kazhinji hapana chekugadzirisa mairi. Iyo chaincode inofanirwa kuve yakapusa uye yakachengeteka sezvinobvira - ndizvo zvese zvinodiwa pairi. Iyo dhizaini inotibatsira zvakanyanya kunyora chaincode zviri nyore uye zvakachengeteka. CSKit kubva kuS7 Techlab uye static analyzer mutsa...CC.

Pamusoro pezvo, timu yedu iri kugadzira seti yezvishandiso kuita kuti kushanda neFabric kuve nyore uye kunonakidza: blockchain muongorori, utility for otomatiki network reconfiguration (wedzera/bvisa masangano, RAFT nodes), utility for kubvisirwa chitupa uye kubvisa chitupa. Kana muchida kupa mupiro, munogamuchirwa.

mhedziso

Iyi nzira inoita kuti zvive nyore kutsiva Hyperledger Fabric neQuorum, mamwe ega ega Ethereum network (PoA kana kunyange PoW), inoderedza zvakanyanya kubuda kwechokwadi, asi panguva imwechete chengetedza yakajairika UX (zvose zvevashandisi mubrowser uye kubva kudivi remasystem akabatanidzwa. ) Paunenge uchitsiva Mucheka neEthereum muchirongwa, chete pfungwa dzekuyedza sevhisi / mugadziri anozofanira kuchinjwa kubva pakubata MVCC kupokana kuenda kune atomic nonce increment uye kutumira zvakare. Buffering uye chimiro chekuchengetedza chakaita kuti zvikwanise kudzoreredza nguva yekupindura kubva panguva yekugadzira block. Iye zvino iwe unogona kuwedzera zviuru zveodha node uye usatya kuti zvidhinha zvinoumbwa kazhinji uye kurodha sevhisi yekuraira.

Kazhinji, izvi ndizvo chete zvandaida kugovera. Ndichafara kana zvichibatsira mumwe munhu mubasa rake.

Source: www.habr.com

Voeg