مرکزی مواد پر جائیں
Change page

بلاک

بلاکس ٹرانزیکشنز کے بیچز ہوتے ہیں جن میں چین کے پچھلے بلاک کا ہیش شامل ہوتا ہے۔ یہ بلاکس کو ایک ساتھ (ایک چین میں) جوڑتا ہے کیونکہ ہیشز کو بلاک کے ڈیٹا سے کرپٹوگرافک طریقے سے اخذ کیا جاتا ہے۔ یہ دھوکہ دہی کو روکتا ہے، کیونکہ تاریخ میں کسی بھی بلاک میں ایک تبدیلی آنے والے تمام بلاکس کو باطل کر دے گی کیونکہ اس کے بعد کے تمام ہیشز بدل جائیں گے اور بلاک چین چلانے والے ہر شخص کو اس کا علم ہو جائے گا۔

پیشگی شرائط

بلاکس ایک بہت ہی ابتدائی سطح کا موضوع ہے۔ لیکن اس صفحے کو بہتر طور پر سمجھنے میں آپ کی مدد کے لیے، ہم تجویز کرتے ہیں کہ آپ پہلے اکاؤنٹس، ٹرانزیکشنز، اور ہمارا ایتھیریم کا تعارف پڑھیں۔

بلاکس کیوں؟

اس بات کو یقینی بنانے کے لیے کہ ایتھیریم نیٹ ورک پر تمام شرکاء ایک ہم آہنگ حالت کو برقرار رکھیں اور ٹرانزیکشنز کی درست تاریخ پر اتفاق رائے کریں، ہم ٹرانزیکشنز کو بلاکس میں بیچ کرتے ہیں۔ اس کا مطلب ہے کہ درجنوں (یا سینکڑوں) ٹرانزیکشنز ایک ہی وقت میں کمٹ، متفق، اور ہم آہنگ کی جاتی ہیں۔

A diagram showing transaction in a block causing state changes خاکہ Ethereum EVM illustrated (opens in a new tab) سے اخذ کیا گیا ہے

کمٹس کے درمیان وقفہ دے کر، ہم نیٹ ورک کے تمام شرکاء کو اتفاق رائے تک پہنچنے کے لیے کافی وقت دیتے ہیں: اگرچہ ٹرانزیکشن کی درخواستیں فی سیکنڈ درجنوں بار ہوتی ہیں، لیکن ایتھیریم پر بلاکس ہر بارہ سیکنڈ میں صرف ایک بار بنائے اور کمٹ کیے جاتے ہیں۔

بلاکس کیسے کام کرتے ہیں

ٹرانزیکشن کی تاریخ کو محفوظ رکھنے کے لیے، بلاکس کو سختی سے ترتیب دیا جاتا ہے (ہر نیا بنایا گیا بلاک اپنے پیرنٹ بلاک کا حوالہ رکھتا ہے)، اور بلاکس کے اندر ٹرانزیکشنز کو بھی سختی سے ترتیب دیا جاتا ہے۔ شاذ و نادر صورتوں کے علاوہ، کسی بھی وقت، نیٹ ورک پر تمام شرکاء بلاکس کی صحیح تعداد اور تاریخ پر متفق ہوتے ہیں، اور موجودہ لائیو ٹرانزیکشن کی درخواستوں کو اگلے بلاک میں بیچ کرنے کے لیے کام کر رہے ہوتے ہیں۔

ایک بار جب نیٹ ورک پر تصادفی طور پر منتخب کردہ توثیق کار کے ذریعے بلاک تیار کر لیا جاتا ہے، تو اسے باقی نیٹ ورک میں پھیلا دیا جاتا ہے؛ تمام نوڈز اس بلاک کو اپنی بلاک چین کے آخر میں شامل کرتے ہیں، اور اگلا بلاک بنانے کے لیے ایک نیا توثیق کار منتخب کیا جاتا ہے۔ بلاک کو جمع کرنے کا درست عمل اور کمٹمنٹ/اتفاق رائے کا عمل فی الحال ایتھیریم کے "حصہ داری کا ثبوت (PoS)" پروٹوکول کے ذریعے متعین کیا گیا ہے۔

حصہ داری کا ثبوت (PoS) پروٹوکول

