Registry e Ajoang bakeng sa Wheelets: Phihlelo ka Hyperledger Fabric

Lumela, ke sebetsa sehlopheng sa morero oa DRD KP (registry ea data e ajoang bakeng sa ho lekola potoloho ea bophelo ea li-wheel sets). Mona ke batla ho arolelana phihlelo ea sehlopha sa rona ho nts'etsapele thibela ea khoebo bakeng sa morero ona tlas'a lithibelo tsa theknoloji. Ke tla be ke bua haholo ka Hyperledger Fabric, empa mokhoa o hlalositsoeng mona o ka fetisetsoa ho blockchain efe kapa efe e lumelletsoeng. Sepheo se seholo sa lipatlisiso tsa rona ke ho lokisetsa litharollo tsa khoebo ea blockchain e le hore sehlahisoa sa ho qetela se be monate ho se sebelisa mme se se thata haholo ho se boloka.

Ho ke ke ha e-ba le lintho tse sibolotsoeng, litharollo tse sa lebelloang, 'me ha ho na tsoelo-pele e ikhethang e tla totobatsoa mona (hobane ha ke na eona). Ke mpa feela ke batla ho arolelana phihlelo ea ka e itekanetseng, ho bontša hore "ho ne ho khoneha" 'me, mohlomong, bala ka liphihlelo tsa batho ba bang ba ho etsa liqeto tse ntle le tse seng tse ntle ho litlhaloso.

Bothata: Li-blockchain ha li e-so hole

Kajeno, boiteko ba bahlahisi ba bangata bo reretsoe ho etsa blockchain theknoloji e loketseng e le kannete, eseng bomo ea nako ka har'a sekoaelo se setle. Likanale tsa 'muso, rollup ea tšepo, plasma le sharding mohlomong e tla ba ntho e tloaelehileng. Ka tsatsi le leng. Kapa mohlomong TON e tla chechisetsa morao ho qalisoa ka likhoeli tse tšeletseng, 'me Plasma Group e latelang e tla khaotsa ho ba teng. Re ka lumela 'mapeng o latelang' me ra bala lipampiri tse tšoeu tse khanyang bosiu, empa mona le hona joale re hloka ho etsa ho hong ka seo re nang le sona. Etsa shit.

Mosebetsi o behiloeng bakeng sa sehlopha sa rona morerong oa morao-rao o shebahala ka kakaretso tjena: ho na le lihlooho tse ngata, tse fihlang likete tse 'maloa, tse sa batleng ho haha ​​likamano ka tšepo; Hoa hlokahala ho theha tharollo ho DLT e tla sebetsa ho li-PC tse tloaelehileng ntle le litlhoko tse khethehileng tsa ts'ebetso le ho fana ka phihlelo ea mosebedisi e seng mpe ho feta mekhoa efe kapa efe ea li-accounting tse bohareng. Theknoloji ea tharollo e tlameha ho fokotsa monyetla oa ho qhekella ka lonya ha data - ke ka lebaka leo blockchain e leng teng.

Mapetjo a tsoang lipampiring tse tšoeu le mecha ea litaba a re tšepisa hore tsoelo-pele e latelang e tla re lumella ho etsa limilione tsa litšebelisano ka motsotsoana. Hantle-ntle ke eng?

Mainnet Ethereum hajoale e sebetsa ho ~ 30 tps. Ka lebaka la sena feela, ho thata ho e nka e le blockchain ka tsela efe kapa efe e loketseng litlhoko tsa khoebo. Har'a litharollo tse lumelletsoeng ho na le li-benchmarks tse bonts'ang 2000 tps (Quorum) kapa 3000 tps (Lesela la Hyperledger, ho na le ho fokolang hanyenyane khatisong, empa u lokela ho ela hloko hore benchmark e ne e etsoa ka mochine oa khale oa tumellano). E ne e teko ea ho etsa radical Fabric processing, e sa faneng ka liphello tse mpe ka ho fetisisa, 20000 tps, empa ho fihlela joale sena ke lipatlisiso tsa thuto feela, tse emetse ts'ebetsong ea eona e tsitsitseng. Ho ke ke ha etsahala hore mokhatlo o ka khonang ho boloka lefapha la baetsi ba blockchain o tla mamella matšoao a joalo. Empa bothata ha se phallo feela, ho boetse ho na le latency.

Latency

Ho lieha ho tloha ha ts'ebetso e qalisoa ho fihlela tumello ea eona ea ho qetela ke tsamaiso ha e itšetlehe feela ka lebelo leo molaetsa o fetang ka mekhahlelo eohle ea ho netefatsa le ho laela, empa hape le ka mekhahlelo ea ho theha thibela. Le haeba blockchain ea rona e re lumella ho etsa ka lebelo la 1000000 tps, empa ho hloka metsotso e 10 ho hlahisa block ea 488 MB, na ho tla ba bonolo ho rona?

A re ke re hlahlobisiseng transaction lifecycle ho Hyperledger Fabric ho utloisisa hore na nako e sebelisoa hokae le hore na e amana joang le ho thibela mekhahlelo ea moloko.

Registry e Ajoang bakeng sa Wheelets: Phihlelo ka Hyperledger Fabric
ho tloha mona: hyperledger-fabric.readthedocs.io/en/release-1.4/arch-deep-dive.html#swimlane

(1) Moreki o etsa khoebo, o e romella ho lithaka tse tšehetsang, ea morao-rao e etsisa khoebo (sebelisa liphetoho tse entsoeng ke chaincode ho boemo ba hajoale, empa u se ke ua itlama ho ledger) 'me u fumane RWSet - mabitso a bohlokoa, liphetolelo le litekanyetso. e nkiloeng pokellong ea CouchDB, (2) bafani ba khutlisetsa RWSet e saennoeng ho moreki, (3) moreki a ka hlahloba boteng ba li-signature tsa lithaka tsohle tse hlokahalang (bafani), ebe o romela transaction ho tšebeletso ea odara. , kapa o e romela ntle le ho netefatsa (cheke e ntse e tla etsahala hamorao), tšebeletso ea ho laela e theha thibela 'me (4) e khutlisetsa ho lithaka tsohle, eseng feela bafani; lithaka hlahloba hore liphetolelo senotlolo ka bala sete tšoanang le liphetolelo polokelongtshedimosetso, hore bohle ba endors na le tshaeno, 'me qetellong etsa hore thibela.

Empa ha se phetho. Mantsoe a reng "orderer form block" ha a pate feela ho laela ha litšebelisano, empa hape le likopo tsa marang-rang tse 3 tse latellanang ho tloha ho moeta-pele ho ea ho balateli le ho khutlela morao: moetapele o eketsa molaetsa ho log, o o romela ho balateli, oa morao-rao o o eketsa. ho log ea bona, e romela tiiso ea ho ikatisa ka katleho ho moetapele, moetapele o etsa molaetsa , o romela tiiso ea boitlamo ho balateli, balateli ba itlama. E nyenyane boholo le nako ea ho thehoa ha li-block, hangata tšebeletso ea ho laela e tla tlameha ho theha tumellano. Hyperledger Fabric e na le mekhahlelo e 'meli bakeng sa ho thehoa ha thibela: BatchTimeout - nako ea ho theha thibela le BatchSize - boholo ba thibela (palo ea litšebelisano le boholo ba block ka boeona ka li-byte). Hang ha e 'ngoe ea li-parameter e fihla moeling, ho lokolloa block e ncha. Ha li-node li ntse li eketseha, sena se tla nka nako e telele. Ka hona, o hloka ho eketsa BatchTimeout le BatchSize. Empa kaha li-RWSets li fetoletsoe, ha re ntse re etsa li-block tse kholo, menyetla ea likhohlano tsa MVCC e phahame. Ntle le moo, ha BatchTimeout e ntse e eketseha, UX e senyeha hampe. Morero o latelang oa ho rarolla mathata ana o bonahala o utloahala ebile o hlakile ho 'na.

Mokhoa oa ho qoba ho emela ho phethoa thibela le ho se lahleheloe ke bokhoni ba ho latela maemo a transaction

Ha nako ea ho theha le boholo ba li-block e telele, ho phahamisa tlhahiso ea blockchain. E 'ngoe ha e latele ka ho toba ho e' ngoe, empa e lokela ho hopoloa hore ho theha tumellano ho RAFT ho hloka likōpo tse tharo tsa marang-rang ho tloha ho moetapele ho balateli le ho khutlela morao. Ha li-node li ntse li eketseha, sena se tla nka nako e telele. E nyenyane boholo le nako ea ho thehoa ha li-block, ho na le litšebelisano tse joalo tse ngata. Mokhoa oa ho eketsa nako ea moloko le boholo ba thibela ntle le ho eketsa nako ea karabo ea tsamaiso bakeng sa mosebedisi oa ho qetela?

Taba ea pele, re hloka ho rarolla likhohlano tsa MVCC ka tsela e itseng tse bakoang ke boholo ba block, bo ka kenyelletsang li-RWSets tse fapaneng tse nang le mofuta o tšoanang. Ho hlakile hore ka lehlakoreng la bareki (mabapi le marang-rang a blockchain, sena se ka ba mokokotlo, 'me ke se bolela) o hloka. MVCC e sebetsanang le likhohlano, e ka bang litšebeletso tse fapaneng kapa mokhabiso oa kamehla ka holim'a mohala o qalang khoebo ka ho leka hape.

Ho leka hape ho ka kengoa ts'ebetsong ka leano la exponential, empa latency e tla nyenyefatsa ka mokhoa o ts'oanang. Ka hona, o lokela ho sebelisa teko e sa fetoheng ka har'a meeli e itseng e nyane, kapa e sa fetoheng. Ka leihlo la ho thulana ho ka khonehang ka khetho ea pele.

Mohato o latelang ke ho etsa hore tšebelisano ea moreki le sistimi e se ke ea emela metsotsoana e 15, 30 kapa 10000000, eo re tla e beha joalo ka BatchTimeout. Empa ka nako e ts'oanang, hoa hlokahala ho boloka bokhoni ba ho netefatsa hore liphetoho tse qalileng ke transaction ke / ha lia tlalehoa ho blockchain.
Database e ka sebelisoa ho boloka boemo ba transaction. Khetho e bonolo ka ho fetisisa ke CouchDB ka lebaka la ts'ebeliso ea eona habonolo: database e na le UI ka ntle ho lebokose, API ea REST, 'me u ka e hlophisa habonolo le ho e sharding bakeng sa eona. U ka etsa pokello e arohaneng ketsahalong e tšoanang ea CouchDB e sebelisang Lesela ho boloka boemo ba eona ba lefats'e. Re hloka ho boloka mefuta ena ea litokomane.

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

Tokomane ena e ngotsoe ho database pele transaction e romelloa ho lithaka, ID ea setheo e khutlisetsoa ho mosebelisi (ID e tšoanang e sebelisoa e le senotlolo) haeba sena e le ts'ebetso ea popo, ebe maemo, TxID le Liphoso li teng. e nchafalitsoe joalo ka ha litaba tse nepahetseng li amoheloa ho tsoa ho lithaka.

Registry e Ajoang bakeng sa Wheelets: Phihlelo ka Hyperledger Fabric

Lenaneong lena, mosebelisi ha a emele hore block e qetelle e theha, a shebelletse lebili le ohiang skrineng ka metsotsoana ea 10, o fumana karabo hang-hang ho tsoa ho sistimi mme o tsoela pele ho sebetsa.

Re khethile BoltDB ho boloka maemo a transaction hobane re hloka ho boloka mohopolo mme ha re batle ho senya nako ka ho sebelisana ha marang-rang le seva sa database se arohaneng, haholo-holo ha tšebelisano ena e etsahala ho sebelisa protocol e hlakileng ea mongolo. Ka tsela, ho sa tsotellehe hore na u sebelisa CouchDB ho kenya ts'ebetsong morero o hlalositsoeng ka holimo kapa feela ho boloka boemo ba lefats'e, leha ho le joalo hoa utloahala ho ntlafatsa tsela eo data e bolokiloeng ka eona ho CouchDB. Ka ho feletseng, ho CouchDB, boholo ba li-b-tree node ke 1279 byte, e leng e nyenyane haholo ho feta boholo ba karolo ho disk, e bolelang hore ho bala le ho tsosolosa sefate ho tla hloka phihlelo e eketsehileng ea 'mele ho disk. Boholo bo nepahetseng bo lumellana le maemo Mofuta o tsoetseng pele mme ke 4 kilobytes. Ho ntlafatsa re hloka ho seta parameter btree_chunk_size e lekanang le 4096 ho faele ea tlhophiso ea CouchDB. Bakeng sa BoltDB ho kenella joalo ka letsoho ha ea hlokeha.

Backpressure: leano la buffer

Empa ho ka ba le melaetsa e mengata. Ho feta kamoo sistimi e ka sebetsanang le eona, ho arolelana lisebelisoa le lits'ebeletso tse ling tse leshome le metso e 'meli ntle le tse bontšitsoeng setšoantšong -' me tsena tsohle li lokela ho sebetsa ka mokhoa o se nang sekoli esita le mechini eo ho tsamaisa Intellij Idea ho ka bang boima haholo.

Bothata ba bokhoni bo fapaneng ba mekhoa ea puisano, mohlahisi le bareki, bo rarolloa ka litsela tse fapaneng. A re boneng hore na re ka etsa’ng.

Ho oa: Re ka bolela hore re khona ho sebetsana le litšebelisano tse ngata tsa X ka metsotsoana ea T. Likopo tsohle tse fetang moeli ona li lahliloe. Sena se bonolo haholo, empa joale o ka lebala ka UX.

Ho laola: moreki o tlameha ho ba le mofuta o itseng oa sebopeho seo ka sona, ho itšetlehile ka mojaro, a ka laolang TPS ea mohlahisi. Ha e mpe, empa e beha litlamo ho baetsi ba moreki ba thehang mojaro ho kenya tšebetsong sebopeho sena. Sena ha se amohelehe ho rona, kaha blockchain nakong e tlang e tla kopanngoa le palo e kholo ea mekhoa ea nako e telele.

Ho koetlisa: Sebakeng sa ho leka ho hanela phallo ea data e kentsoeng, re ka thibela molapo ona ebe re o sebetsa ka lebelo le hlokahalang. Ho hlakile hore ena ke tharollo e molemohali haeba re batla ho fana ka boiphihlelo bo botle ba mosebelisi. Re kentse ts'ebetso ea "buffer" ka ho sebelisa queue ho RabbitMQ.

Registry e Ajoang bakeng sa Wheelets: Phihlelo ka Hyperledger Fabric

Liketso tse peli tse ncha li kenyelelitsoe morerong ona: (1) ka mor'a hore kopo ea API e fihle, molaetsa o nang le litekanyo tse hlokahalang ho letsetsa transaction o behiloe moleng, 'me mofani o fumana molaetsa oa hore transaction e amohetsoe ke sistimi, (2) backend e bala data ka lebelo le boletsoeng ho config ho tloha queue; e qala transaction le ho ntlafatsa data lebenkeleng la maemo.
Hona joale o ka eketsa nako ea ho theha le ho thibela matla ka hohle kamoo u batlang, ho pata tieho ho mosebedisi.

Lisebelisoa tse ling

Ha ho letho le ileng la boleloa mona ka chaincode, hobane, joalo ka molao, ha ho na letho le ka ntlafatsang ho eona. Chaincode e lokela ho ba e bonolo le e sireletsehileng kamoo ho ka khonehang - ke sona feela se hlokahalang ho eona. Moralo ona o re thusa ho ngola chaincode habonolo le ka mokhoa o sireletsehileng CKIT ho tsoa ho S7 Techlab le analyzer e tsitsitseng tsosolosa^CC.

Ntle le moo, sehlopha sa rona se nts'etsapele lisebelisoa tse ngata ho etsa hore ho sebetsa ka Lesela ho be bonolo hape ho be monate: mofuputsi oa blockchain, thuso bakeng sa liphetoho tsa sebopeho sa marang-rang (ho eketsa/ho tlosa mekhatlo, RAFT nodes), utility bakeng sa hlakolo ya disetifikeiti le ho tlosa boitsebiso. Haeba u batla ho kenya letsoho, ua amoheleha.

fihlela qeto e

Mokhoa ona o u lumella hore u nke sebaka sa Hyperledger Fabric ka Quorum habonolo, marang-rang a mang a poraefete ea Ethereum (PoA kapa esita le PoW), ho fokotsa haholo phallo ea sebele, empa ka nako e ts'oanang u boloke UX e tloaelehileng (bobeli bakeng sa basebelisi ba sebatli le bakeng sa mekhoa e kopanetsoeng). Ha u nkela Lesela sebaka ka Ethereum sekemeng, o tla hloka feela ho fetola mohopolo oa ts'ebeletso ea leka hape / mokhabiso ho tloha ho sebetsana le likhohlano tsa MVCC ho ea ho increment ea nonce ea atomic le ho romella hape. Buffering le ho boloka maemo ho entse hore ho khonehe ho fokotsa nako ea ho arabela ho tloha nakong ea ho etsa li-block. Hona joale o ka eketsa li-node tse likete 'me u se ke ua tšaba hore li-blocks li thehoa hangata le ho laela tšebeletso ea ho laela.

Ha e le hantle, ke phetho seo ke neng ke batla ho se arolelana. Ke tla thaba haeba sena se thusa motho e mong mosebetsing oa hae.

Source: www.habr.com

Eketsa ka tlhaloso