العالم
World هي الكيان العالمي الذي يتضمن كيانات أخرى. تتكون World من:
- Iroha معايير التشغيل
- الأقران المسجلون
- النطاقات المسجلة
- المحفزات المسجلة
- المسجلة أدوار
- مسجلة تعريفات رموز الإذن
- رموز الإذن لجميع الحسابات
- سلسلة مؤكّدات وقت التشغيل
عندما يتم تسجيل النطاقات أو الأقران أو الأدوار أو غير المسجلة، فإن World هو هدف تعليمات (غير) التسجيل .
نظرة الدولة العالمية (WSV)
ويعد World State View تمثيلًا داخل الذاكرة للحالة الحالية في بلوكتشين. يتضمن World ، وحشات الكتل الملتزمة، ومؤشرات المعاملات، والقرون الذين يتم اختيارهم للفترة الحالية. يتم تقديم حمولات كتلة كاملة من Kura بدلاً من تكرارها كبيانات متحركة WSV.
WSV هي الحالة التي تقرأ فيها الأسئلة وتتحول تنفيذ الكتل. ليست مصدرًا دائمًا للحقيقة بذاتها. يتم تخزين التاريخ الدائم في Kura ويمكن إعادة بناء WSV من كتلة Kura أو تحميلها من لقطة حالة ومن ثم التقاطها عن طريق إعادة تشغيل كتلة Kura أحدث.
ما هي آثار WSV
WSV أوسع من World الموضوع. في الممارسة العملية يحتوي على:
World: المعلمات، النظائف، المجالات، الحسابات، الأصول، NFTs، الأدوار والإجازات، المحفزات، بيانات التنفيذية، وغيرها من كائنات نموذج البيانات المسجلة.- الحشيشات المشتركة وآخر ارتفاع المشترك
- مؤشرات المعاملات إلى الكتل التي تستخدم في الاستفسارات والإيصالات
- التوضيحات الحالية والسابقة التي تستخدمها الإجماع
- مؤشرات في الذاكرة المستمدة من الكتل الملتزمة، مثل التزامات توافر البيانات ومؤشرات الإيصالات ومقصودات القرص والعلامات لتحديد الاستفسارات.
- اللقطات الفورية لتكوين وقت التشغيل اللازمة لتنفيذ كتلة محددة، مثل التشفير والحوكمة والخطوط الأنابيب والمحتويات والتسوية وتعيينات Nexus
تتلقى الاستفسارات عادةً StateView فقط للقراءة على هذه الهياكل. تعتبر الرؤية صورة سريعة متسقة لتنفيذ استفسار؛ لا تسمح بتغيير مباشر في WSV.
كيف تغير WSV
يتم تخطيط WSV التغييرات قبل أن يتم الالتزام بها. إن تنفيذ الكتلة يخلق تغطيًا للحالة على نطاق الكتلة، وتطبق كل معاملة مقبولة تعليماتها في تغطيٍ على نطاط المعاملة. تُؤدي البيانات التي تستدعيها تلك المعاملات إلى تشغيلها في سياق نفس الكتلة. يتم تقييم محفزات الوقت بعد تأثيرات المعاملة على الكتلة.
بعد أن يقوم الإجماع بتكليف كتلة، يقوم الزميل أولاً بإرسال الكتلة الملتزمة في Kura. إذا فشل هذا الخطوة الإرسالية، فإن WSV لا يتم تقدمها وتحاول حلقة الإجماع إعادة أو إرسال عبء الكتلة. عندما يتم قبول الكتلة في صف Kura ، يطبق Iroha تأثيرات الكتلة بعد التنفيذ ، وتحديث المؤشرات المستمدة ، ويقوم بتغييرات مرحلية WSV تحت قفل الرؤية الحالة. وهذا يحافظ على القراء من ملاحظة كتلة ملتزمة جزئياً.
القاعدة الحرجة للاتفاق هي أن الأقران يجب أن يصلوا إلى نفس WSV من نفس الكتل الملتزمة. التحرير المحلي المباشر إلى تعليمات تجاهل البيانات 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 | حظر الهيشيز حسب ارتفاع للبحث السريع والتحقق من البدء. |
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 | السيارات الجانبية الأخيرة المستخدمة في التزامن والإعادة التشغيل. |
merge_ledger/<segment>.log | الإدخالات في دفتر الدراسات المشتركة التي تتوافق مع الكتل المتعهدة. |
commit-rosters.norito | الحفاظ على شهادات الالتزام ومواقع التحقق من الموافقة على الكتل الأخيرة. |
Kura يحافظ على متجه مركب في الذاكرة للسلسلة: كل ارتفاع يحتوي على حش الكتلة، وبدلاً من ذلك، جسم الكتلة. لا يزال حجر التكوين محجوزًا ، وأحدث kura.blocks_in_memory الكتل غير التكوينية تبقي أجسادها في الذاكرة. Kura الملفات عند الحاجة.
أثناء التشغيل، يؤكد وضع strict الكتل المخزنة من حمولات الكتل المفيدة ويعيد كتابة ملف الهاش إذا لزم الأمر. يبدأ وضع fast من البيانات الأساسية المتخزينة/المؤشر وتعود إلى تشغيل صارم إذا كانت هذه البيانات غير متسقة. إذا اكتشفت Kura ذيلًا فاسدًا، فإنه يصلح التخزين إلى آخر كتلة معتمدة.
Kura يكتب كتب جديدة من خلال كاتب خلفية. يقوم الكاتب بإضافة حمولات بلاك مفيدة، والهاشات، وإدخالات المؤشر، ثم يقدم علامة العد الدائم وفقا لسياسة fsync الموضحة. عندما يكون تنفيذ ميزانية القرص نشطًا ، يمكن Kura تطهير الأجزاء المتقاعدة أو إخلاء أجسام الكتل الأكبر سناً إلى da_blocks/ مع الحفاظ على الهاشات وإدخالات المؤشر متاحة للتحقق من التحقق والبحث.