Աշխարհ
World գլոբալ միավորն է, որը պարունակում է այլ միավորներ։ World-ը բաղկացած է հետեւյալից.
- Iroha կազմակերպման պարամետրեր
- գրանցված զուգընկերներ
- գրանցված տիրույթներ
- գրանցված թիթգերներ
- գրանցված մասեր
- գրանցված թույլտվության տոքերների սահմանումները
- բոլոր հաշիվների համար թույլտվության տոքեր
- վավերացողների շղթան
Երբ դոմեյնները, զուգընկերները կամ դերերը գրանցված են կամ չեն գրանցվել, World -ը հանդիսանում է (ան) գրանցման հրահանգի նպատակը.
Աշխարհի պետության տեսանկյունից (WSV)
World State View- ը ներկա բլոկչեյնի վիճակի հիշողության մեջ ներկայացումն է: Այն ներառում է World, պարտավորացված բլոկային շիշներ, գործարքների ինդեքսներ եւ գործընկերներ, որոնք ընտրվել են ընթացիկ դարաշրջանի համար: Ամբողջական բլոկի օգտակար ծանրաբեռնվածությունները մատուցվում են Kura-ից, այլ ոչ թե կրկնապատկվում են որպես փոփոխվող WSV տվյալներ:
Գլխավոր էջ WSV այն վիճակը, որում հարցումները կարդացվում են եւ բլոկի կատարումը փոխվում է: Դա ինքնուրույն ճշմարտության մշտական աղբյուր չէ: Պարբերական պատմությունը պահվում է Kura, եւ WSV կարող է վերակառուցվել Kura արգելափակումներ կամ բեռնված է վիճակի snapshot եւ ապա բռնկվել է կրկնօրինակելով նոր Kura բլոկներ:
Ինչ է հետեւում WSV
WSV օբյեկտը ավելի լայն է, քան World առարկանը։ Փաստորեն այն պարունակում է՝
World: պարամետրեր, զուգընկերներ, տիրույթներ, հաշիվներ, ակտիվներ, NFTs, դերը, թույլտվությունները, գործարկիչները, կատարողի տվյալները եւ գրանցված այլ տվյալների մոդելի օբյեկտներ- պարտավորված բլոկային շիշեր եւ վերջին պարտավորվող բարձրությունը
- բլոկային գործարքների ինդեքսները, որոնք օգտագործվում են հարցումների եւ ստուգումների միջոցով
- ներկայիս եւ նախկին հանձնաժողովի տոպոլոգիան, որն օգտագործվում է համաձայնության միջոցով
- ներմուծված բլոկներից ստացված հիշողության ինդեքսներ, ինչպիսիք են տվյալների մատչելիության պարտավորությունները, ընդունման դասիչները, պին մտադրությունները եւ հարցումների նախագծման նշանները:
- վազման ժամանակի կոնֆիգուրացիայի շտապ լուսանկարներ, որոնք անհրաժեշտ են դետերմինիստիկ բլոկների կատարման համար, ինչպիսիք են կրիպտոգրաֆիան, կառավարումը, խողովակաշարը, բովանդակությունը, կարգավորումները եւ Nexus կարգավորումները:
Հարցումները սովորաբար ստանում են միայն ընթերցման StateView այս կառույցների վրա: Տեսանկյունը հարցումների կատարման համար հետեւողական ակնթարթ է, այն թույլ չի տալիս ուղղակի մուտացիան WSV:
Ինչպես է փոխվում WSV
WSV փոփոխությունները փուլավորվում են նախքան դրանք կատարելը: Բլոկի գործարկումը ստեղծում է բլոկի չափով պետության ծածկույթ, եւ յուրաքանչյուր ընդունված գործարքը կիրառում է իր հրահանգները գործարքի չափով ծածկույթի մեջ: Այդ գործարքների կողմից պահանջվող տվյալները առաջացնում են միեւնույն բլոկային համատեքստում: Ժամանակային գործարկիչները գնահատվում են բլոկի համար գործարքի ազդեցություններից հետո:
Երբ կոնսենսուսը հանձնարարում է բլոկ, զուգընկերն առաջին հերթին հանձնարարում է պարտավորված բլոկը Kura: Եթե այս հանձնարարի քայլը ձախողվի, WSV-ը չի առաջընթացվում եւ համաձայնության փուլը կրկին փորձում է կամ հանձնում է բլոքի օգտակար բեռը. Երբ բլոկը ընդունվում է Kura-ի հերթին, Iroha-ն կիրառում է գործարկման հետագա բլոկային ազդեցությունները, թարմացնում է ստացված ինդեքսները եւ կատարում է փուլային WSV փոփոխությունները վիճակի տեսանկյունից արգելափակման ներքո: Սա խուսափում է ընթերցողների կողմից մասամբ պարտավորված բլոկ դիտելուց.
Համաձայնության կարեւոր կանոնն այն է, որ զուգընկերները պետք է հասնեն նույն WSV նույն պարտավորված բլոկներից: Դirect տեղական խմբագրումներ WSV տվյալների շրջանցման հրահանգներին եւ կհանգեցնեն զուգընկերը չհամաձայնել հավաստիացման կամ կրկնելու ժամանակ:
Սկսում եւ կրկնօրինակում
Սկսելիս, Iroha նախ նախաձեռնում է Kura եւ սովորում է պահված բլոկի բարձրությունը: Այնուհետեւ փորձում է ներբեռնել վիճակի ակնթարթային նկարը: Եթե ոչ մի ակնթարթի լուսանկար չի մատչելի կամ եթե ակնթարթն մերժվում է որպես վերականգնվող, Iroha ստեղծում է սկզբնական պետություն եւ փոխարինում է պարտավորված բլոքները Kura-ից: Եթե լուսանկարը վավեր է, բայց Kura-ի ետեւում, ապա կրկնվում է միայն բացակայող բարձրության շրջանակը:
Replay- ը հավաստիացնում է յուրաքանչյուր պահված բլոկը, վերակառուցում է այդ բարձրության համար հանձնարարականների ցուցակը, կիրառում է բլոկային ազդեցությունները WSV- ին եւ հանձնարարում է արդյունաբերվող վիճակը: Սա նշանակում է, որ Kura -ը վերականգնման ուղին է WSV- ի համար, մինչդեռ ակնթարթային լուսանկարները օպտիմալացման միջոց են, որոնք խուսափում են ամբողջ շղթայի կրկնակի խաղալու համար:
Kura պահեստավորում
Kura -ը Iroha-ի մշտական բլոկային պահեստն է: Այն պահպանում է ստորագրված բլոկներ եւ վերականգնման մետադատա: Այն չի պահպանում WSV-ի երկրորդ փոփոխվող պատճենը:
Kura պահեստավորումը արմատավորված է kura.store_dir: Այդ արմատի մեջ բլոկային տվյալները բաժանվում են երթուղու կամ հատվածով: Սեգման հիմնական ֆայլերը հետեւյալն են'
| Ճանապարհ | Նպատակ |
|---|---|
blocks/<segment>/blocks.data | Հետեւյալ Norito շրջանակներով ստորագրված բլոկային օգտակար բեռներ: |
blocks/<segment>/blocks.index | Ֆիքսված չափի (start, length) գրառումները, որոնք քարտեզի բլոկի բարձրությունը կազմում են blocks.data բայթներ: |
blocks/<segment>/blocks.hashes | Բլոկել hashes ըստ բարձրության արագ որոնման եւ սկիզբ հաստատման համար. |
blocks/<segment>/blocks.count.norito | Հավերժ commit marker- ը, որը գրում է, թե քանի բլոկ ինդեքս մուտքագրություններ են անվտանգ օգտագործման համար: |
blocks/<segment>/da_blocks/ | Evicted բլոկի payloads պահվում է դուրս blocks.data երբ սկավառակի-բյուջեի կատարումը տեղափոխում է հին մարմինները տաք ֆայլից. |
blocks/<segment>/pipeline/sidecars.norito եւ sidecars.index | Փողովակաշարի վերականգնման կողային ավտոմեքենաները՝ բլոկի բարձրության համաձայն: |
blocks/<segment>/pipeline/roster_sidecars.norito եւ roster_sidecars.index | Վերջին commit-roster sidecars օգտագործվում է բլոկի համաժամեցման եւ կրկնօրինակում. |
merge_ledger/<segment>.log | Հավաքման հաշվետվությունների գրառումները, որոնք ուղղված են պարտավորացված բլոկներին: |
commit-rosters.norito | Վերջին բլոկների համար պահված պարտավորության վկայականներ եւ վավերացնող ստուգման կետեր: |
Kura շղթայի համար պահում է համապարփակ հիշողության մեջ վեկտոր. յուրաքանչյուր բարձրություն ունի բլոկի хэշը եւ, ի տարբերություն, բլոկային մարմինը: Գենեզիսային բլոկը մնում է պահված, իսկ ամենավերջին kura.blocks_in_memory ոչ-գենեզիսական բլոկները պահում են իրենց մարմինները հիշողությունում: Հին բլոկի մարմինները հանվում են հիշողությունից եւ անհրաժեշտության դեպքում վերբեռնում են Kura ֆայլերից:
Սկսման ընթացքում strict ռեժիմը հաստատում է պահված բլոկները բլոկի օգտակար ծանրաբեռնվածություններից եւ անհրաժեշտության դեպքում վերանորոգում է շիշ ֆայլը: fast ռեժիսորը սկսվում է պահված շիշ / ինդեքս մետադատայից եւ վերադառնում է խիստ նախաձեռնմանը, եթե այդ մետադատան անհամատեղելի է: Եթե Kura-ը հայտնաբերում է կոռուպցիոն պոչ, ապա պահեստավորումն անցնում է մինչեւ վերջին հաստատված բլոկը:
Kura-ը նոր բլոկներ գրում է ֆոնային գրողի միջոցով: Գրողը ավելացնում է բլոկի օգտակար բեռները, շիշերը եւ ինդեքսային մուտքերը, այնուհետեւ առաջ մղում է տեւական հաշման նշանը ՝ ըստ կազմավորված fsync քաղաքականության: Երբ սկավառակային բյուջեի կատարումը ակտիվ է, Kura-ը կարող է մաքրել կենսաթոշակառու սեգմենտները կամ տարեց բլոկային մարմիններ դուրս հանել da_blocks/-ի մեջ ՝ հավաստագրման եւ որոնման համար մատչելի պահելով հաշեյերներն ու ինդեքսային մուտքերը: