Сиздин блокчейниңизде канча TPS бар?

Техникалык эмес адамдын кандайдыр бир бөлүштүрүлгөн тутум жөнүндө сүйүктүү суроосу "Сиздин блокчейниңизде канча tps бар?" Бирок жооп катары берилген сандын суроо берүүчү уккусу келген нерсе менен жалпылыгы аз. Чынында, ал "Сиздин блокчейниңиз менин бизнес талаптарыма жооп береби" деп сурагысы келген жана бул талаптар бир эле сан эмес, көптөгөн шарттар - бул жерде тармактын каталарына чыдамдуулук, акыркы талаптар, өлчөмдөр, транзакциялардын мүнөзү жана башка көптөгөн параметрлер бар. Ошентип, "канча tps" деген суроого жооп жөнөкөй болушу күмөн, жана дээрлик эч качан толук эмес. Татаал эсептөөлөрдү аткарган ондогон же жүздөгөн түйүндөрдөн турган бөлүштүрүлгөн система тармактын абалына, блокчейндин мазмунуна, техникалык мүчүлүштүктөргө, экономикалык көйгөйлөргө, тармакка чабуулдарга жана башка көптөгөн себептерге байланыштуу көптөгөн ар кандай абалда болушу мүмкүн. . Аткаруу көйгөйлөрү мүмкүн болгон этаптары салттуу кызматтардан айырмаланат, ал эми блокчейн тармак сервери бул маалымат базасынын, веб-сервердин жана торрент-кардардын функционалдуулугун айкалыштырган тармак кызматы, бул аны бардык подсистемаларда жүктөө профили жагынан өтө татаал кылат. : процессор, эстутум, тармак, сактагыч

Ошентип, борборлоштурулган тармактар ​​жана блокчейндер борборлоштурулган программалык камсыздоону иштеп чыгуучулар үчүн өзгөчө жана адаттан тыш программа болуп саналат. Ошондуктан, борбордон ажыратылган тармактардын иштешинин жана туруктуулугунун маанилүү аспектилерин, аларды өлчөө жана тоскоолдуктарды табуу ыкмаларын белгилегим келет. Биз блокчейн колдонуучуларына кызмат көрсөтүүнүн ылдамдыгын чектеген ар кандай аткаруу маселелерин карап чыгабыз жана программалык камсыздоонун бул түрүнө мүнөздүү өзгөчөлүктөргө көңүл бурабыз.

Блокчейн кардары тарабынан кызмат сурамынын этаптары

Кандайдыр бир аздыр-көптүр татаал кызматтардын сапаты жөнүндө чынчылдык менен айтуу үчүн сиз орточо маанилерди гана эмес, максималдуу/минималдуу, медианаларды, пайыздык көрсөткүчтөрдү да эске алышыңыз керек. Теориялык жактан алганда, кээ бир блокчейнде 1000 т/с жөнүндө айтсак болот, бирок 900 транзакциялар эбегейсиз ылдамдык менен бүткөрүлүп, 100ү бир нече секундага "жабышып" калса, анда бардык транзакциялар боюнча чогултулган орточо убакыт кардар үчүн таптакыр адилеттүү метрика эмес. Мен бир нече секунданын ичинде транзакцияны бүтүрө алган жокмун. Өткөрүлбөй калган консенсус раунддарынан же тармактын бөлүнүүсүнөн улам келип чыккан убактылуу "тешиктер" тесттик отургучтарда мыкты көрсөткүчтөрдү көрсөткөн кызматты бир топ бузуп салышы мүмкүн.

Мындай тоскоолдуктарды аныктоо үчүн чыныгы блокчейн колдонуучуларды тейлөөдө кыйынчылыктарга дуушар болушу мүмкүн болгон этаптарды жакшы түшүнүү керек. Келгиле, транзакцияны жеткирүү жана кайра иштетүү циклин сүрөттөп көрөлү, ошондой эле блокчейндин жаңы абалын алуу, андан кардар анын транзакциясы иштелип чыкканын жана эсепке алынгандыгын текшере алат.

  1. транзакция кардар боюнча түзүлөт
  2. транзакцияга кардар кол коюлат
  3. кардар түйүндөрдүн бирин тандап, ага өзүнүн транзакциясын жөнөтөт
  4. кардар түйүндүн мамлекеттик маалымат базасына жаңыртууларга жазылат, анын транзакциясынын натыйжалары пайда болушун күтөт
  5. түйүн бүтүмдү p2p тармагы аркылуу бөлүштүрөт
  6. бир нече же бир BP (блок чыгаруучу) мамлекеттик маалымат базасын жаңылоо, топтолгон транзакцияларды иштеп чыгат
  7. BP транзакциялардын керектүү санын иштеп чыккандан кийин жаңы блокту түзөт
  8. BP жаңы блокту p2p тармагы аркылуу таратат
  9. жаңы блок кардар кирип жаткан түйүнгө жеткирилет
  10. түйүн мамлекеттик маалымат базасын жаңыртат
  11. түйүн кардарга байланыштуу жаңыртууну көрөт жана ага транзакция жөнүндө билдирүү жөнөтөт

Эми бул этаптарды кененирээк карап чыгалы жана ар бир этапта мүмкүн болуучу аткаруу көйгөйлөрүн сүрөттөп көрөлү. Борборлоштурулган системалардан айырмаланып, биз тармак кардарларында коддун аткарылышын да карап чыгабыз. Көп учурда, TPS өлчөө учурунда, транзакцияны иштетүү убактысы кардардан эмес, түйүндөрдөн алынат - бул таптакыр адилеттүү эмес. Кардар түйүн анын транзакциясын канчалык тез иштеткени кызыктырбайт, ал үчүн эң негизгиси блокчейнге киргизилген бул транзакция тууралуу ишенимдүү маалымат ага жеткиликтүү болуп калган учур. Дал ушул метрика, негизинен, транзакцияны аткаруу убактысы. Бул ар кандай кардарлар, ал тургай, бир эле транзакцияны жөнөтүү менен, каналга, жүктөөгө жана түйүндүн жакындыгына жараша такыр башка убакыттарды ала алат дегенди билдирет. Демек, бул убакытты кардарларга өлчөө керек, анткени бул оптималдаштырылган параметр.

Кардар тараптан транзакцияны даярдоо

Биринчи эки пункттан баштайлы: транзакция кардар тарабынан түзүлөт жана кол коюлат. Кызык жери, бул кардардын көз карашы боюнча блокчейндин иштөөсүнө тоскоолдук болушу мүмкүн. Бул бардык эсептөөлөрдү жана маалыматтар менен операцияларды өзүнө алган борборлоштурулган кызматтар үчүн адаттан тыш көрүнүш жана кардар даяр натыйжаны алуу менен чоң көлөмдөгү маалыматтарды же эсептөөлөрдү талап кыла ала турган кыска суроону даярдайт. Блокчейндерде кардар коду барган сайын күчтүү болуп, блокчейндин өзөгү барган сайын жеңилдейт жана массалык эсептөө тапшырмалары адатта кардар программасына өткөрүлүп берилет. Блокчейндерде бир транзакцияны узак убакытка даярдай ала турган кардарлар бар (мен ар кандай мерклик далилдер, кыска далилдер, босого кол тамгалар жана кардар тараптагы башка татаал операциялар жөнүндө айтып жатам). Оңой чынжырдагы текшерүүнүн жана кардар боюнча транзакцияны оор даярдоонун жакшы мисалы Merkle-tree негизделген тизмеге мүчөлүктүн далили болуп саналат, бул жерде макала.

Ошондой эле, кардардын коду блокчейнге транзакцияларды жөн эле жөнөтпөстөн, адегенде блокчейндин абалын сурай турганын унутпаңыз - жана бул активдүүлүк тармактын жана блокчейн түйүндөрүнүн тыгынына таасир этиши мүмкүн. Ошентип, өлчөөлөрдү алып жатканда, кардар кодунун жүрүм-турумун мүмкүн болушунча толук туурап алуу акылга сыярлык болмок. Сиздин блокчейниңизде кандайдыр бир активди өткөрүп берүү үчүн эң жөнөкөй транзакцияга кадимки санарип кол тамгасын койгон жөнөкөй жеңил кардарлар бар болсо да, жыл сайын кардар боюнча дагы эле массалык эсептөөлөр жүрүп жатат, крипто алгоритмдер күчөп баратат жана иштетүүнүн бул бөлүгү келечекте олуттуу тоскоолдукка айланат. Ошондуктан, этият болуңуз жана 3.5 секундга созулган транзакцияда транзакцияны даярдоого жана кол коюуга 2.5 секунд, ал эми аны тармакка жөнөтүүгө жана жооп күтүүгө 1.0 секунд сарпталган жагдайды өткөрүп жибербеңиз. Бул тоскоолдуктун тобокелдиктерин баалоо үчүн, сиз блокчейн түйүндөрүнөн эле эмес, кардар машиналарынан көрсөткүчтөрдү чогултушуңуз керек.

Транзакцияны жөнөтүү жана анын абалына мониторинг жүргүзүү

Кийинки кадам транзакцияны тандалган блокчейн түйүнүнө жөнөтүү жана аны транзакция пулуна кабыл алуу статусун алуу болуп саналат. Бул этап кадимки маалыматтар базасына кирүүгө окшош; түйүн бассейндеги транзакцияны жазып, p2p тармагы аркылуу ал тууралуу маалыматты тарата башташы керек. Бул жерде иштин натыйжалуулугун баалоо ыкмасы салттуу Web API микросервистеринин натыйжалуулугун баалоого окшош жана блокчейндердеги транзакциялардын өзү жаңыртылып, алардын статусун жигердүү өзгөртө алат. Жалпысынан алганда, кээ бир блокчейндер боюнча транзакция маалыматын жаңыртуу бир нече жолу болушу мүмкүн, мисалы, чынжыр айрыларынын ортосунда которулганда же BP транзакцияны блокко кошуу ниетин жарыялаганда. Бул бассейндин өлчөмүнө жана андагы транзакциялардын санына чектөөлөр блокчейндин иштешине таасир этиши мүмкүн. Эгерде транзакция пулу мүмкүн болгон максималдуу өлчөмдө толтурулган болсо, же оперативдүү эс тутумга туура келбесе, тармактын иштеши кескин төмөндөшү мүмкүн. Блокчейндерде керексиз билдирүүлөрдүн ташкынынан коргоонун борборлоштурулган каражаттары жок жана эгерде блокчейн чоң көлөмдөгү транзакцияларды жана төмөн жыйымдарды колдосо, бул транзакция пулунун толуп кетишине алып келиши мүмкүн - дагы бир потенциалдуу аткаруу тоскоолдуктары.

Блокчейндерде кардар транзакцияны өзүнө жаккан блокчейн түйүнүнө жөнөтөт, транзакциянын хэши адатта жөнөтүүдөн мурун кардарга белгилүү, андыктан ага туташууга жетишүү жана өткөргөндөн кийин блокчейндин өзгөрүшүн күтүү гана керек. анын транзакцияга мүмкүндүк берген абалы. Эскертүү, "tps" өлчөө менен сиз блокчейн түйүнүнө туташтыруунун ар кандай ыкмалары үчүн такыр башка натыйжаларды ала аласыз. Бул кадимки HTTP RPC же "жазылуу" үлгүсүн ишке ашырууга мүмкүндүк берген WebSocket болушу мүмкүн. Экинчи учурда, кардар мурда эскертме алат, ал эми түйүн транзакциянын абалы жөнүндө жоопторго азыраак ресурстарды (негизинен эстутум жана трафик) сарптайт. Ошентип, "tps" өлчөө учурунда кардарлар түйүндөрүнө туташуу жолун эске алуу керек. Ошондуктан, бул тоскоолдуктун тобокелдиктерин баалоо үчүн, эталондук блокчейн кардарларды WebSocket жана HTTP RPC суроо-талаптары менен чыныгы тармактарга туура келген пропорцияларда туурай алышы керек, ошондой эле транзакциялардын мүнөзүн жана алардын өлчөмүн өзгөртүшү керек.

Бул тоскоолдуктун тобокелдиктерин баалоо үчүн, сиз блокчейн түйүндөрүнөн эле эмес, кардар машиналарынан да метрика чогултушуңуз керек.

p2p тармагы аркылуу транзакцияларды жана блокторду берүү

Блокчейндерде peer-to-peer (p2p) тармактары катышуучулардын ортосундагы транзакцияларды жана блокторду өткөрүү үчүн колдонулат. Транзакциялар түйүндөрдүн биринен баштап, транзакцияларды блокторго топтоп, ошол эле p2p аркылуу жаңы блокторду бардык тармак түйүндөрүнө таркаткан теңдүү блок өндүрүүчүлөргө жеткенге чейин тарайт. Көпчүлүк заманбап p2p тармактарынын негизин Kademlia протоколунун ар кандай модификациялары түзөт. бул жерде бул протоколдун жакшы кыскача, жана бул жерде - BitTorrent тармагында ар кандай өлчөөлөр бар макала, андан бул тармактын түрү борборлоштурулган кызматтын катуу конфигурацияланган тармагына караганда татаалыраак жана азыраак алдын ала айтууга мүмкүн экенин түшүнүүгө болот. Ошондой эле, бул жерде Ethereum түйүндөрүнүн ар кандай кызыктуу метрикасын өлчөө жөнүндө макала.

Кыскача айтканда, мындай тармактардагы ар бир тең башка теңдештеринин өзүнүн динамикалык тизмесин сактайт, алардан мазмуну боюнча даректелген маалымат блокторун сурайт. Пир суроо-талапты алганда, ал керектүү маалыматты берет же суроону тизмеден кийинки псевдо-кокустукка өткөрүп берет жана жооп алгандан кийин, аны сурамчыга өткөрүп берет жана аны бир азга кэштейт. кийинки жолу эртерээк маалымат блогу. Ошентип, популярдуу маалымат көп сандагы кэштер менен аяктайт, ал эми популярдуу эмес маалымат акырындык менен алмаштырылат. Теңдештер кимге канча маалымат бергенин эсепке алып турушат жана тармак активдүү дистрибьюторлордун рейтингин жогорулатуу жана аларга жогорку деңгээлдеги кызмат көрсөтүү менен дем берүүгө аракет кылып, жигердүү эмес катышуучуларды тең тизмелерден автоматтык түрдө чыгарып салат.

Ошентип, транзакцияны азыр блок-продюсерлор көрүп, блокко киргизиши үчүн бүт тармакка жайылтуу керек. Түйүн жаңы транзакцияны баарына жигердүү "таратат" жана күткөн кардарды билдирүү үчүн керектүү транзакция пайда боло турган индексте блокту күтүп, тармакты угат. Тармактын p2p тармактарындагы жаңы транзакциялар жана блоктор жөнүндө маалыматты бири-бирине өткөрүп берүү убактысы көптөгөн факторлордон көз каранды: жакын жерде иштеген чынчыл түйүндөрдүн саны (тармактын көз карашы боюнча), "жылуу- Бул түйүндөрдүн кэштерин, блоктордун өлчөмүн, транзакцияларды, өзгөрүүлөрдүн мүнөзүн, тармактын географиясын, түйүндөрдүн саны жана башка көптөгөн факторлор. Мындай тармактарда өндүрүмдүүлүктүн көрсөткүчтөрүн комплекстүү өлчөө татаал маселе, бир эле учурда кардарлардын да, теңдештердин да (блокчейн түйүндөрү) суроо-талапты иштетүү убактысын баалоо зарыл. Ар кандай p2p механизмдериндеги көйгөйлөр, маалыматтарды туура эмес чыгаруу жана кэштөө, активдүү теңдештердин тизмелерин эффективдүү эмес башкаруу жана башка көптөгөн факторлор бүтүндөй тармактын натыйжалуулугуна таасирин тийгизген кечигүүлөрдү жаратышы мүмкүн жана бул тоскоолдукту талдоо эң кыйын болуп саналат. , тестирлөө жана натыйжаларды интерпретациялоо.

Blockchain иштетүү жана мамлекеттик маалымат базасын жаңылоо

Блокчейндин эң маанилүү бөлүгү - консенсус алгоритми, аны тармактан алынган жаңы блокторго колдонуу жана натыйжаларды мамлекеттик маалымат базасына жазуу менен транзакцияларды иштетүү. Чынжырга жаңы блокту кошуу жана андан кийин негизги чынжырды тандоо мүмкүн болушунча тезирээк иштеши керек. Бирок, чыныгы жашоодо "керек" деген сөз "иштейт" дегенди билдирбейт жана, мисалы, эки узун атаандаш чынжыр тынымсыз бири-бирин алмаштырып, ар бир которууда бассейндеги миңдеген транзакциялардын метадайындарын өзгөртүп турган кырдаалды элестетүүгө болот. , жана дайыма мамлекеттик маалымат базасын кайра жылдырып. Бул этап, кыйынчылыкты аныктоо жагынан, p2p тармак катмарына караганда жөнөкөй, анткени транзакциянын аткарылышы жана консенсус алгоритми катуу детерминисттик жана бул жерде эч нерсени өлчөө оңой.
Эң негизгиси бул этаптын аткарылышынын кокустук деградациясын тармак көйгөйлөрү менен чаташтырбоо керек - түйүндөр блокторду жана негизги чынжыр жөнүндө маалыматты жайыраак жеткиришет, ал эми тышкы кардар үчүн бул жай тармак сыяктуу көрүнүшү мүмкүн, бирок көйгөй такыр башка жер.

Бул этапта өндүрүмдүүлүктү оптималдаштыруу үчүн түйүндөрдүн өзүнөн метрикаларды чогултуу жана көзөмөлдөө жана аларга мамлекеттик маалымат базасын жаңыртуу менен байланышкандарды кошуу пайдалуу: түйүндө иштетилген блоктордун саны, алардын өлчөмү, транзакциялардын саны, чынжыр айрыларынын ортосундагы которгучтардын саны, жараксыз блоктордун саны, виртуалдык машинанын иштөө убактысы, маалыматтарды тапшыруу убактысы ж.б. Бул тармак көйгөйлөрүн чынжыр иштетүү алгоритмдериндеги каталар менен чаташтыруунун алдын алат.

Виртуалдык машинаны иштетүү транзакциялары блокчейндин иштешин оптималдаштырган пайдалуу маалымат булагы болушу мүмкүн. Эстутум бөлүштүрүүнүн саны, окуу/жазуу инструкцияларынын саны жана келишимдин кодун аткаруунун натыйжалуулугуна байланыштуу башка көрсөткүчтөр иштеп чыгуучуларга көптөгөн пайдалуу маалыматтарды бере алат. Ошол эле учурда, акылдуу келишимдер программалар болуп саналат, бул теория боюнча алар каалаган ресурстарды керектей алат: cpu/эс/тармак/сактагыч, андыктан транзакцияларды иштетүү өтө белгисиз этап болуп саналат, ал кошумча түрдө версиялардын ортосунда өтүүдө абдан өзгөрөт. жана келишим коддорун өзгөртүүдө. Ошондуктан, транзакцияларды иштетүүгө байланыштуу көрсөткүчтөр блокчейндин натыйжалуулугун оптималдаштыруу үчүн да керек.

Блокчейнге транзакцияны киргизүү жөнүндө билдирүүнү кардар алуу

Бул блокчейн кардарынын кызматты алуусунун акыркы этабы; башка этаптарга салыштырмалуу чоң кошумча чыгымдар жок, бирок дагы эле кардар түйүндөн көлөмдүү жооп алуу мүмкүнчүлүгүн карап чыгуу зарыл (мисалы, акылдуу келишим). маалыматтардын массивдерин кайтаруу). Кандай болгон күндө да, бул пункт "Сиздин блокчейниңизде канча tps бар?" Деген суроону берген адам үчүн эң маанилүү, анткени Бул учурда кызматты алуу убактысы жазылат.

Бул жерде ар дайым кардар блокчейнден жооп күтүүгө сарпташы керек болгон толук убакытты жөнөтүү бар; дал ушул жолу колдонуучу өзүнүн тиркемесинде ырастоону күтөт жана аны оптималдаштыруу болуп саналат. иштеп чыгуучулардын негизги милдети.

жыйынтыктоо

Натыйжада, биз блокчейндерде аткарылган операциялардын түрлөрүн сүрөттөп, аларды бир нече категорияга бөлө алабыз:

  1. криптографиялык трансформациялар, далилдөө конструкциясы
  2. peer-to-peer тармагын түзүү, транзакция жана блоктун репликациясы
  3. транзакцияларды иштетүү, акылдуу келишимдерди аткаруу
  4. мамлекеттик маалымат базасына блокчейндеги өзгөртүүлөрдү колдонуу, транзакциялар жана блоктор боюнча маалыматтарды жаңылоо
  5. мамлекеттик маалымат базасына окуу үчүн гана суроо-талаптар, blockchain түйүн API, жазылуу кызматтары

Жалпысынан заманбап блокчейн түйүндөрүнө коюлган техникалык талаптар өтө олуттуу – криптография үчүн тез процессорлор, сактоо жана мамлекеттик маалымат базасына тез кирүү үчүн оперативдүү эс тутумдун чоң көлөмү, бир эле учурда ачык байланыштардын көп санын колдонуу менен тармактык өз ара аракеттенүү жана чоң сактагыч. Мындай жогорку талаптар жана операциялардын ар кандай түрлөрүнүн көптүгү сөзсүз түйүндөрдө ресурстар жетишсиз болушуна алып келет, андан кийин жогоруда талкууланган этаптардын кайсынысы болбосун тармактын жалпы иштеши үчүн дагы бир тоскоолдук болуп калышы мүмкүн.

Блокчейндердин иштешин иштеп чыгууда жана баалоодо, сиз бул пункттардын баарын эске алышыңыз керек. Бул үчүн, сиз кардарлардан жана тармак түйүндөрүнөн бир эле учурда метрикаларды чогултуп, талдап, алардын ортосундагы корреляцияларды издеп, кардарларга кызмат көрсөтүүгө кеткен убакытты баалашыңыз керек, бардык негизги ресурстарды эске алыңыз: cpu/memory/тармак/сактоо , алар кандайча колдонуларын түшүнүп, бири-бирине таасир этет. Мунун баары ар кандай блокчейндердин ылдамдыгын "канча TPS" түрүндөгү салыштырууну абдан ыраазы кылбайт, анткени ар кандай конфигурациялар жана абалдар көп. Чоң борборлоштурулган системаларда, жүздөгөн серверлердин кластерлеринде бул көйгөйлөр да татаал жана ошондой эле көп сандагы ар кандай метрикаларды чогултууну талап кылат, бирок блокчейндерде p2p тармактары, виртуалдык машиналарды иштетүү контракттары, ички экономикалар, даражалардын саны эркиндик алда канча чоң, бул тестти атүгүл бир нече серверлерде кылат, ал индикативдик эмес жана чындык менен дээрлик эч кандай байланышы жок өтө болжолдуу маанилерди гана көрсөтөт.

Ошондуктан, блокчейндин өзөгүндө иштеп жатканда, өндүрүмдүүлүктү баалоо жана "ал акыркы мезгилге салыштырмалуу жакшырдыбы?" деген суроого жооп берүү үчүн, биз ондогон түйүндөр менен блокчейнди ишке киргизүүнү уюштурган жана автоматтык түрдө эталонду ишке киргизген жана метрикаларды чогулткан абдан татаал программаны колдонобуз. ; бул маалыматсыз бир нече катышуучулар менен иштеген протоколдорду оңдоо өтө кыйын.

Ошентип, сиз "блокчейниңизде канча TPS бар?" деген суроону алганыңызда, маектешиңизге чай сунуштаңыз жана ал он чакты графикти кароого даярбы же жокпу деп сураңыз, ошондой эле блокчейндин иштеши боюнча көйгөйлөрдүн үч кутусун жана сунуштарыңызды угуңуз. аларды чечүү ...

Source: www.habr.com

Комментарий кошуу