Distributed Registry for Wheelsets: Ib qho Kev Paub nrog Hyperledger Fabric

Nyob zoo, Kuv ua haujlwm hauv pab pawg ntawm DRD KP qhov project ( faib cov ntaub ntawv sau npe rau kev saib xyuas lub neej voj voog ntawm lub log teeb). Ntawm no kuv xav qhia peb pab neeg cov kev paub dhau los hauv kev txhim kho kev lag luam blockchain rau txoj haujlwm no raws li kev txwv ntawm thev naus laus zis. Kuv feem ntau yuav tham txog Hyperledger Npuag, tab sis txoj hauv kev tau piav qhia ntawm no tuaj yeem raug ntxiv rau ib qho kev tso cai blockchain. Lub hom phiaj tseem ceeb ntawm peb cov kev tshawb fawb yog los npaj kev lag luam blockchain cov kev daws teeb meem kom cov khoom kawg zoo siab rau siv thiab tsis nyuaj rau kev tswj hwm.

Yuav tsis muaj kev tshawb pom, cov kev daws teeb meem npaj txhij txog, thiab tsis muaj kev txhim kho tshwj xeeb yuav raug qhia ntawm no (vim kuv tsis muaj). Kuv tsuas yog xav qhia kuv qhov kev paub me me, qhia tias "nws ua tau" thiab, tej zaum, nyeem txog lwm tus neeg txoj kev paub txog kev ua tau zoo thiab tsis zoo li kev txiav txim siab hauv cov lus.

Teeb meem: Blockchains tseem tsis tau ntsuas

Niaj hnub no, kev siv zog ntawm ntau tus neeg tsim khoom yog tsom rau kev ua blockchain lub tshuab yooj yim tiag tiag, thiab tsis yog lub sijhawm foob pob hauv lub hnab ntim khoom zoo nkauj. Lub xeev cov channel, qhov zoo tshaj plaws rollup, plasma thiab sharding tej zaum yuav dhau los ua qhov qub. Ib hnub. Los yog tej zaum TON yuav rov ncua lub community launch rau rau lub hlis, thiab tom ntej no Plasma Group yuav tsum tsis muaj. Peb tuaj yeem ntseeg hauv daim ntawv qhia txuas ntxiv thiab nyeem cov ntawv dawb zoo nkauj hmo ntuj, tab sis ntawm no thiab tam sim no peb yuav tsum ua qee yam nrog peb muaj. Ua shit ua.

Cov hauj lwm teem rau peb pab neeg nyob rau hauv qhov project tam sim no zoo li feem ntau zoo li no: muaj ntau yam kev kawm, mus txog ob peb txhiab, leej twg tsis xav tsim kev sib raug zoo ntawm kev ntseeg; Nws yog ib qho tsim nyog los tsim kom muaj kev daws teeb meem ntawm DLT uas yuav ua haujlwm ntawm cov PCs zoo tib yam yam tsis muaj kev ua haujlwm tshwj xeeb thiab muab kev paub rau cov neeg siv tsis muaj qhov phem dua li cov txheej txheem hauv nruab nrab. Cov thev naus laus zis tom qab kev daws teeb meem yuav tsum txo qis qhov muaj peev xwm ntawm kev ua phem ntawm cov ntaub ntawv - yog vim li cas blockchain nyob ntawm no.

Cov lus hais los ntawm cov ntawv dawb thiab cov xov xwm cog lus rau peb tias kev txhim kho tom ntej no yuav tso cai rau peb ua ntau lab ntawm kev hloov pauv ib ob. Nws yog dab tsi tiag?

