Skip to content

دنیا

World عالمی ادارہ ہے جس میں دیگر ادارے شامل ہیں۔ World میں شامل ہیں:

جب ڈومینز، ہم مرتبہ یا کردار رجسٹرڈ ہوتے ہیں یا غیر رجسٹر شدہ ہوتے ہیں تو World (غیر) رجسٹر ہدف ہے .

ورلڈ اسٹیٹ ویو (WSV)

ورلڈ اسٹیٹ ویو موجودہ بلاکچین ریاست کی ان میموری نمائندگی ہے۔ اس میں 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 ابتدائی حالت تخلیق کرتا ہے اور committed بلاکس کو دوبارہ تبدیل کرتا ہے Kura. اگر ایک سنیپ شاٹ درست ہے لیکن Kura کے پیچھے، صرف لاپتہ اونچائی کی حد دوبارہ ادا کی جاتی ہے.

ریپلے ہر ذخیرہ شدہ بلاک کی توثیق کرتا ہے ، اس اونچائی کے لئے کمیٹ لسٹ کو دوبارہ بناتا ہے ، بلاک اثرات کو 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/ میں نکال سکتا ہے جبکہ ہیش اور انڈیکس اندراجات کی توثیق اور تلاش کے لئے دستیاب رکھ سکتا ہے۔.