بلاک کی تجویز
صفحہ کی آخری اپ ڈیٹ: 23 فروری، 2026
بلاکس بلاک چین کی بنیادی اکائیاں ہیں۔ بلاکس معلومات کی مجرد اکائیاں ہیں جو نوڈز کے درمیان منتقل ہوتی ہیں، ان پر اتفاق کیا جاتا ہے اور ہر نوڈ کے ڈیٹا بیس میں شامل کیا جاتا ہے۔ یہ صفحہ بتاتا ہے کہ وہ کیسے تیار کیے جاتے ہیں۔
شرائط
بلاک کی تجویز پروف-آف-سٹیک پروٹوکول کا حصہ ہے۔ اس صفحے کو سمجھنے میں مدد کے لیے، ہم تجویز کرتے ہیں کہ آپ پروف-آف-سٹیک اور بلاک آرکیٹیکچر کے بارے میں پڑھیں۔
بلاکس کون بناتا ہے؟
ویلیڈیٹر اکاؤنٹس بلاکس تجویز کرتے ہیں۔ ویلیڈیٹر اکاؤنٹس کا انتظام نوڈ آپریٹرز کرتے ہیں جو اپنے ایگزیکیوشن اور کنسینسس کلائنٹس کے حصے کے طور پر ویلیڈیٹر سافٹ ویئر چلاتے ہیں اور ڈپازٹ کنٹریکٹ میں کم از کم 32 ETH جمع کراتے ہیں۔ تاہم، ہر ویلیڈیٹر صرف کبھی کبھار بلاک تجویز کرنے کا ذمہ دار ہوتا ہے۔ ایتھیریم وقت کو سلاٹس اور ایپوکس (epochs) میں ماپتا ہے۔ ہر سلاٹ بارہ سیکنڈ کا ہوتا ہے، اور 32 سلاٹس (6.4 منٹ) مل کر ایک ایپوک بناتے ہیں۔ ہر سلاٹ ایتھیریم پر ایک نیا بلاک شامل کرنے کا موقع ہوتا ہے۔
رینڈم انتخاب
ہر سلاٹ میں بلاک تجویز کرنے کے لیے ایک ویلیڈیٹر کو سیوڈو-رینڈم (pseudo-randomly) طریقے سے منتخب کیا جاتا ہے۔ بلاک چین میں حقیقی رینڈمنس (randomness) جیسی کوئی چیز نہیں ہوتی کیونکہ اگر ہر نوڈ حقیقی طور پر رینڈم نمبرز تیار کرے، تو وہ کنسینسس (اتفاق رائے) پر نہیں پہنچ سکتے۔ اس کے بجائے، مقصد ویلیڈیٹر کے انتخاب کے عمل کو غیر متوقع بنانا ہے۔ ایتھیریم پر رینڈمنس RANDAO نامی الگورتھم کا استعمال کرتے ہوئے حاصل کی جاتی ہے جو بلاک تجویز کنندہ کے ہیش کو ایک سیڈ (seed) کے ساتھ ملاتا ہے جو ہر بلاک پر اپ ڈیٹ ہوتا ہے۔ یہ ویلیو کل ویلیڈیٹر سیٹ میں سے ایک مخصوص ویلیڈیٹر کو منتخب کرنے کے لیے استعمال ہوتی ہے۔ ویلیڈیٹر کا انتخاب دو ایپوکس پہلے طے کیا جاتا ہے تاکہ بعض قسم کی سیڈ ہیرا پھیری سے بچا جا سکے۔
اگرچہ ویلیڈیٹرز ہر سلاٹ میں RANDAO میں اضافہ کرتے ہیں، لیکن عالمی RANDAO ویلیو فی ایپوک صرف ایک بار اپ ڈیٹ ہوتی ہے۔ اگلے بلاک تجویز کنندہ کے انڈیکس کا حساب لگانے کے لیے، RANDAO ویلیو کو سلاٹ نمبر کے ساتھ ملایا جاتا ہے تاکہ ہر سلاٹ میں ایک منفرد ویلیو مل سکے۔ کسی انفرادی ویلیڈیٹر کے منتخب ہونے کا امکان محض 1/N نہیں ہے (جہاں N = کل فعال ویلیڈیٹرز)۔ اس کے بجائے، اس کا وزن ہر ویلیڈیٹر کے موثر ETH بیلنس کے حساب سے کیا جاتا ہے۔ زیادہ سے زیادہ موثر بیلنس 32 ETH ہے (اس کا مطلب ہے کہ balance < 32 ETH کا وزن balance == 32 ETH سے کم ہوتا ہے، لیکن balance > 32 ETH کا وزن balance == 32 ETH سے زیادہ نہیں ہوتا)۔
ہر سلاٹ میں صرف ایک بلاک تجویز کنندہ منتخب کیا جاتا ہے۔ عام حالات میں، ایک بلاک پروڈیوسر اپنے مخصوص سلاٹ میں ایک ہی بلاک بناتا اور جاری کرتا ہے۔ ایک ہی سلاٹ کے لیے دو بلاکس بنانا ایک سلیش ایبل (slashable) جرم ہے، جسے اکثر "equivocation" کہا جاتا ہے۔
بلاک کیسے بنایا جاتا ہے؟
بلاک تجویز کنندہ سے توقع کی جاتی ہے کہ وہ ایک دستخط شدہ بیکن بلاک نشر کرے گا جو ان کے اپنے مقامی طور پر چلنے والے فورک چوائس الگورتھم کے نقطہ نظر کے مطابق چین کے تازہ ترین ہیڈ (head) پر بنایا گیا ہو۔ فورک چوائس الگورتھم پچھلے سلاٹ سے بچی ہوئی کسی بھی قطار میں لگی اٹیسٹیشنز (attestations) کو لاگو کرتا ہے، پھر اپنی تاریخ میں اٹیسٹیشنز کے سب سے زیادہ جمع شدہ وزن والے بلاک کو تلاش کرتا ہے۔ وہ بلاک تجویز کنندہ کے ذریعہ بنائے گئے نئے بلاک کا پیرنٹ (parent) ہوتا ہے۔
بلاک تجویز کنندہ اپنے مقامی ڈیٹا بیس اور چین کے نقطہ نظر سے ڈیٹا اکٹھا کر کے ایک بلاک بناتا ہے۔ بلاک کے مندرجات ذیل کے اسنپٹ میں دکھائے گئے ہیں:
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 ڈپازٹ کنٹریکٹ کے بارے میں بلاک تجویز کنندہ کے نقطہ نظر کے لیے ایک ووٹ ہے، جس میں ڈپازٹ مرکل ٹرائی (Merkle trie) کی روٹ اور ڈپازٹس کی کل تعداد شامل ہے جو نئے ڈپازٹس کی تصدیق کے قابل بناتی ہے۔ graffiti ایک اختیاری فیلڈ ہے جسے بلاک میں پیغام شامل کرنے کے لیے استعمال کیا جا سکتا ہے۔ proposer_slashings اور attester_slashings وہ فیلڈز ہیں جن میں اس بات کا ثبوت ہوتا ہے کہ بعض ویلیڈیٹرز نے چین کے بارے میں تجویز کنندہ کے نقطہ نظر کے مطابق سلیش ایبل جرائم کا ارتکاب کیا ہے۔ deposits نئے ویلیڈیٹر ڈپازٹس کی ایک فہرست ہے جس سے بلاک تجویز کنندہ واقف ہے، اور voluntary_exits ان ویلیڈیٹرز کی فہرست ہے جو باہر نکلنا چاہتے ہیں جن کے بارے میں بلاک تجویز کنندہ نے کنسینسس لیئر گپ شپ نیٹ ورک پر سنا ہے۔ sync_aggregate ایک ویکٹر ہے جو دکھاتا ہے کہ کن ویلیڈیٹرز کو پہلے سنک کمیٹی (ویلیڈیٹرز کا ایک ذیلی سیٹ جو لائٹ کلائنٹ ڈیٹا پیش کرتا ہے) میں تفویض کیا گیا تھا اور انہوں نے ڈیٹا پر دستخط کرنے میں حصہ لیا تھا۔
execution_payload ٹرانزیکشنز کے بارے میں معلومات کو ایگزیکیوشن اور کنسینسس کلائنٹس کے درمیان منتقل کرنے کے قابل بناتا ہے۔ execution_payload ایگزیکیوشن ڈیٹا کا ایک بلاک ہے جو بیکن بلاک کے اندر نیسٹ (nest) ہوتا ہے۔ execution_payload کے اندر موجود فیلڈز ایتھیریم یلو پیپر میں بیان کردہ بلاک کے ڈھانچے کی عکاسی کرتی ہیں، سوائے اس کے کہ اس میں کوئی اومرز (ommers) نہیں ہیں اور difficulty کی جگہ prev_randao موجود ہے۔ ایگزیکیوشن کلائنٹ کو ٹرانزیکشنز کے ایک مقامی پول تک رسائی حاصل ہوتی ہے جس کے بارے میں اس نے اپنے گپ شپ نیٹ ورک پر سنا ہے۔ ان ٹرانزیکشنز کو مقامی طور پر ایگزیکیوٹ کیا جاتا ہے تاکہ ایک اپ ڈیٹ شدہ سٹیٹ ٹرائی (state trie) تیار کی جا سکے جسے پوسٹ-سٹیٹ (post-state) کہا جاتا ہے۔ ٹرانزیکشنز کو execution_payload میں transactions نامی فہرست کے طور پر شامل کیا جاتا ہے اور پوسٹ-سٹیٹ کو state-root فیلڈ میں فراہم کیا جاتا ہے۔
یہ تمام ڈیٹا ایک بیکن بلاک میں اکٹھا کیا جاتا ہے، اس پر دستخط کیے جاتے ہیں، اور بلاک تجویز کنندہ کے ساتھیوں (peers) کو نشر کیا جاتا ہے، جو اسے اپنے ساتھیوں تک پھیلاتے ہیں، وغیرہ۔
بلاکس کی اناٹومی کے بارے میں مزید پڑھیں۔
بلاک کا کیا ہوتا ہے؟
بلاک کو بلاک تجویز کنندہ کے مقامی ڈیٹا بیس میں شامل کیا جاتا ہے اور کنسینسس لیئر گپ شپ نیٹ ورک پر ساتھیوں کو نشر کیا جاتا ہے۔ جب کوئی ویلیڈیٹر بلاک وصول کرتا ہے، تو وہ اس کے اندر موجود ڈیٹا کی تصدیق کرتا ہے، جس میں یہ جانچنا شامل ہے کہ بلاک کا پیرنٹ درست ہے، درست سلاٹ سے مطابقت رکھتا ہے، تجویز کنندہ کا انڈیکس متوقع ہے، RANDAO ریویل (reveal) درست ہے اور تجویز کنندہ سلیشڈ (slashed) نہیں ہے۔ execution_payload کو ان بنڈل (unbundle) کیا جاتا ہے، اور ویلیڈیٹر کا ایگزیکیوشن کلائنٹ مجوزہ سٹیٹ کی تبدیلی کو جانچنے کے لیے فہرست میں موجود ٹرانزیکشنز کو دوبارہ ایگزیکیوٹ کرتا ہے۔ یہ فرض کرتے ہوئے کہ بلاک ان تمام جانچ پڑتال کو پاس کر لیتا ہے، ہر ویلیڈیٹر بلاک کو اپنی کینونیکل (canonical) چین میں شامل کر لیتا ہے۔ پھر یہ عمل اگلے سلاٹ میں دوبارہ شروع ہوتا ہے۔
بلاک کے انعامات
بلاک تجویز کنندہ کو ان کے کام کی ادائیگی موصول ہوتی ہے۔ ایک base_reward ہوتا ہے جس کا حساب فعال ویلیڈیٹرز کی تعداد اور ان کے موثر بیلنس کے فنکشن کے طور پر کیا جاتا ہے۔ پھر بلاک تجویز کنندہ کو بلاک میں شامل ہر درست اٹیسٹیشن کے لیے base_reward کا ایک حصہ ملتا ہے؛ جتنے زیادہ ویلیڈیٹرز بلاک کی تصدیق کرتے ہیں، بلاک تجویز کنندہ کا انعام اتنا ہی زیادہ ہوتا ہے۔ ان ویلیڈیٹرز کی رپورٹنگ کے لیے بھی ایک انعام ہے جنہیں سلیش کیا جانا چاہیے، جو ہر سلیشڈ ویلیڈیٹر کے لیے 1/512 * effective balance کے برابر ہوتا ہے۔
انعامات اور جرمانوں کے بارے میں مزید