Mainnet Ethereum tam sim no khiav ntawm ~ 30 tps. Vim tias qhov no ib leeg, nws nyuaj rau pom tias nws yog blockchain nyob rau hauv txhua txoj kev uas haum rau cov neeg xav tau kev pab. Ntawm cov kev tso cai daws teeb meem muaj cov qauv ntsuas uas qhia txog 2000 tps (Pawg) los yog 3000 tps (Hyperledger Npuag, muaj tsawg tsawg nyob rau hauv kev tshaj tawm, tab sis koj yuav tsum tau coj mus rau hauv tus account tias qhov ntsuas tau ua tiav ntawm lub cav qub kev pom zoo). Yog kev sim ntawm radical Fabric processing, uas muab tsis tau qhov phem tshaj plaws, 20000 tps, tab sis kom deb li deb qhov no tsuas yog kev tshawb fawb kev kawm, tos rau nws ruaj khov siv. Nws tsis zoo li lub tuam txhab uas muaj peev xwm them taus los tswj hwm lub tuam tsev ntawm blockchain developers yuav tso nrog cov ntsuas no. Tab sis qhov teeb meem tsis yog tsuas yog throughput, kuj muaj latency.

Latency

Kev ncua los ntawm lub sijhawm kev hloov pauv tau pib rau nws qhov kev pom zoo zaum kawg los ntawm lub kaw lus tsis yog nyob ntawm qhov ceev ntawm cov lus uas dhau los ntawm txhua theem ntawm kev lees paub thiab kev txiav txim, tab sis kuj nyob rau ntawm qhov thaiv kev tsim tsis tau. Txawm hais tias peb lub blockchain tso cai rau peb ua txhaum ntawm qhov nrawm ntawm 1000000 tps, tab sis yuav tsum siv 10 feeb los tsim 488 MB thaiv, nws puas yuav yooj yim dua rau peb?

Cia peb saib ze dua ntawm kev hloov pauv lub neej nyob hauv Hyperledger Fabric kom nkag siab qhov twg siv sijhawm thiab nws cuam tshuam li cas los thaiv cov cim tiam.

Distributed Registry for Wheelsets: Ib qho Kev Paub nrog Hyperledger Fabric
coj los ntawm no: hyperledger-fabric.readthedocs.io/en/release-1.4/arch-deep-dive.html#swimlane

(1) Tus neeg siv khoom tsim kev lag luam, xa mus rau kev pom zoo cov phooj ywg, tom kawg simulate qhov kev hloov pauv (siv cov kev hloov pauv los ntawm chaincode rau lub xeev tam sim no, tab sis tsis txhob cog lus rau daim ntawv teev npe) thiab tau txais RWset - cov npe tseem ceeb, cov qauv thiab cov txiaj ntsig coj los ntawm kev sau hauv CouchDB, (2) cov neeg pom zoo xa rov qab kos npe RWSet rau tus neeg siv khoom, (3) tus neeg siv khoom los kuaj xyuas qhov muaj npe kos npe ntawm txhua tus neeg tsim nyog (tus neeg pom zoo), thiab tom qab ntawd xa cov kev pauv mus rau qhov kev txiav txim. , lossis xa nws yam tsis muaj kev pov thawj (cov tshev yuav tseem tshwm sim tom qab), qhov kev txiav txim kev pabcuam tsim ib qho thaiv thiab (4) xa rov qab rau txhua tus phooj ywg, tsis yog cov neeg pom zoo xwb; cov phooj ywg txheeb xyuas tias cov ntawv tseem ceeb hauv cov ntawv nyeem tau phim cov versions hauv cov ntaub ntawv, tias txhua tus neeg pom zoo tau kos npe, thiab thaum kawg ua qhov thaiv.

Tab sis qhov ntawd tsis yog tag nrho. Cov lus "orderer forms a block" zais tsis tau tsuas yog kev txiav txim ntawm kev lag luam, tab sis kuj tseem muaj 3 qhov kev thov txuas ntxiv los ntawm tus thawj coj mus rau cov neeg ua raws thiab rov qab: tus thawj coj ntxiv cov lus rau lub cav, xa mus rau cov neeg ua raws, tom qab ntxiv nws. mus rau lawv lub cav, xa kev lees paub ntawm kev ua tiav zoo rau tus thawj coj, tus thawj coj tau cog lus rau cov lus, xa cov lus cog tseg rau cov neeg ua raws, cov neeg ua raws. Qhov me me thiab lub sij hawm ntawm kev tsim thaiv, ntau zaus qhov kev txiav txim yuav tsum tau tsim kev pom zoo. Hyperledger Npuag muaj ob qhov kev txwv rau kev tsim thaiv: BatchTimeout - thaiv lub sijhawm tsim thiab BatchSize - thaiv qhov loj (tus naj npawb ntawm kev hloov pauv thiab qhov loj ntawm thaiv nws tus kheej hauv bytes). Sai li ib qho ntawm cov kev txwv mus txog qhov txwv, ib qho thaiv tshiab raug tso tawm. Qhov kev txiav txim ntau dua, qhov no yuav siv sijhawm ntev dua. Yog li ntawd, koj yuav tsum tau nce BatchTimeout thiab BatchSize. Tab sis txij li thaum RWSets tau hloov kho, qhov loj dua qhov thaiv peb ua, qhov ua tau zoo dua ntawm MVCC tsis sib haum xeeb. Tsis tas li ntawd, raws li BatchTimeout nce, UX kev puas tsuaj loj zuj zus. Cov txheej txheem hauv qab no los daws cov teeb meem no zoo li tsim nyog thiab pom tseeb rau kuv.

Yuav ua li cas kom tsis txhob tos kev thaiv qhov kawg thiab tsis poob peev xwm los taug qab cov xwm txheej hloov pauv

Qhov ntev ntawm lub sij hawm tsim thiab thaiv qhov loj, qhov siab dua qhov hla ntawm blockchain. Ib qho tsis ncaj qha los ntawm lwm tus, tab sis nws yuav tsum nco ntsoov tias kev tsim kev pom zoo hauv RAFT yuav tsum muaj peb qhov kev thov network los ntawm tus thawj coj mus rau cov neeg ua raws thiab rov qab. Qhov kev txiav txim ntau dua, qhov no yuav siv sijhawm ntev dua. Qhov me me thiab lub sijhawm ntawm kev tsim thaiv, qhov kev sib cuam tshuam zoo li no muaj. Yuav ua li cas nce lub sijhawm tsim thiab thaiv qhov loj me yam tsis tau nce lub sijhawm teb rau cov neeg siv kawg?

Ua ntej, peb yuav tsum tau daws qhov teeb meem MVCC tsis sib haum xeeb los ntawm qhov loj me me, uas tuaj yeem suav nrog RWSets sib txawv nrog tib lub version. Pom tseeb, ntawm tus neeg siv khoom (nrog rau lub network blockchain, qhov no tuaj yeem yog qhov backend, thiab kuv txhais tau tias nws) koj xav tau MVCC tus neeg saib xyuas kev tsis sib haum xeeb, uas tuaj yeem yog ib qho kev pabcuam sib cais lossis tus kws kho kom zoo nkauj li niaj zaus tshaj li qhov hu uas pib qhov kev hloov pauv nrog rov sim dua logic.

Rov ua dua tuaj yeem ua tiav nrog lub tswv yim nthuav tawm, tab sis tom qab ntawd latency yuav degrade ib yam li exponentially. Yog li koj yuav tsum siv ib qho randomized rov ua dua hauv qee qhov kev txwv me me, lossis ib qho tas li. Nrog rau lub qhov muag ntawm qhov ua tau sib tsoo hauv thawj qhov kev xaiv.

Cov kauj ruam tom ntej yog ua kom tus neeg siv khoom sib cuam tshuam nrog lub system asynchronous kom nws tsis txhob tos 15, 30 lossis 10000000 vib nas this, uas peb yuav teem ua BatchTimeout. Tab sis tib lub sijhawm, nws yog ib qho tsim nyog los tswj lub peev xwm los xyuas kom meej tias cov kev hloov pauv pib los ntawm kev sib pauv yog / tsis tau sau tseg hauv blockchain.
Lub database tuaj yeem siv los khaws cov xwm txheej hloov pauv. Qhov kev xaiv yooj yim tshaj plaws yog CouchDB vim nws qhov yooj yim ntawm kev siv: cov ntaub ntawv muaj UI tawm ntawm lub thawv, REST API, thiab koj tuaj yeem yooj yim teeb tsa replication thiab sharding rau nws. Koj tuaj yeem tsim cov khoom sib cais hauv tib qho piv txwv CouchDB uas siv Fabric los khaws nws lub ntiaj teb lub xeev. Peb yuav tsum khaws cov ntaub ntawv no.

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

