بلاک
بلاکس ٹرانزیکشنز کے بیچز ہوتے ہیں جن میں چین کے پچھلے بلاک کا ہیش شامل ہوتا ہے۔ یہ بلاکس کو ایک ساتھ (ایک چین میں) جوڑتا ہے کیونکہ ہیشز کو بلاک کے ڈیٹا سے کرپٹوگرافک طریقے سے اخذ کیا جاتا ہے۔ یہ دھوکہ دہی کو روکتا ہے، کیونکہ تاریخ میں کسی بھی بلاک میں ایک تبدیلی آنے والے تمام بلاکس کو باطل کر دے گی کیونکہ اس کے بعد کے تمام ہیشز بدل جائیں گے اور بلاک چین چلانے والے ہر شخص کو اس کا علم ہو جائے گا۔
پیشگی شرائط
بلاکس ایک بہت ہی ابتدائی سطح کا موضوع ہے۔ لیکن اس صفحے کو بہتر طور پر سمجھنے میں آپ کی مدد کے لیے، ہم تجویز کرتے ہیں کہ آپ پہلے اکاؤنٹس، ٹرانزیکشنز، اور ہمارا ایتھیریم کا تعارف پڑھیں۔
بلاکس کیوں؟
اس بات کو یقینی بنانے کے لیے کہ ایتھیریم نیٹ ورک پر تمام شرکاء ایک ہم آہنگ حالت کو برقرار رکھیں اور ٹرانزیکشنز کی درست تاریخ پر اتفاق رائے کریں، ہم ٹرانزیکشنز کو بلاکس میں بیچ کرتے ہیں۔ اس کا مطلب ہے کہ درجنوں (یا سینکڑوں) ٹرانزیکشنز ایک ہی وقت میں کمٹ، متفق، اور ہم آہنگ کی جاتی ہیں۔
خاکہ 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 | متعدد ذیلی فیلڈز کے ساتھ ایک کنٹینر |
signature | data حصے کے خلاف توثیق کاروں کے ایک سیٹ کے مجموعی دستخط |
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 کے فیکٹر سے اوپر یا نیچے ایڈجسٹ کیا جا سکتا ہے۔ نتیجے کے طور پر، توثیق کار اتفاق رائے کے ذریعے بلاک کی گیس کی حد کو تبدیل کر سکتے ہیں۔ بلاک میں تمام ٹرانزیکشنز کے ذریعے خرچ کی جانے والی گیس کی کل مقدار بلاک کی گیس کی حد سے کم ہونی چاہیے۔ یہ اہم ہے کیونکہ یہ یقینی بناتا ہے کہ بلاکس من مانی طور پر بڑے نہیں ہو سکتے۔ اگر بلاکس من مانی طور پر بڑے ہو سکتے ہیں، تو کم کارکردگی والے فل نوڈز جگہ اور رفتار کی ضروریات کی وجہ سے بتدریج نیٹ ورک کے ساتھ چلنے کے قابل نہیں رہیں گے۔ بلاک جتنا بڑا ہوگا، اگلے سلاٹ کے لیے وقت پر ان پر کارروائی کرنے کے لیے اتنی ہی زیادہ کمپیوٹنگ پاور درکار ہوگی۔ یہ ایک مرکزیت پیدا کرنے والی قوت ہے، جس کی مزاحمت بلاک کے سائز کو محدود کر کے کی جاتی ہے۔
مزید مطالعہ
کسی ایسے کمیونٹی وسیلے کے بارے میں جانتے ہیں جس نے آپ کی مدد کی ہو؟ اس صفحے میں ترمیم کریں اور اسے شامل کریں!