بلاک کی تجویز
صفحہ کی آخری تازہ کاری: 23 فروری، 2026
بلاک چین کی بنیادی اکائیاں بلاکس ہیں۔ بلاکس معلومات کی مجرد اکائیاں ہیں جو نوڈس کے درمیان منتقل ہوتی ہیں، ان پر اتفاق کیا جاتا ہے اور ہر نوڈ کے ڈیٹا بیس میں شامل کی جاتی ہیں۔ یہ صفحہ وضاحت کرتا ہے کہ وہ کیسے تیار کیے جاتے ہیں۔
شرائط
بلاک کی تجویز پروف آف اسٹیک پروٹوکول کا حصہ ہے۔ اس صفحہ کو سمجھنے میں مدد کے لیے، ہم تجویز کرتے ہیں کہ آپ proof-of-stake اور block architecture کے بارے میں پڑھیں۔
بلاکس کون تیار کرتا ہے؟
ویلیڈیٹر اکاؤنٹس بلاکس کی تجویز دیتے ہیں۔ ویلیڈیٹر اکاؤنٹس کو نوڈ آپریٹرز کے ذریعے منظم کیا جاتا ہے جو اپنے ایگزیکیوشن اور کنسینسس کلائنٹس کے حصے کے طور پر ویلیڈیٹر سافٹ ویئر چلاتے ہیں اور انہوں نے ڈیپازٹ کنٹریکٹ میں کم از کم 32 ETH جمع کرائے ہیں۔ تاہم، ہر ویلیڈیٹر صرف کبھی کبھار ہی ایک بلاک کی تجویز دینے کا ذمہ دار ہوتا ہے۔ Ethereum وقت کی پیمائش سلاٹس اور ایپوکس میں کرتا ہے۔ ہر سلاٹ بارہ سیکنڈ کا ہوتا ہے، اور 32 سلاٹس (6.4 منٹ) مل کر ایک ایپوک بناتے ہیں۔ ہر سلاٹ Ethereum پر ایک نیا بلاک شامل کرنے کا ایک موقع ہوتا ہے۔
بے ترتیب انتخاب
ہر سلاٹ میں ایک بلاک کی تجویز دینے کے لیے ایک واحد ویلیڈیٹر کو نیم بے ترتیب طور پر منتخب کیا جاتا ہے۔ بلاک چین میں حقیقی بے ترتیبی جیسی کوئی چیز نہیں ہے کیونکہ اگر ہر نوڈ حقیقی طور پر بے ترتیب نمبر تیار کرتا، تو وہ اتفاق رائے پر نہیں پہنچ سکتے۔ اس کے بجائے، مقصد ویلیڈیٹر کے انتخاب کے عمل کو غیر متوقع بنانا ہے۔ Ethereum پر بے ترتیبی RANDAO نامی ایک الگورتھم کا استعمال کرتے ہوئے حاصل کی جاتی ہے جو بلاک پروپوزر سے ایک ہیش کو ایک سیڈ کے ساتھ ملاتا ہے جو ہر بلاک پر اپ ڈیٹ ہوتا ہے۔ یہ قدر کل ویلیڈیٹر سیٹ سے ایک مخصوص ویلیڈیٹر کو منتخب کرنے کے لیے استعمال کی جاتی ہے۔ بعض قسم کی سیڈ کی ہیرا پھیری سے بچانے کے ایک طریقے کے طور پر ویلیڈیٹر کا انتخاب دو ایپوکس پہلے سے طے کیا جاتا ہے۔
اگرچہ ویلیڈیٹرز ہر سلاٹ میں RANDAO میں اضافہ کرتے ہیں، لیکن عالمی RANDAO ویلیو ہر ایپوک میں صرف ایک بار اپ ڈیٹ ہوتی ہے۔ اگلے بلاک پروپوزر کے انڈیکس کا حساب لگانے کے لیے، RANDAO ویلیو کو سلاٹ نمبر کے ساتھ ملایا جاتا ہے تاکہ ہر سلاٹ میں ایک منفرد ویلیو حاصل ہو۔ کسی انفرادی ویلیڈیٹر کے منتخب ہونے کا امکان صرف 1/N نہیں ہے (جہاں N = کل فعال ویلیڈیٹرز)۔ اس کے بجائے، اسے ہر ویلیڈیٹر کے مؤثر ETH بیلنس کے حساب سے وزن دیا جاتا ہے۔ زیادہ سے زیادہ مؤثر بیلنس 32 ETH ہے (اس کا مطلب ہے کہ balance < 32 ETH کا وزن balance == 32 ETH سے کم ہوتا ہے، لیکن balance > 32 ETH کا وزن balance == 32 ETH سے زیادہ نہیں ہوتا)۔
ہر سلاٹ میں صرف ایک بلاک پروپوزر منتخب کیا جاتا ہے۔ عام حالات میں، ایک واحد بلاک پروڈیوسر اپنے مخصوص سلاٹ میں ایک ہی بلاک بناتا اور جاری کرتا ہے۔ ایک ہی سلاٹ کے لیے دو بلاکس بنانا ایک سلیش ایبل جرم ہے، جسے اکثر "equivocation" کہا جاتا ہے۔
بلاک کیسے بنایا جاتا ہے؟
بلاک پروپوزر سے توقع کی جاتی ہے کہ وہ اپنے مقامی طور پر چلنے والے فورک چوائس الگورتھم کے مطابق چین کے سب سے حالیہ ہیڈ پر بننے والے ایک دستخط شدہ بیکن بلاک کو براڈکاسٹ کرے۔ فورک چوائس الگورتھم پچھلے سلاٹ سے بچی ہوئی کسی بھی قطار میں لگی تصدیقوں کو لاگو کرتا ہے، پھر اپنی تاریخ میں تصدیقوں کے سب سے زیادہ جمع شدہ وزن والے بلاک کو تلاش کرتا ہے۔ وہ بلاک پروپوزر کے ذریعہ بنائے گئے نئے بلاک کا پیرنٹ ہوتا ہے۔
بلاک پروپوزر اپنے مقامی ڈیٹا بیس اور چین کے ویو سے ڈیٹا اکٹھا کرکے ایک بلاک بناتا ہے۔ بلاک کے مندرجات نیچے دیے گئے سنیپٹ میں دکھائے گئے ہیں:
1class BeaconBlockBody(Container):2 randao_reveal: BLSSignature3 eth1_data: Eth1Data4 graffiti: Bytes325 proposer_slashings: List[ProposerSlashing, MAX_PROPOSER_SLASHINGS]6 attester_slashings: List[AttesterSlashing, MAX_ATTESTER_SLASHINGS]7 attestations: List[Attestation, MAX_ATTESTATIONS]8 deposits: List[Deposit, MAX_DEPOSITS]9 voluntary_exits: List[SignedVoluntaryExit, MAX_VOLUNTARY_EXITS]10 sync_aggregate: SyncAggregate11 execution_payload: ExecutionPayloadسب دکھائیںrandao_reveal فیلڈ ایک قابل تصدیق بے ترتیب ویلیو لیتا ہے جسے بلاک پروپوزر موجودہ ایپوک نمبر پر دستخط کرکے بناتا ہے۔ eth1_data ڈیپازٹ کنٹریکٹ کے بارے میں بلاک پروپوزر کے ویو کے لیے ایک ووٹ ہے، جس میں ڈیپازٹ مرکل ٹرائی کی روٹ اور ڈیپازٹس کی کل تعداد شامل ہے جو نئے ڈیپازٹس کی تصدیق کو ممکن بناتی ہے۔ graffiti ایک اختیاری فیلڈ ہے جسے بلاک میں پیغام شامل کرنے کے لیے استعمال کیا جا سکتا ہے۔ proposer_slashings اور attester_slashings وہ فیلڈز ہیں جن میں اس بات کا ثبوت ہوتا ہے کہ پروپوزر کے چین کے ویو کے مطابق کچھ ویلیڈیٹرز نے سلیش ایبل جرائم کیے ہیں۔ deposits نئے ویلیڈیٹر ڈیپازٹس کی ایک فہرست ہے جن سے بلاک پروپوزر واقف ہے، اور voluntary_exits ان ویلیڈیٹرز کی ایک فہرست ہے جو باہر نکلنا چاہتے ہیں جن کے بارے میں بلاک پروپوزر نے کنسینسس لیئر گاسپ نیٹ ورک پر سنا ہے۔ sync_aggregate ایک ویکٹر ہے جو یہ دکھاتا ہے کہ کن ویلیڈیٹرز کو پہلے ایک سنک کمیٹی (ویلیڈیٹرز کا ایک سب سیٹ جو لائٹ کلائنٹ ڈیٹا پیش کرتا ہے) کو تفویض کیا گیا تھا اور انہوں نے ڈیٹا پر دستخط کرنے میں حصہ لیا تھا۔
execution_payload ایگزیکیوشن اور کنسینسس کلائنٹس کے درمیان ٹرانزیکشنز کے بارے میں معلومات کو منتقل کرنے کے قابل بناتا ہے۔ execution_payload ایگزیکیوشن ڈیٹا کا ایک بلاک ہے جو ایک بیکن بلاک کے اندر نیسٹ کیا جاتا ہے۔ execution_payload کے اندر موجود فیلڈز Ethereum یلو پیپر میں بیان کردہ بلاک کی ساخت کی عکاسی کرتے ہیں، سوائے اس کے کہ کوئی اومرز نہیں ہیں اور difficulty کی جگہ prev_randao موجود ہے۔ ایگزیکیوشن کلائنٹ کو ٹرانزیکشنز کے ایک مقامی پول تک رسائی حاصل ہے جس کے بارے میں اس نے اپنے گاسپ نیٹ ورک پر سنا ہے۔ یہ ٹرانزیکشنز مقامی طور پر ایگزیکیوٹ کی جاتی ہیں تاکہ ایک اپ ڈیٹ شدہ اسٹیٹ ٹرائی تیار ہو سکے جسے پوسٹ اسٹیٹ کہا جاتا ہے۔ ٹرانزیکشنز کو execution_payload میں transactions نامی فہرست کے طور پر شامل کیا جاتا ہے اور پوسٹ اسٹیٹ state-root فیلڈ میں فراہم کیا جاتا ہے۔
یہ تمام ڈیٹا ایک بیکن بلاک میں جمع کیا جاتا ہے، اس پر دستخط کیے جاتے ہیں، اور بلاک پروپوزر کے پیئرز کو براڈکاسٹ کیا جاتا ہے، جو اسے اپنے پیئرز تک پھیلاتے ہیں، وغیرہ۔
blocks کی اناٹومی کے بارے میں مزید پڑھیں۔
بلاک کا کیا ہوتا ہے؟
بلاک کو بلاک پروپوزر کے مقامی ڈیٹا بیس میں شامل کیا جاتا ہے اور کنسینسس لیئر گاسپ نیٹ ورک پر پیئرز کو براڈکاسٹ کیا جاتا ہے۔ جب ایک ویلیڈیٹر کو بلاک موصول ہوتا ہے، تو وہ اس کے اندر موجود ڈیٹا کی تصدیق کرتا ہے، جس میں یہ جانچنا شامل ہے کہ بلاک کا پیرنٹ درست ہے، یہ درست سلاٹ سے مطابقت رکھتا ہے، پروپوزر انڈیکس متوقع ہے، RANDAO ریویل درست ہے اور یہ کہ پروپوزر کو سلیش نہیں کیا گیا ہے۔ execution_payload کو ان بنڈل کیا جاتا ہے، اور ویلیڈیٹر کا ایگزیکیوشن کلائنٹ مجوزہ اسٹیٹ کی تبدیلی کی جانچ کرنے کے لیے فہرست میں موجود ٹرانزیکشنز کو دوبارہ ایگزیکیوٹ کرتا ہے۔ یہ فرض کرتے ہوئے کہ بلاک ان تمام جانچوں سے گزر جاتا ہے، ہر ویلیڈیڈیٹر بلاک کو اپنی کینونیکل چین میں شامل کر لیتا ہے۔ پھر یہ عمل اگلے سلاٹ میں دوبارہ شروع ہوتا ہے۔
بلاک کے انعامات
بلاک پروپوزر کو اپنے کام کے لیے ادائیگی ملتی ہے۔ ایک base_reward ہوتا ہے جس کا حساب فعال ویلیڈیٹرز کی تعداد اور ان کے مؤثر بیلنس کے فنکشن کے طور پر کیا جاتا ہے۔ پھر بلاک پروپوزر کو بلاک میں شامل ہر درست تصدیق کے لیے base_reward کا ایک حصہ ملتا ہے؛ جتنے زیادہ ویلیڈیٹرز بلاک کی تصدیق کرتے ہیں، بلاک پروپوزر کا انعام اتنا ہی زیادہ ہوتا ہے۔ ان ویلیڈیٹرز کی رپورٹ کرنے پر بھی ایک انعام ہے جنہیں سلیش کیا جانا چاہیے، جو ہر سلیش کیے گئے ویلیڈیٹر کے لیے 1/512 * مؤثر بیلنس کے برابر ہے۔
انعامات اور جرمانوں کے بارے میں مزید