Cov ntaub ntawv no tau sau rau hauv cov ntaub ntawv ua ntej kev sib pauv xa mus rau cov phooj ywg, qhov chaw ID raug xa rov qab rau tus neeg siv (tus ID tib yam yog siv los ua tus yuam sij) yog tias qhov no yog kev tsim ua haujlwm, thiab tom qab ntawd cov xwm txheej, TxID thiab yuam kev yog hloov kho raws li cov ntaub ntawv tseem ceeb tau txais los ntawm cov phooj ywg.

Distributed Registry for Wheelsets: Ib qho Kev Paub nrog Hyperledger Fabric

Nyob rau hauv cov tswv yim no, tus neeg siv tsis tos rau lub block kom kawg daim ntawv, saib lub spinning log ntawm lub screen rau 10 vib nas this, nws tau txais ib tug instant teb los ntawm lub system thiab mus ua hauj lwm.

Peb xaiv BoltDB los khaws cov xwm txheej hloov pauv vim tias peb yuav tsum txuag lub cim xeeb thiab tsis xav nkim sijhawm ntawm kev sib cuam tshuam hauv network nrog cov neeg rau zaub mov cais, tshwj xeeb tshaj yog thaum qhov kev sib cuam tshuam no tshwm sim siv cov ntawv nyeem raws tu qauv. Los ntawm txoj kev, txawm tias koj siv CouchDB los ua raws li cov txheej txheem tau piav qhia saum toj no lossis tsuas yog khaws lub ntiaj teb lub xeev, txawm li cas los xij nws ua rau kev nkag siab zoo rau kev txhim kho txoj kev khaws cov ntaub ntawv hauv CouchDB. Los ntawm lub neej ntawd, hauv CouchDB, qhov loj ntawm b-ntoo nodes yog 1279 bytes, uas yog ntau me dua li qhov loj me ntawm cov disk, uas txhais tau hais tias ob qho tib si nyeem ntawv thiab kho cov ntoo yuav xav tau kev nkag mus rau lub cev ntau dua. Qhov loj me me sib haum rau tus qauv Cov hom ntawv siab thiab yog 4 kilobytes. Yuav kom optimize peb yuav tsum teem lub parameter btree_chunk_size yog 4096 hauv CouchDB configuration file. Rau BoltDB xws li phau ntawv kev cuam tshuam tsis yuav tsum tau.

Backpressure: tsis zoo

Tab sis yuav muaj ntau cov lus. Ntau tshaj li qhov system tuaj yeem ua tau, sib koom cov peev txheej nrog kaum ob lwm cov kev pabcuam ntxiv rau cov uas tau qhia hauv daim duab - thiab tag nrho cov no yuav tsum ua haujlwm tsis zoo txawm tias ntawm cov tshuab uas khiav Intellij Lub tswv yim yuav yog qhov tsis txaus ntseeg.

Qhov teeb meem ntawm cov peev txheej sib txawv ntawm kev sib txuas lus, cov neeg tsim khoom thiab cov neeg siv khoom, raug daws nyob rau hauv ntau txoj kev. Wb saib seb peb yuav ua li cas.

Xa: Peb tuaj yeem thov tias peb muaj peev xwm ua tiav ntawm feem ntau X kev lag luam hauv T vib nas this. Txhua qhov kev thov tshaj qhov txwv no raug muab pov tseg. Qhov no yooj yim heev, tab sis tom qab ntawd koj tuaj yeem hnov ​​​​qab txog UX.

Tswj: tus neeg siv khoom yuav tsum muaj qee yam kev sib txuas los ntawm qhov uas, nyob ntawm qhov thauj khoom, nws tuaj yeem tswj tau tus tsim TPS. Tsis phem, tab sis nws imposes lub luag hauj lwm rau cov developers ntawm tus neeg siv khoom tsim lub load los siv no interface. Qhov no yog qhov tsis txaus ntseeg rau peb, txij li blockchain yav tom ntej yuav raug muab tso rau hauv ntau lub sijhawm ntev.

Yaj Yeeb: Tsis txhob sim tawm tsam cov ntaub ntawv tawm tswv yim, peb tuaj yeem cuam tshuam cov kwj dej no thiab ua tiav nws ntawm qhov xav tau ceev. Pom tseeb qhov no yog qhov kev daws teeb meem zoo tshaj plaws yog tias peb xav muab kev paub zoo rau cov neeg siv khoom. Peb siv qhov tsis siv cov kab hauv RabbitMQ.

Distributed Registry for Wheelsets: Ib qho Kev Paub nrog Hyperledger Fabric

Ob qhov kev ua tshiab tau ntxiv rau lub tswv yim: (1) tom qab qhov kev thov rau API tuaj txog, cov lus nrog cov tsis tsim nyog hu rau kev sib pauv tau muab tso rau hauv kab, thiab tus neeg siv tau txais cov lus hais tias kev hloov pauv tau txais los ntawm lub kaw lus, (2) lub backend nyeem cov ntaub ntawv ntawm qhov ceev tau teev nyob rau hauv lub config los ntawm queue; pib qhov kev hloov pauv thiab hloov kho cov ntaub ntawv hauv lub khw muag khoom.
Tam sim no koj tuaj yeem nce lub sijhawm tsim thiab thaiv lub peev xwm ntau npaum li koj xav tau, zais kev ncua ntawm tus neeg siv.

Lwm yam cuab yeej

Tsis muaj ib yam dab tsi tau hais ntawm no txog chaincode, vim tias, raws li txoj cai, tsis muaj dab tsi los ua kom zoo dua hauv nws. Chaincode yuav tsum yooj yim thiab nyab xeeb li sai tau - yog txhua yam uas yuav tsum tau ua ntawm nws. Lub moj khaum pab peb sau chaincode yooj yim thiab nyab xeeb CCKit los ntawm S7 Techlab thiab static analyzer rov ^CC.

Tsis tas li ntawd, peb pab neeg tab tom tsim cov khoom siv los ua haujlwm nrog Fabric yooj yim thiab zoo siab: blockchain explorer, ib qho khoom siv rau tsis siv neeg network configuration hloov (ntxiv / tshem tawm cov koom haum, RAFT nodes), kev siv hluav taws xob rau tshem tawm daim ntawv pov thawj thiab tshem tawm tus kheej. Yog koj xav pab txhawb, txais tos.

xaus

Txoj hauv kev no tso cai rau koj kom yooj yim hloov Hyperledger Fabric nrog Pawg Quorum, lwm qhov ntiag tug Ethereum tes hauj lwm (PoA lossis txawm tias PoW), txo qis qhov tseeb, tab sis tib lub sijhawm tswj hwm UX ib txwm (ob leeg rau cov neeg siv hauv browser thiab rau cov tshuab sib xyaw). Thaum hloov Fabric nrog Ethereum nyob rau hauv cov tswv yim, koj tsuas yog yuav tsum tau hloov lub logic ntawm retry service / decorator los ntawm kev ua MVCC tsis sib haum xeeb rau atomic nonce increment thiab resend. Buffering thiab xwm txheej cia ua rau nws muaj peev xwm decouple lub sij hawm teb los ntawm lub sij hawm tsim thaiv. Tam sim no koj tuaj yeem ntxiv ntau txhiab qhov kev txiav txim nodes thiab tsis txhob ntshai tias cov blocks tau tsim ntau dhau lawm thiab thauj cov kev pabcuam xaj.

Qhov tseeb, qhov ntawd yog txhua yam kuv xav qhia. Kuv yuav zoo siab yog tias qhov no pab ib tug neeg hauv lawv txoj haujlwm.

Tau qhov twg los: www.hab.com

Ntxiv ib saib