Համաձայնություն
Գործարքները հերթ են մտնում, նախքան Sumeragi-ը դրանք առաջարկում է բլոկում: Վալիդատորները անկախորեն հավաստիացնում եւ կատարում են առաջարկը, ապա ստորագրում են միայն այն պետության անցումը, որը կարող են վերարտադրել: Բլոկը պարտավորվում է այն բանից հետո, երբ պահանջվող վավերացնող քվորումը համաձայն է այդ արդյունքի վրա, եւ համապատասխան օգնական բեռը հասանելի է.
Բոլոր Iroha 3 ցանցերը օգտագործում են տվյալների մատչելիության եւ հուսալի հեռարձակման ուղիները: Նրանք համաձայնության պահանջներ են, այլ ոչ թե ընտրանքային տեղակայման հատկություններ:
Sumeragi
Sumeragi -ը Iroha-ի բիզանտական սխալների հանդուրժողական համակարծիքային շարժիչն է: Այն վերցնում է գործարքները հերթից, վավերացնող գործընկերներին համաձայնեցնում է նույն կարգավորված բլոկի վրա եւ վերջնականացնում է այդ բլոկը միայն այն բանից հետո, երբ բավարար վավերացողները վերարտադրել են նույն արդյունքը եւ ստորագրել պարտավորության վկայագիրը։
Առաջարկի եւ պարտավորությունների ուղին
Sumeragi բլոգը միանգամից առաջ է անցնում մեկ բլոկի բարձրությամբ: Յուրաքանչյուր բարձրության վրա, մեկ վավերացողը գործում է որպես ներկայիս տեսանկյունի առաջարկող: Առաջնորդը դուրս է բերում հավանություն ունեցող գործառույթները հերթից, կառուցում է թեկնածու բլոկ եւ հայտարարում է առաջարկը ակտիվ վավերացողի հավաքածուի համար:
Նույն Sumeragi խողովակաշարը օգտագործվում է ինչպես թույլատրված, այնպես էլ NPoS (Nominated Proof of Stake):
- Վավերացնողը առաջարկում է արգելել հերթով կատարվող գործարքները:
- Փաստաբանները հաստատում են առաջարկը՝ գործարքները կատարելով նույն համաշխարհային պետության դեմ:
- Վալիդատորները փոխանակում են քվեներ եւ քվորոմային վկայականներ ներկայիս բարձրության եւ տեսանկյունից:
- Երբ հասնում են հանձնաժողովի քվորումին, զուգընկերները հանձնում են արգելափակման եւ թարմացնում են իրենց համաշխարհային վիճակը:
Վավերացողները ստորագրում են միայն այն տվյալները, որոնք կարող են տեղականորեն վերարտադրել: Նախքան քվեարկությունը, վավերացողը ստուգում է, որ առաջարկը պատկանում է ակնկալվող շղթայի, բարձրության եւ տեսանկյունին; որ գործարքի ստորագրությունները եւ սահմանները գործում են; որ երթուղային երթեւեկությունն ու կատարողի հաստատումը որոշիչ են; Եթե տեղական արդյունքը տարբերվում է, վավերացնողը մերժում է առաջարկը, այլ ոչ թե քվեարկում դրա կողմ:
Քվեները փոքր ստորագրված համաձայնության ուղերձներ են: Նրանք վերաբերում են առաջարկվող բլոկին, բարձրությանը, տեսանկյունին եւ հավաստիացնողի ինքնությանը: Հավաքիչները այդ քվեները համախմբում են քվորոմային վկայական կամ պարտավորության վկայական. Վավերագրը հաստատուն ապացույց է, որ նույն բլոկի համար բավականաչափ վավերացողները նույն արդյունքը են արձանագրել:
Կվորում, հավաքողներ եւ դիտորդներ
Քվեարկության վավերացողների թիվը 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 պարամետրերի վրա: |
| 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; գոտի կյանքի շրջանի փոփոխությունները կարող են ապահովել, հեռացնել կամ վերանայել այդ հատվածները ՝ առանց գլոբալ բլոկների կարգավորումը փոխելու: