بلاک کی تجویز
بلاکس بلاک چین کی بنیادی اکائیاں ہیں۔ بلاکس معلومات کی مجرد اکائیاں ہیں جو نوڈز کے درمیان منتقل ہوتی ہیں، ان پر اتفاق رائے کیا جاتا ہے اور ہر نوڈ کے ڈیٹا بیس میں شامل کیا جاتا ہے۔ یہ صفحہ بتاتا ہے کہ انہیں کیسے تیار کیا جاتا ہے۔
پیشگی شرائط
بلاک کی تجویز حصہ داری کا ثبوت (PoS) پروٹوکول کا حصہ ہے۔ اس صفحے کو سمجھنے میں مدد کے لیے، ہم تجویز کرتے ہیں کہ آپ حصہ داری کا ثبوت (PoS) اور بلاک کے فن تعمیر کے بارے میں پڑھیں۔
بلاکس کون تیار کرتا ہے؟
توثیق کار اکاؤنٹس بلاکس تجویز کرتے ہیں۔ توثیق کار اکاؤنٹس کا انتظام نوڈ آپریٹرز کرتے ہیں جو اپنے ایگزیکیوشن کلائنٹ اور اتفاق رائے کے کلائنٹس کے حصے کے طور پر توثیق کار سافٹ ویئر چلاتے ہیں اور انہوں نے ڈپازٹ کنٹریکٹ میں کم از کم 32 ETH جمع کرائے ہیں۔ تاہم، ہر توثیق کار صرف کبھی کبھار ہی بلاک تجویز کرنے کا ذمہ دار ہوتا ہے۔ ایتھیریم وقت کو سلاٹس اور ادوار میں ماپتا ہے۔ ہر سلاٹ بارہ سیکنڈ کا ہوتا ہے، اور 32 سلاٹس (6.4 منٹ) مل کر ایک دور بناتے ہیں۔ ہر سلاٹ ایتھیریم پر ایک نیا بلاک شامل کرنے کا موقع ہوتا ہے۔
بے ترتیب انتخاب
ہر سلاٹ میں ایک بلاک تجویز کرنے کے لیے ایک واحد توثیق کار کو ظاہری طور پر بے ترتیب (pseudo-randomly) چنا جاتا ہے۔ بلاک چین میں حقیقی بے ترتیبی جیسی کوئی چیز نہیں ہوتی کیونکہ اگر ہر نوڈ واقعی بے ترتیب نمبر تیار کرے، تو وہ اتفاق رائے پر نہیں پہنچ سکتے۔ اس کے بجائے، مقصد توثیق کار کے انتخاب کے عمل کو غیر متوقع بنانا ہے۔ ایتھیریم پر بے ترتیبی ایک الگورتھم کا استعمال کرتے ہوئے حاصل کی جاتی ہے جسے RANDAO کہا جاتا ہے جو بلاک تجویز کنندہ کے ہیش کو ایک سیڈ (seed) کے ساتھ ملاتا ہے جو ہر بلاک پر اپ ڈیٹ ہوتا ہے۔ یہ قدر کل توثیق کاروں کے مجموعے میں سے ایک مخصوص توثیق کار کو منتخب کرنے کے لیے استعمال ہوتی ہے۔ توثیق کار کا انتخاب دو ادوار پہلے ہی طے کر لیا جاتا ہے تاکہ سیڈ کی مخصوص قسم کی ہیرا پھیری سے بچا جا سکے۔
اگرچہ توثیق کار ہر سلاٹ میں RANDAO میں اضافہ کرتے ہیں، لیکن عالمی RANDAO کی قدر فی دور صرف ایک بار اپ ڈیٹ ہوتی ہے۔ اگلے بلاک تجویز کنندہ کے اشاریہ کا حساب لگانے کے لیے، RANDAO کی قدر کو سلاٹ نمبر کے ساتھ ملایا جاتا ہے تاکہ ہر سلاٹ میں ایک منفرد قدر حاصل کی جا سکے۔ کسی انفرادی توثیق کار کے منتخب ہونے کا امکان محض 1/N نہیں ہے (جہاں N = کل فعال توثیق کار)۔ اس کے بجائے، اس کا وزن ہر توثیق کار کے موثر ETH بیلنس کے حساب سے کیا جاتا ہے۔ زیادہ سے زیادہ موثر بیلنس 32 ETH ہے (اس کا مطلب ہے کہ balance < 32 ETH کا وزن balance == 32 ETH سے کم ہوتا ہے، لیکن balance > 32 ETH کا وزن balance == 32 ETH سے زیادہ نہیں ہوتا)۔
ہر سلاٹ میں صرف ایک بلاک تجویز کنندہ منتخب کیا جاتا ہے۔ عام حالات میں، ایک واحد بلاک تیار کنندہ اپنے مختص کردہ سلاٹ میں ایک ہی بلاک بناتا اور جاری کرتا ہے۔ ایک ہی سلاٹ کے لیے دو بلاکس بنانا ایک کٹوتی کے قابل جرم ہے، جسے اکثر "دوغلا پن" کہا جاتا ہے۔
بلاک کیسے بنایا جاتا ہے؟
بلاک تجویز کنندہ سے توقع کی جاتی ہے کہ وہ ایک دستخط شدہ بیکن بلاک نشر کرے گا جو ان کے اپنے مقامی طور پر چلنے والے فورک کے انتخاب کا الگورتھم کے نقطہ نظر کے مطابق چین کے تازہ ترین سرے پر بنایا گیا ہو۔ فورک کے انتخاب کا الگورتھم پچھلے سلاٹ سے بچی ہوئی قطار میں لگی کسی بھی تصدیق کو لاگو کرتا ہے، پھر اپنی تاریخ میں تصدیقات کے سب سے زیادہ جمع شدہ وزن والے بلاک کو تلاش کرتا ہے۔ وہ بلاک تجویز کنندہ کے ذریعے بنائے گئے نئے بلاک کا پیرنٹ ہوتا ہے۔
بلاک تجویز کنندہ اپنے مقامی ڈیٹا بیس اور چین کے نقطہ نظر سے ڈیٹا اکٹھا کر کے ایک بلاک بناتا ہے۔ بلاک کے مندرجات ذیل کے اسنیپٹ میں دکھائے گئے ہیں:
class BeaconBlockBody(Container):
randao_reveal: BLSSignature
eth1_data: Eth1Data
graffiti: Bytes32
proposer_slashings: List[ProposerSlashing, MAX_PROPOSER_SLASHINGS]
attester_slashings: List[AttesterSlashing, MAX_ATTESTER_SLASHINGS]
attestations: List[Attestation, MAX_ATTESTATIONS]
deposits: List[Deposit, MAX_DEPOSITS]
voluntary_exits: List[SignedVoluntaryExit, MAX_VOLUNTARY_EXITS]
sync_aggregate: SyncAggregate
execution_payload: ExecutionPayload
randao_reveal فیلڈ ایک قابل تصدیق بے ترتیب قدر لیتی ہے جسے بلاک تجویز کنندہ موجودہ دور کے نمبر پر دستخط کر کے بناتا ہے۔ eth1_data ڈپازٹ کنٹریکٹ کے بارے میں بلاک تجویز کنندہ کے نقطہ نظر کے لیے ایک ووٹ ہے، جس میں ڈپازٹ مرکل ٹرائی کی روٹ اور ڈپازٹس کی کل تعداد شامل ہے جو نئے ڈپازٹس کی تصدیق کو ممکن بناتی ہے۔ graffiti ایک اختیاری فیلڈ ہے جسے بلاک میں کوئی پیغام شامل کرنے کے لیے استعمال کیا جا سکتا ہے۔ proposer_slashings اور attester_slashings وہ فیلڈز ہیں جن میں اس بات کا ثبوت ہوتا ہے کہ چین کے بارے میں تجویز کنندہ کے نقطہ نظر کے مطابق کچھ توثیق کاروں نے کٹوتی کے قابل جرائم کا ارتکاب کیا ہے۔ deposits نئے توثیق کاروں کے ڈپازٹس کی ایک فہرست ہے جن سے بلاک تجویز کنندہ واقف ہے، اور voluntary_exits ان توثیق کاروں کی فہرست ہے جو خروج کرنا چاہتے ہیں جن کے بارے میں بلاک تجویز کنندہ نے اتفاق رائے کی تہہ کے گپ شپ نیٹ ورک پر سنا ہے۔ sync_aggregate ایک ویکٹر ہے جو یہ ظاہر کرتا ہے کہ کن توثیق کاروں کو پہلے ہم آہنگی کمیٹی (توثیق کاروں کا ایک ذیلی سیٹ جو لائٹ کلائنٹ کا ڈیٹا فراہم کرتا ہے) میں تفویض کیا گیا تھا اور انہوں نے ڈیٹا پر دستخط کرنے میں حصہ لیا تھا۔
execution_payload ایگزیکیوشن کلائنٹ اور اتفاق رائے کے کلائنٹس کے درمیان لین دین کے بارے میں معلومات کو منتقل کرنے کے قابل بناتا ہے۔ execution_payload ایگزیکیوشن ڈیٹا کا ایک بلاک ہے جو بیکن بلاک کے اندر نیسٹ کیا جاتا ہے۔ execution_payload کے اندر موجود فیلڈز ایتھیریم یلو پیپر میں بیان کردہ بلاک کی ساخت کی عکاسی کرتی ہیں، سوائے اس کے کہ اس میں کوئی ommers نہیں ہیں اور difficulty کی جگہ prev_randao موجود ہے۔ ایگزیکیوشن کلائنٹ کو لین دین کے ایک مقامی پول تک رسائی حاصل ہوتی ہے جس کے بارے میں اس نے اپنے گپ شپ نیٹ ورک پر سنا ہوتا ہے۔ ان لین دین کو مقامی طور پر انجام دیا جاتا ہے تاکہ ایک اپ ڈیٹ شدہ حالت کی ٹرائی تیار کی جا سکے جسے پوسٹ اسٹیٹ کہا جاتا ہے۔ لین دین کو execution_payload میں transactions نامی فہرست کے طور پر شامل کیا جاتا ہے اور پوسٹ اسٹیٹ کو state-root فیلڈ میں فراہم کیا جاتا ہے۔
یہ تمام ڈیٹا ایک بیکن بلاک میں اکٹھا کیا جاتا ہے، اس پر دستخط کیے جاتے ہیں، اور بلاک تجویز کنندہ کے ساتھیوں کو نشر کیا جاتا ہے، جو اسے اپنے ساتھیوں تک پھیلاتے ہیں، وغیرہ۔
بلاکس کی ساخت کے بارے میں مزید پڑھیں۔
بلاک کا کیا ہوتا ہے؟
بلاک کو بلاک تجویز کنندہ کے مقامی ڈیٹا بیس میں شامل کیا جاتا ہے اور اتفاق رائے کی تہہ کے گپ شپ نیٹ ورک پر ساتھیوں کو نشر کیا جاتا ہے۔ جب کوئی توثیق کار بلاک وصول کرتا ہے، تو وہ اس کے اندر موجود ڈیٹا کی تصدیق کرتا ہے، جس میں یہ جانچنا شامل ہے کہ بلاک کا درست پیرنٹ ہے، درست سلاٹ سے مطابقت رکھتا ہے، تجویز کنندہ کا اشاریہ متوقع ہے، RANDAO کا انکشاف درست ہے اور تجویز کنندہ کی کٹوتی نہیں کی گئی ہے۔ execution_payload کو ان بنڈل کیا جاتا ہے، اور توثیق کار کا ایگزیکیوشن کلائنٹ مجوزہ حالت کی تبدیلی کو جانچنے کے لیے فہرست میں موجود لین دین کو دوبارہ انجام دیتا ہے۔ یہ فرض کرتے ہوئے کہ بلاک ان تمام جانچوں کو پاس کر لیتا ہے، ہر توثیق کار بلاک کو اپنی کینونیکل چین میں شامل کر لیتا ہے۔ پھر یہ عمل اگلے سلاٹ میں دوبارہ شروع ہوتا ہے۔
بلاک کے انعامات
بلاک تجویز کنندہ کو ان کے کام کی ادائیگی موصول ہوتی ہے۔ ایک base_reward ہوتا ہے جس کا حساب فعال توثیق کاروں کی تعداد اور ان کے موثر بیلنس کے فنکشن کے طور پر کیا جاتا ہے۔ پھر بلاک تجویز کنندہ کو بلاک میں شامل ہر درست تصدیق کے لیے base_reward کا ایک حصہ ملتا ہے؛ جتنے زیادہ توثیق کار بلاک کی تصدیق کرتے ہیں، بلاک تجویز کنندہ کا انعام اتنا ہی زیادہ ہوتا ہے۔ ان توثیق کاروں کی اطلاع دینے پر بھی ایک انعام ہے جن کی کٹوتی کی جانی چاہیے، جو ہر کٹوتی شدہ توثیق کار کے لیے 1/512 * effective balance کے برابر ہوتا ہے۔
انعامات اور جرمانوں کے بارے میں مزید