حصہ داری کا ثبوت (PoS) کا مطلب درج ذیل ہے:

  • توثیق کرنے والے نوڈز کو برے رویے کے خلاف ضمانت کے طور پر ڈپازٹ کنٹریکٹ میں 32 ETH اسٹیک کرنا پڑتا ہے۔ اس سے نیٹ ورک کی حفاظت میں مدد ملتی ہے کیونکہ ثابت شدہ بے ایمانی کی سرگرمی اس اسٹیک کے کچھ یا تمام حصے کے تباہ ہونے کا سبب بنتی ہے۔
  • ہر سلاٹ میں (بارہ سیکنڈ کے وقفے سے) ایک توثیق کار کو تصادفی طور پر بلاک تجویز کنندہ کے طور پر منتخب کیا جاتا ہے۔ وہ ٹرانزیکشنز کو ایک ساتھ بنڈل کرتے ہیں، انہیں ایگزیکیوٹ کرتے ہیں اور ایک نئی 'حالت' کا تعین کرتے ہیں۔ وہ اس معلومات کو ایک بلاک میں لپیٹتے ہیں اور اسے دوسرے توثیق کاروں تک پہنچاتے ہیں۔
  • دوسرے توثیق کار جو نئے بلاک کے بارے میں سنتے ہیں وہ ٹرانزیکشنز کو دوبارہ ایگزیکیوٹ کرتے ہیں تاکہ یہ یقینی بنایا جا سکے کہ وہ عالمی حالت میں مجوزہ تبدیلی سے متفق ہیں۔ یہ فرض کرتے ہوئے کہ بلاک درست ہے، وہ اسے اپنے ڈیٹا بیس میں شامل کر لیتے ہیں۔
  • اگر کوئی توثیق کار ایک ہی سلاٹ کے لیے دو متصادم بلاکس کے بارے میں سنتا ہے تو وہ اپنے فورک-چوائس الگورتھم کا استعمال کرتے ہوئے اس کا انتخاب کرتے ہیں جسے سب سے زیادہ اسٹیک کیے گئے ETH کی حمایت حاصل ہو۔

حصہ داری کا ثبوت (PoS) کے بارے میں مزید

بلاک میں کیا ہوتا ہے؟

ایک بلاک کے اندر بہت سی معلومات موجود ہوتی ہیں۔ اعلیٰ ترین سطح پر ایک بلاک میں درج ذیل فیلڈز شامل ہوتی ہیں:

فیلڈتفصیل
slotوہ سلاٹ جس سے بلاک تعلق رکھتا ہے
proposer_indexبلاک تجویز کرنے والے توثیق کار کی ID
parent_rootپچھلے بلاک کا ہیش
state_rootحالت آبجیکٹ کا روٹ ہیش
bodyایک آبجیکٹ جس میں کئی فیلڈز شامل ہیں، جیسا کہ ذیل میں بیان کیا گیا ہے

بلاک body میں اس کی اپنی کئی فیلڈز شامل ہیں:

فیلڈتفصیل
randao_revealاگلے بلاک تجویز کنندہ کو منتخب کرنے کے لیے استعمال ہونے والی ویلیو
eth1_dataڈپازٹ کنٹریکٹ کے بارے میں معلومات
graffitiبلاکس کو ٹیگ کرنے کے لیے استعمال ہونے والا صوابدیدی ڈیٹا
proposer_slashingsکٹوتی کیے جانے والے توثیق کاروں کی فہرست
attester_slashingsکٹوتی کیے جانے والے تصدیق کنندگان کی فہرست
attestationsپچھلے سلاٹس کے خلاف کی گئی تصدیقات کی فہرست
depositsڈپازٹ کنٹریکٹ میں نئے ڈپازٹس کی فہرست
voluntary_exitsنیٹ ورک سے انخلا کرنے والے توثیق کاروں کی فہرست
sync_aggregateلائٹ کلائنٹس کو سروس دینے کے لیے استعمال ہونے والے توثیق کاروں کا سب سیٹ
execution_payloadایگزیکیوشن کلائنٹ سے پاس کی گئی ٹرانزیکشنز

attestations فیلڈ میں بلاک میں موجود تمام تصدیقات کی فہرست ہوتی ہے۔ تصدیقات کی اپنی ڈیٹا ٹائپ ہوتی ہے جس میں ڈیٹا کے کئی حصے ہوتے ہیں۔ ہر تصدیق میں شامل ہوتا ہے:

فیلڈتفصیل
aggregation_bitsایک فہرست کہ کن توثیق کاروں نے اس تصدیق میں حصہ لیا
dataمتعدد ذیلی فیلڈز کے ساتھ ایک کنٹینر
signaturedata حصے کے خلاف توثیق کاروں کے ایک سیٹ کے مجموعی دستخط

attestation میں data فیلڈ میں درج ذیل شامل ہیں:

فیلڈتفصیل
slotوہ سلاٹ جس سے تصدیق کا تعلق ہے
indexتصدیق کرنے والے توثیق کاروں کے لیے اشاریے
beacon_block_rootبیکن بلاک کا روٹ ہیش جسے چین کے ہیڈ کے طور پر دیکھا جاتا ہے
sourceآخری جواز یافتہ چیک پوائنٹ
targetتازہ ترین دور کی باؤنڈری کا بلاک

execution_payload میں ٹرانزیکشنز کو ایگزیکیوٹ کرنے سے عالمی حالت اپ ڈیٹ ہو جاتی ہے۔ تمام کلائنٹس execution_payload میں ٹرانزیکشنز کو دوبارہ ایگزیکیوٹ کرتے ہیں تاکہ یہ یقینی بنایا جا سکے کہ نئی حالت نئے بلاک کی state_root فیلڈ سے میل کھاتی ہے۔ اس طرح کلائنٹس بتا سکتے ہیں کہ ایک نیا بلاک درست ہے اور ان کی بلاک چین میں شامل کرنے کے لیے محفوظ ہے۔ execution payload بذات خود کئی فیلڈز کے ساتھ ایک آبجیکٹ ہے۔ ایک execution_payload_header بھی ہے جس میں ایگزیکیوشن ڈیٹا کے بارے میں اہم خلاصہ معلومات ہوتی ہیں۔ یہ ڈیٹا اسٹرکچرز درج ذیل کے طور پر منظم کیے گئے ہیں:

execution_payload_header میں درج ذیل فیلڈز شامل ہیں:

فیلڈتفصیل
parent_hashپیرنٹ بلاک کا ہیش
fee_recipientٹرانزیکشن فیس ادا کرنے کے لیے اکاؤنٹ کا پتہ
state_rootاس بلاک میں تبدیلیاں لاگو کرنے کے بعد عالمی حالت کا روٹ ہیش
receipts_rootٹرانزیکشن کی رسیدوں کے ٹرائی (trie) کا ہیش
logs_bloomایونٹس لاگز پر مشتمل ڈیٹا اسٹرکچر
prev_randaoتصادفی توثیق کار کے انتخاب میں استعمال ہونے والی ویلیو
block_numberموجودہ بلاک کا نمبر
gas_limitاس بلاک میں اجازت دی گئی زیادہ سے زیادہ گیس
gas_usedاس بلاک میں استعمال ہونے والی گیس کی اصل مقدار
timestampبلاک کا وقت
extra_dataخام بائٹس کے طور پر صوابدیدی اضافی ڈیٹا
base_fee_per_gasبنیادی فیس کی ویلیو
block_hashایگزیکیوشن بلاک کا ہیش
transactions_rootپے لوڈ میں ٹرانزیکشنز کا روٹ ہیش
withdrawal_rootپے لوڈ میں انخلا کا روٹ ہیش

execution_payload میں بذات خود درج ذیل شامل ہیں (غور کریں کہ یہ ہیڈر سے بالکل مماثل ہے سوائے اس کے کہ ٹرانزیکشنز کے روٹ ہیش کے بجائے اس میں ٹرانزیکشنز کی اصل فہرست اور انخلا کی معلومات شامل ہیں):

فیلڈتفصیل
parent_hashپیرنٹ بلاک کا ہیش
fee_recipientٹرانزیکشن فیس ادا کرنے کے لیے اکاؤنٹ کا پتہ
state_rootاس بلاک میں تبدیلیاں لاگو کرنے کے بعد عالمی حالت کا روٹ ہیش
receipts_rootٹرانزیکشن کی رسیدوں کے ٹرائی (trie) کا ہیش
logs_bloomایونٹس لاگز پر مشتمل ڈیٹا اسٹرکچر
prev_randaoتصادفی توثیق کار کے انتخاب میں استعمال ہونے والی ویلیو
block_numberموجودہ بلاک کا نمبر
gas_limitاس بلاک میں اجازت دی گئی زیادہ سے زیادہ گیس
gas_usedاس بلاک میں استعمال ہونے والی گیس کی اصل مقدار
timestampبلاک کا وقت
extra_dataخام بائٹس کے طور پر صوابدیدی اضافی ڈیٹا
base_fee_per_gasبنیادی فیس کی ویلیو
block_hashایگزیکیوشن بلاک کا ہیش
transactionsایگزیکیوٹ کی جانے والی ٹرانزیکشنز کی فہرست
withdrawalsانخلا کے آبجیکٹس کی فہرست

withdrawals فہرست میں withdrawal آبجیکٹس شامل ہیں جو درج ذیل طریقے سے بنائے گئے ہیں:

فیلڈتفصیل
addressاکاؤنٹ کا پتہ جس نے انخلا کیا ہے
amountانخلا کی رقم
indexانخلا کے اشاریے کی ویلیو
validatorIndexتوثیق کار کے اشاریے کی ویلیو

بلاک کا وقت

بلاک کا وقت بلاکس کو الگ کرنے والے وقت کو کہتے ہیں۔ ایتھیریم میں، وقت کو بارہ سیکنڈ کی اکائیوں میں تقسیم کیا گیا ہے جنہیں 'سلاٹس' کہا جاتا ہے۔ ہر سلاٹ میں ایک بلاک تجویز کرنے کے لیے ایک ہی توثیق کار کا انتخاب کیا جاتا ہے۔ یہ فرض کرتے ہوئے کہ تمام توثیق کار آن لائن ہیں اور مکمل طور پر فعال ہیں، ہر سلاٹ میں ایک بلاک ہوگا، جس کا مطلب ہے کہ بلاک کا وقت 12s ہے۔ تاہم، کبھی کبھار توثیق کار آف لائن ہو سکتے ہیں جب انہیں بلاک تجویز کرنے کے لیے بلایا جاتا ہے، جس کا مطلب ہے کہ سلاٹس بعض اوقات خالی رہ سکتے ہیں۔

یہ عمل درآمد ثبوتِ کار (PoW) پر مبنی سسٹمز سے مختلف ہے جہاں بلاک کے اوقات امکانی ہوتے ہیں اور پروٹوکول کی ہدف شدہ کان کنی کی دشواری کے ذریعے ترتیب دیے جاتے ہیں۔ ایتھیریم کا اوسط بلاک کا وقت (opens in a new tab) اس کی ایک بہترین مثال ہے جس کے تحت ثبوتِ کار (PoW) سے حصہ داری کا ثبوت (PoS) میں منتقلی کا واضح طور پر نئے 12s بلاک کے وقت کی مستقل مزاجی کی بنیاد پر اندازہ لگایا جا سکتا ہے۔

بلاک کا سائز

ایک آخری اہم بات یہ ہے کہ بلاکس خود سائز میں محدود ہوتے ہیں۔ ہر بلاک کا ہدف سائز 30 million gas ہوتا ہے لیکن بلاکس کا سائز نیٹ ورک کے مطالبات کے مطابق بڑھے گا یا کم ہوگا، جو کہ 60 million gas کی بلاک کی حد تک جا سکتا ہے (ہدف بلاک کے سائز کا 2x)۔ بلاک کی گیس کی حد کو پچھلے بلاک کی گیس کی حد سے 1/1024 کے فیکٹر سے اوپر یا نیچے ایڈجسٹ کیا جا سکتا ہے۔ نتیجے کے طور پر، توثیق کار اتفاق رائے کے ذریعے بلاک کی گیس کی حد کو تبدیل کر سکتے ہیں۔ بلاک میں تمام ٹرانزیکشنز کے ذریعے خرچ کی جانے والی گیس کی کل مقدار بلاک کی گیس کی حد سے کم ہونی چاہیے۔ یہ اہم ہے کیونکہ یہ یقینی بناتا ہے کہ بلاکس من مانی طور پر بڑے نہیں ہو سکتے۔ اگر بلاکس من مانی طور پر بڑے ہو سکتے ہیں، تو کم کارکردگی والے فل نوڈز جگہ اور رفتار کی ضروریات کی وجہ سے بتدریج نیٹ ورک کے ساتھ چلنے کے قابل نہیں رہیں گے۔ بلاک جتنا بڑا ہوگا، اگلے سلاٹ کے لیے وقت پر ان پر کارروائی کرنے کے لیے اتنی ہی زیادہ کمپیوٹنگ پاور درکار ہوگی۔ یہ ایک مرکزیت پیدا کرنے والی قوت ہے، جس کی مزاحمت بلاک کے سائز کو محدود کر کے کی جاتی ہے۔

مزید مطالعہ

کسی ایسے کمیونٹی وسیلے کے بارے میں جانتے ہیں جس نے آپ کی مدد کی ہو؟ اس صفحے میں ترمیم کریں اور اسے شامل کریں!