Дэлхий
World нь бусад нэгжүүдийг агуулсан дэлхийн нэгж юм. World нь:
- Iroha эсгэлэнгээний параметрүүд
- бүртгэгдсэн өрсөлдөгчид
- бүртгэлтэй доменүүд
- бүртгэгдсэн төгжүүлэгчид
- бүртгэгдсэн доллгууд
- бүртгэгдсэн зөвшөөрлийн тэмдэгтийн тодорхойлолтууд
- бүх бүртгэлийн зөвшөөрлийн токенүүд
- гүйлгээний цаг хугацааны баталгаажуулагчдын сүлжээ
Тодруулсан эсвэл бүртгэгдээгүй доменүүд, өрсөлдөгчид, үүрэг гүйцэтгэдэг бол World нь (un) register заалын зорилго юм.
Дэлхийн улс орны үзэл баримтлал (WSV)
World State View бол өнөөгийн блокчейн байдлын дурсгалын төлөөлөл юм. Энэ нь World, үүрэг гүйцэтгэсэн блок хэшүүд, гүйлгээний индекс болон одоогийн үеэс сонгогдсон өрсөлдөгчдийг багтааж байна. Блокийн бүрэн ашиг ачааллыг Kura-аас дублиер болгохын оронд өөрчлөгдөх WSV өгөгдлийн хувьд үйлчлүүлдэг.
WSV нь асуултууд уншиж, блок гүйцэтгэх өөрчлөлт ордог байдал юм. Энэ бол үнэний тогтвортой эх үүсвэр биш юм. Байнгын түүхийг Kura-д хадгалагддаг болон WSV нь Kura блокнуудаас сэргээн босгож, эсвэл нөхцөл байдлын хяналт татаж, дараа нь шинэ Kura блокнуудыг дахин тоглох замаар авагдаж болно.
WSV нөөц нь юу вэ
WSV нь World объектээс өргөн хүрээтэй бөгөөд үйл хэрэгт дараах зүйлсийг бүрдүүлж байна:
World: параметр, ижил төстэй зүйл, домен, данс, хөрөнгө, NFTs, үүрэг, зөвшөөрөл, идэвхжүүлэгч, гүйцэтгэгч мэдээлэл болон бүртгэлтэй мэдээллийн загварын бусад объектүүд- Зохиогдох блок хэшүүд, хамгийн сүүлд заасан өндөр
- Судалгаа, хүлээн авах бүртгэлд хэрэглэгддэг транзакцын-блок индекс
- санал нэгдлийн дагуу хэрэглэгдэж буй одоогийн болон өмнөх "commit" топологи
- Мэдээллийн хүртээмжтэй байдлын үүрэг гүйцэтгэгч, хүлээн авах курсор, шилжилтийн зорилт, асуултын проекцийн тэмдэгүүд гэх мэт үүрэг бүхий блокнуудаас үүдэлтэй дурсгалын индексүүд
- Дэтерминист блок гүйцэтгэхэд шаардлагатай гүйлгээний цаг үеийн конфигурацийн хүйтэн зураг, тухайн үед криптография, засаглал, урсгал, агуулга, зохицуулалт, Nexus тохируулалтын
Судалгаа нь хэвийн байдлаар эдгээр бүтэцүүд дээр зөвхөн уншдаг StateView хүлээн авдаг. Судалгаа гүйцэтгэхэд үзэл баримт байдаг; энэ нь WSV -ийн шууд өөрчлөлтийг зөвшөөрдөггүй юм.
WSV-ийн өөрчлөлт
WSV өөрчлөлтийг үйлдэхээс өмнө үе шаттай болгодог. Блок гүйцэтгэх нь блок-скоптой байдлын давхаргыг бий болгож, хүлээн зөвшөөрөгдсөн аливаа гүйлгээ нь өөрийн зааварыг гүйлгээний хэмжээнд давхаргаар ашигладаг. Эдгээр гүйлгэдийн үйл ажиллагааны хүрээнд явагдаж байгаа мэдээллийн үүсгэгч . Цаг хугацааны хүчин зүйлсийг блок дахь гүйлгээний үр нөлөөнөөс хойш үнэлдэг.
Үндсэн санал нэгдлийн дагуу блок хийсний дараа, Kura дахь үүрэг гүйцэтгэгч нь хамгийн түрүүнд [PH000000) блогыг цувралж байна. Хэрэв энэ цувралтын алхам амжилтгүй бол WSV нь дэвшилтэд хүрэхгүй бөгөөд эв нэгдлийн хувилбар блогын ашигтай ачааллыг дахин туршиж эсвэл цувралжуулдаг юм. Блок Kura-ийн шугамд хүлээн зөвшөөрөгдөх үед, Iroha нь гүйцэтгэхээс хойш блокын нөлөөг хэрэглэж, дэргэдэх индексүүдийг шинэчлэл хийж, WSV -ийн үе шаттай өөрчлөлтийг байдлын үзэсгэлэнгийн гулгалтын дор үйлддэг. Энэ нь уншигчдыг хэсгээр үүрэг гүйцэтгэсэн блок ажиглахаас сэргийлэх юм.
Үндсэн ойлголцлын гол дүрэм нь өрсөлдөгчид ижил WSV хэсгээс ижил үүрэг гүйцэтгэсэн блок руу хүрэх ёстой. WSV өгөгдлийг салах даалгаврыг шууд орон нутгийн өөрчлөлт хийх бөгөөд баталгаажуулах эсвэл дахин тоглож байх үед өрсөлдөх хүмүүс санал зөрчсөн болно.
Сургууль эхлэх, дахин тоглох
Эхлэлтийн үед Iroha хамгийн түрүүнд Kura-ийг эхлүүлж, хадгалан үлдсэн блок өндөрт сурдаг. Дараа нь нөхцөл байдлын хяналтын зургийг борлуулахыг хичээдэг. Хэрэв ямар ч хяналтгүй зураг байхгүй бол, эсвэл нөхөн сэргээх боломжтой гэж үгүйсгэхгүй бол Iroha эхлэлийн байдлыг бий болгож, Kura-ийн үүрэг гүйцэтгэсэн блокдыг дахин зохиодог. Хэрэв Kura -ийн хяналт талын илрэл нь хүчинтэй бол зөвхөн алдагдалтай өндөрний диапазон дахин тоглох болно.
Replay нь хадгалан үлдсэн блок бүрт баталгаажуулж, тухайн өндөрний commit-ийн жагсаалтыг сэргээн босгож, block-ын нөлөөг 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 | Удахгүй хайж, эхлүүлэх баталгаажуулахын тулд өндөрний дагуу хэшиг хаах. |
blocks/<segment>/blocks.count.norito | Блок индексийн хэдэн бүртгэл ашиглах аюулгүй гэдгийг тэмдэглэх удаан хугацааны байнгын үүрэг тэмдэг. |
blocks/<segment>/da_blocks/ | 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/ -д нүүлгэн шилжүүлж, хэшүүд болон индекс бүртгэлүүдийг баталгаажуулах, хайх боломжтой болгодог.