Skip to content

Համաձայնություն

Գործարքները հերթ են մտնում, նախքան Sumeragi-ը դրանք առաջարկում է բլոկում: Վալիդատորները անկախորեն հավաստիացնում եւ կատարում են առաջարկը, ապա ստորագրում են միայն այն պետության անցումը, որը կարող են վերարտադրել: Բլոկը պարտավորվում է այն բանից հետո, երբ պահանջվող վավերացնող քվորումը համաձայն է այդ արդյունքի վրա, եւ համապատասխան օգնական բեռը հասանելի է.

Բոլոր Iroha 3 ցանցերը օգտագործում են տվյալների մատչելիության եւ հուսալի հեռարձակման ուղիները: Նրանք համաձայնության պահանջներ են, այլ ոչ թե ընտրանքային տեղակայման հատկություններ:

Sumeragi

Sumeragi -ը Iroha-ի բիզանտական սխալների հանդուրժողական համակարծիքային շարժիչն է: Այն վերցնում է գործարքները հերթից, վավերացնող գործընկերներին համաձայնեցնում է նույն կարգավորված բլոկի վրա եւ վերջնականացնում է այդ բլոկը միայն այն բանից հետո, երբ բավարար վավերացողները վերարտադրել են նույն արդյունքը եւ ստորագրել պարտավորության վկայագիրը։

Sumeragi proposal-to-commit data flow

Առաջարկի եւ պարտավորությունների ուղին

Sumeragi բլոգը միանգամից առաջ է անցնում մեկ բլոկի բարձրությամբ: Յուրաքանչյուր բարձրության վրա, մեկ վավերացողը գործում է որպես ներկայիս տեսանկյունի առաջարկող: Առաջնորդը դուրս է բերում հավանություն ունեցող գործառույթները հերթից, կառուցում է թեկնածու բլոկ եւ հայտարարում է առաջարկը ակտիվ վավերացողի հավաքածուի համար:

Նույն Sumeragi խողովակաշարը օգտագործվում է ինչպես թույլատրված, այնպես էլ NPoS (Nominated Proof of Stake):

  1. Վավերացնողը առաջարկում է արգելել հերթով կատարվող գործարքները:
  2. Փաստաբանները հաստատում են առաջարկը՝ գործարքները կատարելով նույն համաշխարհային պետության դեմ:
  3. Վալիդատորները փոխանակում են քվեներ եւ քվորոմային վկայականներ ներկայիս բարձրության եւ տեսանկյունից:
  4. Երբ հասնում են հանձնաժողովի քվորումին, զուգընկերները հանձնում են արգելափակման եւ թարմացնում են իրենց համաշխարհային վիճակը:

Վավերացողները ստորագրում են միայն այն տվյալները, որոնք կարող են տեղականորեն վերարտադրել: Նախքան քվեարկությունը, վավերացողը ստուգում է, որ առաջարկը պատկանում է ակնկալվող շղթայի, բարձրության եւ տեսանկյունին; որ գործարքի ստորագրությունները եւ սահմանները գործում են; որ երթուղային երթեւեկությունն ու կատարողի հաստատումը որոշիչ են; Եթե տեղական արդյունքը տարբերվում է, վավերացնողը մերժում է առաջարկը, այլ ոչ թե քվեարկում դրա կողմ:

Քվեները փոքր ստորագրված համաձայնության ուղերձներ են: Նրանք վերաբերում են առաջարկվող բլոկին, բարձրությանը, տեսանկյունին եւ հավաստիացնողի ինքնությանը: Հավաքիչները այդ քվեները համախմբում են քվորոմային վկայական կամ պարտավորության վկայական. Վավերագրը հաստատուն ապացույց է, որ նույն բլոկի համար բավականաչափ վավերացողները նույն արդյունքը են արձանագրել:

Կվորում, հավաքողներ եւ դիտորդներ

Քվեարկության վավերացողների թիվը n սահմանում է բիզանտական սխալների բյուջեն: Առնվազն չորս վավերացու ունեցող ցանցերի համար բյուջեի քանակը f = floor((n - 1) / 3) է, իսկ հանձնաժողովի քվորումը 2f + 1. Մեկից մինչեւ երեք վավերացողների համար բոլոր վավերացողները պահանջվում են պարտավորության համար, ինչը օգտակար է զարգացման համար, բայց չունի գործնական անօֆլեյն ազատություն:

Հավաքիչները օպտիմալացում են: Յուրաքանչյուր վավերացու փոխարեն յուրաքանչյուր քվե ուղարկելով մյուս բոլոր վավերացողներին, Sumeragi կարող է ընտրել մեկ կամ մի քանի հավաքողներ բարձրության համար: Հավաքողները հավաքում են քվեները, հրապարակում են քվորոմի առաջընթացը եւ նվազեցնում են կրկնակի քվեների երթեւեկությունը: Գործնական հավաքիչների կարգավորումները բացահայտվում են GET /v1/sumeragi/collectors միջոցով, իսկ CLI-ի ops sumeragi telemetry լուսանկարը ներկայացնում է ներկա հավաքիչների թիվը:

դիտորդների զուգընկերները կարող են համաժամեցնել պարտավորված բլոկերը, բայց նրանք չեն առաջարկում, քվեարկում, հավաքում ձայներ կամ հաշվում հանձնաժողովի քվորոմը: Օգտագործեք դիտորդներ, երբ տեղակայման համար անհրաժեշտ է տեղական հարցումների ունակություն, ինդեքսավորում, վերահսկողություն կամ տարածաշրջանային բլոկերի կրկնօրինակում ՝ առանց քվեագրության հավաստիչների թվի ավելացնելու:

Տեսեք փոփոխությունները եւ վերականգնումը

Տեսանկյունը Sumeragi-ի փորձն է վերջնականացնել մի բարձրություն որոշակի առաջարկողի եւ ժամանակացույցի պլանի միջոցով: Եթե առաջարկը, օգտակար բեռը, քվեարկությունը կամ առաջընթացի կատարումը դադարեցվում են, փայսմեյկերը կարող է տեղափոխել բարձրությունը ավելի ուշ տեսանկյունին: Տեսանկյունի փոփոխությունը չի վերանորոգում պարտավորված բլոկը: Այն փոխում է այն, թե ինչպես են վավերացողները փորձում ավարտել չարտադրված բարձրությունը ՝ առաջ բերելով հայտնի ամենաբարձր քվորումը կամ փաստաթղթերը, այնպես որ զուգընկերները չեն վերջնականացնում հակասական բլոկները:

Օգտակար բեռի վերականգնումը առանձին է վերջնականության որոշումից: Պեր կարող է ստանալ քվորոմ կամ պարտավորության վկայագիր, նախքան այն ունենա ամբողջական բլոկային օգտակար բեռը: Այդ դեպքում պերն օգտագործում է հուսալի հեռարձակումը (RBC) կամ բլոկի համաժամեցումը օգնական բեռը վերականգնելու համար, այն ստուգում է գովազդված хэշերի դեմ. եւ միայն դրանից հետո բլոկը կիրառվում է համաշխարհային պետության եւ Kura նկատմամբ:

Համաձայնության եղանակներ

Ընտրված ռեժիմը վերահսկում է, թե ինչպես են ձեւավորվում եւ գործում վավերացողի հավաքածուները: Այն հայտարարվում է գենեզիսում consensus_mode եւ զուգընկերների կազմավորման միջոցով sumeragi.consensus_mode: Վերաբերեք այն որպես համացանցային վիճակ. վավերացնողները պետք է ունենան նույն ստորագրված գենեզը, տոպոլոգիան, վստահելի զուգընկերների տվյալները եւ արդյունավետ Sumeragi պարամետրերը:

Sumeragi consensus mode data flow
ՄոդըԼավագույն հարմարությունՎավերացնող սարքԳործառական կենտրոնացում
Թույլատրվում էմասնավոր, կոնսորցիումային եւ օպերատորների կողմից կառավարվող ցանցերՎալիդատորները գալիս են տեղակայման կողմից համաձայնեցված վստահելի գործընկերների տոպոլոգիայիցՊահպանեք բոլոր վավերացողները նույն ստորագրված գենեզի, վստահելի զուգընկերների, զուգընկերի բանալիների եւ Sumeragi պարամետրերի վրա:
NPOSՀանրային կամ Nexus ուղղված ցանցեր , որտեղ վավերացումը հետեւում է առաջադրման եւ շահույթի քաղաքականությանըՎալիդատորները ընտրվում են NPoS պրոֆիլով, սովորաբար տարբեր ժամանակաշրջաններով, եւ պահանջում են BLS բանալիներ գումարած սեփականության ապացույցներ:Պահպանեք խաղադրույքի ակնթարթային լուսանկարները, ժամանակաշրջանի պարամետրերը, հավաստիացնողը PoPs, եւ NPoS փուլային ժամանակահատվածը ցանցում:

Թույլատրված ռեժիմ

Օգտագործեք թույլատրված ռեժիմը, երբ վավերացողի ցուցակը բացարձակ գործառնական ընտրություն է: Սա սովորական սկիզբն է ինքնուրույն հյուրընկալվող Iroha ցանցերի համար, քանի որ անդամակցության փոփոխությունները դիտավորյալ կառավարման կամ ղեկավարի գործողություններ են: Օպերացիոն կարեւոր կանոնը այն է, որ յուրաքանչյուր վավերացնող պետք է գործի նույն տեսանկյունից գենեզի, վստահելի զուգընկերների, BLS Պրոֆեսիոնալության ապացույցների եւ Sumeragi պարամետրերի հետ: Մեկ զուգընկերը, որն ունի տարբեր տոպոլոգիա կամ ստորագրված գենեզը, կարող է կանխել ցանցի պարտավորությունը.

NPOS ռեժիմ

Օգտագործեք NPoS ռեժիմը, երբ տեղակայման պրոֆիլն ակնկալում է, որ վավերացողի մասնակցությունը պայմանավորված է անվանակարգով եւ խաղադրույքի վիճակով: Հանրային SORA Nexus տեղակայումները օգտագործում են NPoS, եւ դրանց ստեղծված պրոֆիլի մեջ ներառում են BLS վավերացու ինքնությունները, տիրապետության ապացույցները, ժամանակաշրջանի կարգավորումները. եւ Sumeragi NPoS պարամետրերը, որոնք անհրաժեշտ են սկսման ժամանակ: Epoch փոփոխությունները կարող են փոխարինել սահմանված բարձրություններում սահմանված ակտիվ վավերացնողը, այնպես որ օպերատորները պետք է վերահսկեն ինչպես համաձայնության առողջությունը, այնպես էլ խաղադրույքի կամ անվանակարգի վիճակը, որը կերակրում է հաջորդ ցուցակը:

բազմակողմանի համաձայնություն

Iroha-ի բազմակողմանի կոնսենսուսային ուղին իրականացվում է Nexus երթուղու եւ տվյալների տարածքի կարգավորման միջոցով: Այն չի սկսում յուրաքանչյուր երթուղի համար առանձին համանախագահական միջադեպ: Sumeragi-ը դեռեւս ավարտում է պատվիրված մեկ բլոկային հոսքը. երթուղիները նկարագրում են, թե ինչպես են գործարքները ուղղորդվում, պլանավորվում, հաշվարկվում եւ պահվում այդ հոսքի մեջ:

Runtime կոնֆիգուրացիան կառուցում է երեք կտոր երթուղու վիճակը:

  • lane_catalog: կոնֆիգուրացված երթուղիները, որոնցից յուրաքանչյուրը ունի թվային LaneId, կեղծ անուն, տվյալների տարածք, տեսանելիություն, պահեստավորման պրոֆիլ, ապացուցման սխեմա եւ մետադատա:
  • dataspace_catalog: կոնֆիգուրացված տվյալների տարածքները, որոնցից յուրաքանչյուրը ունի թվային DataSpaceId եւ սխալների հանդուրժողականության արժեք, որը օգտագործվում է ռելեյի կոմիտեի չափման համար:
  • routing_policy: տվյալների տիրույթի եւ երթեւեկության կարգավորված կանոնները, որոնք կարող են համապատասխանել հաշիվներին կամ հրահանգների ուղիներին:

Երբ գործարքը մտնում է հերթը, երթուղային ռաուտերը լուծում է այն RoutingDecision { lane_id, dataspace_id }: Միայն երթուղի ռեժիմում դա միշտ երթուղին է 0 եւ համընդհանուր տվյալների տարածությունը: Nexus ռեժիմում կոնֆիգուրացված երթուղիչը կիրառում է տվյալների տարածքի չափով կանոններ, հաշվետվությունների երթեւեկություն, հաշիվների կանոններ, հստակ երթեւեւեկության կանոններ եւ վերջապես կանխատեսված երթուղին։ Բացահայտված երթուղին եւ տվյալների տարածքը պետք է լինեն իրենց կատալոգներում, եւ երթուղը պետք է կապված լինի լուծված տվյալների տարածքի հետ. հակառակ դեպքում գործարքը մերժվում է նախքան այն հերթավորվում է:

Սկանդակը պահում է այս երթուղային որոշումը գործարքի հաշշի հետ, որպեսզի հետագա փուլերում ստիպված չլինեն այն կրկին եզրակացնել: Առաջարկման շինարարությունը այնուհետեւ երկու ձեւով օգտագործում է ճամփորդի մետադատան.

  • Այն փոխանցում է գործարքները գոտի-գետին, այնպես որ ոչ մի գոտի չի գերակշռում բլոկը միայն այն պատճառով, որ նրա գործարքները առաջին հերթին հերթ են կազմել:
  • Այն կիրառում է յուրաքանչյուր գոտու գործարքի կատարման միավորի (TEU) սահմանները: Գործարքները, որոնք գերազանցում են գոտու կազմված հզորությունը, հետաձգվում եւ արգելափակվում են, բացի այն բանից, որ գոտու համար առաջին ավելորդ քաշով գործարքը կարող է թույլատրվել, որպեսզի խուսափվի կենդանի փակումը:

Վստահելի հեռարձակման ընթացքում Sumeragi համախմբում է առաջարկված օգտակար բեռը ըստ գոտու եւ տվյալների տարածքի: Գրանցվող ընդհանուր թվերը ներառում են գործարքների քանակը, հեռարձակումների հատվածները, օգտակար բեռնվածի բայթները եւ TEU: Կատարելուց հետո այդ ընդհանուր թվերը դառնում են գոտու ու տվյալների տարածության պարտավորությունների ակնթարթներ, որոնք բացահայտվում են Sumeragi կարգավիճակի միջոցով: Եթե բլոկը պարունակում է գոտի կարգավորման ստուգումներ, ապա բլոկային մշակումը նաեւ ստեղծում է գոտու կարգավորման պարտավորություններ եւ ռեալի փաթեթներ, որոնք կապում են բլոկի գլխագիրը, պարտավորության վկայականը, տվյալների մատչելիության պարտավորությունների хэշը, կարգավորման ապացույցը եւ գոտու շահագործման չափը:

Հուսալի հեռարձակումը (RBC)

Վստահելի հեռարձակումը (RBC) Sumeragi-ի օգտակար բեռի տարածման եւ վերականգնման ուղին է: Այն օգնում է վավերացնողներին եւ դիտորդներին ձեռք բերել առաջարկին պատկանող բլոկային մարմինը կամ պարտավորեցնել վկայականը, հատկապես այն ժամանակ, երբ հետաձգվում կամ կորած է BlockCreated հաղորդագրություն, բլոկ-համագործակցության թարմացում կամ անմիջական օգտակար բեռնափոխադրում:

RBC-ը աշխատում է օգտակար բեռի մակարդակում: Առաջնորդը հայտարարում է RBC նստաշրջանի բլոկի բարձրության, տեսնելու եւ օգտակար բեռնման համար, այնուհետեւ ուղարկում է օգտակար ծանրաբեռնվածքի կտորներ կոմիտետ տոպոլոգիայի վրա: Դեռահասները հետեւում են մասերի ստացմանը, հաստատում են վերականգնված օգտակար բեռնվածությունը գովազդված շաշի հետ եւ փոխանակում են READY եւ DELIVER ազդանշանները, երբ բավարար վավերացողները դիտարկել են նույն օգտակար բեռը: Հանդիպումները սահմանափակվում են TTL, կտոր, ֆանոուտ, սպասարկվող պահեստային եւ մշտական խանութային սահմաններով, այնպես որ վերականգնման երթեւեկությունը չի կարող աճել առանց սահմանի:

RBC ինքնուրույն համակարծիք որոշում չէ եւ այն չի փոխարինում պարտավորության վկայականը: Բլոկը դեռեւս ավարտվում է միայն այն դեպքում, երբ զուգընկերն ունի վավերացված պարտավորության հավաստագիր եւ տեղականորեն համապատասխանում է օգտակար բեռնվածությանը: RBC-ը պարտադիր մատչելիության ապացույցներ եւ օգտակար բեռի վերականգնում է, մինչդեռ commit առաջընթացը պայմանավորված է commit վկայակոչով գումարած տեղական payload: Եթե վկայագիրը հասնում է payload-ից առաջ, peer-ը կարող է վերականգնել payload- ը միջոցով RBC կամ բլոկ սինկրոնիկացիա, ապա commit.

Օպերացիոն առումով, RBC օգտակար է բացակայող շահագործման բեռնվածության եւ տվյալների մատչելիության շշնջուղի ախտորոշման համար.

  • iroha --output-format text ops sumeragi telemetry ցույց է տալիս հավաքածու առկայության քվեները, ներկա հավաքողների թիվը եւ սպասվող RBC նստաշրջանները:
  • GET /v1/sumeragi/rbc եւ GET /v1/sumeragi/rbc/sessions-ը բացահայտում են Torii-ի վերաբերյալ մանրամասն ամփոփված եւ ակտիվ նստաշրջանի տվյալները, ներառյալ մասերի առաջընթացը, պատրաստությունը, առաքման վիճակը եւ երթեւեկության կամ տվյալների տարածքի հետապնդումը. տես Torii վերջնական կետերը :
  • Prometheus ազդանշանները, ինչպիսիք են sumeragi_rbc_store_pressure, sumeragi_rbc_backpressure_deferrals_total եւ ամեն ուղու կամ տվյալների տարածքի համար RBC հետապնդման չափիչները օգնում են առանձնացնել ցանցի կորուստը, մասերի վերականգնումը եւ պահեստային ճնշումը. տես Ապահողություն եւ չափանիշներ:

Kura-ը պահեստավորման դասակարգման համար օգտագործում է ծագած գոտի կազմաձեւումը: Յուրաքանչյուր գոտին ստանում է որոշակի պահեստային անուններ, ինչպիսիք են blocks/lane_000_core եւ merge_ledger/lane_000_core_merge.log; գոտի կյանքի շրջանի փոփոխությունները կարող են ապահովել, հեռացնել կամ վերանայել այդ հատվածները ՝ առանց գլոբալ բլոկների կարգավորումը փոխելու: