
ایک ایسا معاہدہ جو ایک ناکام کال کے بعد بھی جاری رہتا ہے، آج کل یہ بتانے کا کوئی قابل اعتماد طریقہ نہیں رکھتا کہ کیا کالی کارنر نے جان بوجھ کر ریورٹ کیا یا صرف گیس ختم ہو گئی۔ یہ فرق غیر کافی گیس کے غریب کرنے کا بنیادی سبب ہے، اور ایک نئی مسودہ پroposal EVM سطح پر اس فرق کو بند کرنے کی کوشش کرتی ہے۔ EIP-8456، جسے منگل کو Ethereum Magicians پر بحث کے لیے کھولا گیا، ایک ایسا حکم شامل کرتا ہے جسے CALLSTATUS کہا جاتا ہے، جو ابتدائی طور پر 2 گیس پر opcode 0xA5 پر ہوگا۔ یہ موجودہ فریم میں تازہ ترین کال یا create آپریشن کی مکمل حالت کو تین بٹس کے طور پر پوش دیتا ہے۔ بٹ 0 کا مطلب ریورٹ ہے، بٹ 1 کا مطلب ایک استثنائی روک جیسے گیس ختم ہونا ہے، اور بٹ 2 کا مطلب کسی نچلے فریم میں کچھ روک گیا ہے۔ مصنف نے اشارہ کیا ہے کہ آج تک واحد ثبوت gasleft() ارٹھمیٹک ہے، اور ہر repricing فورک نے ان حدود کو توڑ دیا ہے۔ EIP-8037 کا پیشکش شدہ دو بعدی گیس اس ارٹھمیٹک کو مزید کمزور بنائے گا، کیونکہ اس کا ذخیرہ GAS opcode کے ذریعے نظر نہیں آتا۔ تو تینوں بٹ کیوں؟ زیادہ تر حقیقی کالز پروکسز، OpenZeppelin کے functionCall wrapper، Multicall3 یا ERC-1271 سائنچر چیکرز جیسے درمآنی طرفین سے گزرتی ہیں۔ اگر صرف براہ راست کالی کارنر کا اختتام رپورٹ ہوتا، تو ایک wrapper جو گیس ختم ہونے والے روک کو پکڑ لے اور وجہ کے ساتھ ریورٹ کر دے، وہ جان بوجھ کر ریورٹ لگتا۔ مسودہ ایک اسٹکی فلگ رکھتا ہے جو ہر فریم میں اوپر جاتا رہتا ہے، تاکہ صرف گیس پر قابو رکھنے والا بھی اس وقت تک کسی caller کو صرف ریورٹ نہ دکھا سکے۔ اس سے نتائج رپورٹ ہوتے ہیں، نہ کہ وجوہات، اور ایک callee اب بھي INVALID کے ذریعے جان بوجھ کر روک پیدا کر سکتا ہے۔ اس صرف ان کوڈز کو تحفظ فراہم کرتا ہے جو اس کے جاری ہونے کے بعد لکھے جائیں، کیونکہ متعین شدہ معاہدات اسے نہیں پڑھ سکتے۔ ابھی تک باہری جائزے نہیں ہوئے، opcode نمبر اب بھی معمول پر ہے، اور 58 درج معاملات کے لئے اب تک ایک پروٹوٹائپ اور ٹيسٹس منتظر ہيں۔ لنک - https://t.co/KnByUBgWrY
