Metamorphic Smart Contracts PlatoBlockchain ڈیٹا انٹیلی جنس کا پتہ لگانے کے لیے ایک ٹول۔ عمودی تلاش۔ عی

میٹامورفک سمارٹ کنٹریکٹس کا پتہ لگانے کا ایک ٹول

Ethereum سیکیورٹی کا ایک اہم مفروضہ یہ ہے کہ سمارٹ کنٹریکٹ کوڈ ناقابل تغیر ہے اور اس لیے اسے بلاک چین پر تعینات کرنے کے بعد تبدیل نہیں کیا جا سکتا۔ عملی طور پر، کچھ ہوشیار معاہدے کر سکتے ہیں تبدیلی - ان کے تعینات ہونے کے بعد بھی۔ چند ہوشیار چالوں کے ساتھ، آپ میٹامورفک سمارٹ معاہدے بنا سکتے ہیں جو کہ "میٹامورفوسس"کسی اور چیز میں - اور یہ سمجھ کر کہ ان کو کیا ممکن بناتا ہے، آپ ان کا پتہ لگا سکتے ہیں۔

میٹامورفک سمارٹ کنٹریکٹ متغیر ہوتے ہیں، یعنی ڈویلپرز اپنے اندر موجود کوڈ کو تبدیل کر سکتے ہیں۔ یہ سمارٹ کنٹریکٹس ویب 3 صارفین کے لیے ایک سنگین خطرہ لاحق ہیں جو کوڈ پر بھروسہ کرتے ہیں جس کی وہ مکمل مستقل مزاجی کے ساتھ چلنے کی توقع رکھتے ہیں، خاص طور پر جب برے اداکار اس شکل بدلنے کی صلاحیت کا فائدہ اٹھا سکتے ہیں۔ تصور کریں کہ ایک حملہ آور تکنیک کا استعمال کرتے ہوئے لوگوں کو "قطعی" کرنے کے لئے استعمال کر رہا ہے جو ایک سمارٹ معاہدے میں ٹوکن لگا رہے ہیں جس کا انہیں احساس نہیں ہے کہ یہ میٹامورفک ہے۔ اس اور اسی طرح کے احاطے پر مبنی حملے دھوکہ بازوں کو لوگوں کا شکار کرنے کے لیے تیار کر سکتے ہیں اور عام طور پر وکندریقرت نظاموں کے مکمل وعدے پر اعتماد کو کمزور کر سکتے ہیں۔

یہ تجزیہ کرنے کے لیے کہ آیا سمارٹ کنٹریکٹ میں میٹامورفک خصوصیات ہیں، میں نے ایک سادہ بنایا میٹامورفک معاہدہ کا پتہ لگانے والا (کے اصل کام سے متاثر اور اس کی تعمیر جیسن کارور, 0 ایج، اور دوسروں کے). کوئی بھی اس ٹول کو یہ جانچنے کے لیے استعمال کر سکتا ہے کہ آیا دیا گیا معاہدہ سرخ جھنڈوں کی نمائش کرتا ہے جو میٹامورفزم کی صلاحیت کی نشاندہی کر سکتا ہے۔ یہ طریقہ فول پروف نہیں ہے: صرف اس لیے کہ ایک سمارٹ کنٹریکٹ ایک جھنڈا دکھاتا ہے، اس کا مطلب یہ نہیں کہ یہ ضروری طور پر میٹامورفک ہو۔ اور صرف اس وجہ سے کہ ایسا نہیں ہے، اس کا مطلب یہ نہیں ہے کہ یہ محفوظ ہے۔ چیکر محض ایک فوری ابتدائی تشخیص پیش کرتا ہے کہ ایک معاہدہ شاید ممکنہ اشارے کی بنیاد پر میٹامورفک ہونا۔ 

Web3 صارفین کو میٹامورفک معاہدوں سے لاحق خطرات سے خود کو واقف کرانا چاہیے تاکہ وہ ممکنہ حملوں سے بچ سکیں۔ بٹوے اور بلاک چین انڈیکسرز صارفین کو خبردار کر کے مدد کر سکتے ہیں اس سے پہلے کہ وہ کسی ایسے سمارٹ کنٹریکٹ کے ساتھ تعامل کریں جس میں میٹامورفک خصوصیات ہو سکتی ہیں۔ اس ٹول کا مقصد لوگوں کو اس ممکنہ خطرے کے بارے میں تعلیم دینے اور اس کے خلاف دفاع دونوں میں مدد کرنا ہے۔

میٹامورفک سمارٹ معاہدوں کا پتہ لگانا

۔ میٹامورفک معاہدہ کا پتہ لگانے والا میں نے چھ خصوصیات کا تجزیہ کیا ہے جو اس بات کی نشاندہی کر سکتی ہے کہ آیا کوئی سمارٹ معاہدہ میٹامورفک ہے۔

    1. کیا معروف میٹامورفک کوڈ کو معاہدہ کی تعیناتی کے لیے استعمال کیا گیا تھا؟ اگر معلوم میٹامورفک بائٹ کوڈ – نچلی سطح کا، ورچوئل مشین پڑھنے کے قابل کوڈ جسے Ethereum سمارٹ کنٹریکٹس، عام طور پر Solidity میں لکھا جاتا ہے، مرتب ہونے کے بعد بدل جاتا ہے – ایک دیئے گئے سمارٹ کنٹریکٹ کی تعیناتی کے لین دین میں ظاہر ہوتا ہے، یہ ایک بڑا سرخ پرچم ہے۔ اس کے بعد آنے والے حصوں میں، ہم میٹامورفک بائٹ کوڈ کی ایسی ہی ایک مثال پر بات کریں گے جو 0age کے ذریعے تیار کیا گیا ہے۔ ایک اہم انتباہ: میٹامورفک بائیک کوڈ کی ممکنہ طور پر بے شمار تغیرات ہیں، جو تمام اقسام کا پتہ لگانا مشکل بنا دیتی ہیں۔ اگرچہ معروف مثالوں کے لیے اسکین کرنے سے، ڈیٹیکٹر حملہ آوروں کے لیے کم لٹکنے والے پھلوں کو ختم کرتا ہے جو صرف موجودہ مثالوں کو کاپی اور پیسٹ کر رہے ہیں۔
    2. کیا سمارٹ کنٹریکٹ کوڈ خود کو تباہ کر سکتا ہے؟ کسی معاہدے میں کوڈ کو تبدیل کرنے کے لیے – میٹامورفک معاہدہ بنانے میں ایک اہم قدم – ایک ڈویلپر کو پہلے پہلے سے موجود کوڈ کو حذف کرنے کی ضرورت ہوتی ہے۔ ایسا کرنے کا واحد طریقہ استعمال کرنا ہے۔ SELFDESTRUCT opcode, ایک کمانڈ جو بالکل ویسا ہی کرتی ہے جیسا کہ لگتا ہے – یہ ایک دیئے گئے معاہدے کے پتے پر تمام کوڈ اور اسٹوریج کو مٹا دیتا ہے۔ کسی معاہدے میں خود کو تباہ کرنے والے کوڈ کی موجودگی یہ ثابت نہیں کرتی کہ یہ میٹامورفک ہے۔ تاہم، یہ ایک اشارہ پیش کرتا ہے کہ معاہدہ شاید میٹامورفک بنیں اور یہ جاننے کے قابل ہے، بہرحال، آپ جن معاہدوں پر انحصار کر رہے ہیں وہ خود کو جوہری کر سکتے ہیں۔
    3. کیا سمارٹ کنٹریکٹ کہیں اور سے کوڈ میں کال کرتا ہے؟ اگر زیربحث سمارٹ معاہدہ براہ راست خود کو تباہ نہیں کرسکتا ہے، تو یہ اب بھی استعمال کرکے خود کو مٹا سکتا ہے۔ ڈیلیگیٹکال اوپک کوڈ. یہ اوپکوڈ ایک سمارٹ کنٹریکٹ کو متحرک طور پر کوڈ لوڈ کرنے اور اس پر عمل کرنے کی اجازت دیتا ہے جو دوسرے سمارٹ کنٹریکٹ کے اندر رہتا ہے۔ یہاں تک کہ اگر سمارٹ کنٹریکٹ میں SELFDESTRUCT opcode شامل نہیں ہے، تو یہ DELEGATECALL کا استعمال خود کو تباہ کرنے والے کوڈ کو کہیں اور سے لوڈ کر سکتا ہے۔ اگرچہ DELEGATECALL فعالیت براہ راست اس بات کی نشاندہی نہیں کرتی ہے کہ آیا کوئی سمارٹ کنٹریکٹ میٹامورفک ہے، لیکن یہ ایک ممکنہ اشارہ ہے – اور ممکنہ حفاظتی مسئلہ – جو قابل توجہ ہے۔ خبردار رہو کہ یہ اشارے بہت سے غلط مثبتات کو بڑھانے کی صلاحیت رکھتا ہے۔ 
    4. کیا کسی اور معاہدے نے اس معاہدے کو تعینات کیا؟ میٹامورفک معاہدوں کو تعینات کیا جاسکتا ہے۔ صرف دوسرے سمارٹ معاہدوں کے ذریعے۔ اس کی وجہ یہ ہے کہ میٹامورفک معاہدوں کو ایک اور آپکوڈ کے ذریعے فعال کیا جاتا ہے، جو صرف دوسرے سمارٹ معاہدوں کے ذریعے قابل استعمال ہوتا ہے، جسے CREATE2 کہتے ہیں۔ (ہم CREATE2 پر بات کریں گے - یہ کیسے کام کرتا ہے اور یہ کیوں اہمیت رکھتا ہے - مزید بعد کے حصے میں۔ یہ ایک ضروری لیکن ناکافی شرط ہے۔ اس خاصیت کو اسکین کرنے سے بہت سے غلط مثبتات پیدا ہونے کا امکان ہے – لیکن یہ جاننا قیمتی معلومات ہے کیونکہ یہ شکوک پیدا کر سکتی ہے اور معاہدے کو مزید جانچنے کی وجہ فراہم کر سکتی ہے، خاص طور پر اگر سمارٹ کنٹریکٹ آگے بیان کردہ آپکوڈ پر مشتمل ہو۔
    5. کیا تعینات کنندہ کے معاہدے میں CREATE2 opcode ہوتا ہے؟ جیسا کہ اوپر ذکر کیا گیا ہے، CREATE2 کے ذریعے تعیناتی میٹامورفزم کے لیے ایک لازمی شرط ہے۔ اگر کسی تعینات کنٹریکٹ میں CREATE2 opcode شامل ہے، تو یہ اس بات کی نشاندہی کر سکتا ہے کہ اس نے زیر بحث معاہدے کو تعینات کرنے کے لیے CREATE2 کا استعمال کیا۔ اگر متعین کرنے والے نے واقعی CREATE2 کا استعمال مذکورہ معاہدہ کو تعینات کرنے کے لیے کیا ہے، جبکہ اس کا مطلب یہ نہیں ہے کہ معاہدہ لازمی طور پر میٹامورفک ہے، اس کا مطلب یہ ہے کہ یہ شاید میٹامورفک ہو اور احتیاط کے ساتھ آگے بڑھنا اور مزید تفتیش کرنا دانشمندانہ ہو سکتا ہے۔ ایک بار پھر، غلط مثبتوں سے بچو: تخلیق 2 کی کافی مقدار ہے جائز استعمال، بشمول تقویت "پرت 2" اسکیلنگ حل اور سمارٹ کنٹریکٹ والیٹس بنانا آسان بناتا ہے جو web3 کو بہتر بنا سکتا ہے۔ یوزر آن بورڈنگ اور کلیدی بحالی کے اختیارات۔
    6. کیا کوڈ تبدیل ہوا؟ یہ سب سے واضح بتانا ہے، لیکن یہ تب ہی ظاہر ہوگا جب ایک میٹامورفک معاہدہ پہلے ہی شکل اختیار کر چکا ہے۔ اگر سمارٹ کنٹریکٹ کا کوڈ ہیش – ایک منفرد، کرپٹوگرافک شناخت کنندہ – اس سے مختلف ہے جب معاہدہ ابتدائی طور پر تعینات کیا گیا تھا، تو امکان ہے کہ کوڈ کو ہٹا دیا گیا، تبدیل یا تبدیل کر دیا گیا تھا۔ اگر ہیشز مزید مماثل نہیں ہیں، تو کوڈ کے بارے میں کچھ بدل گیا ہے اور معاہدہ میٹامورفک ہوسکتا ہے۔ یہ جھنڈا میٹامورفزم کا سب سے یقینی اشارہ ہے، لیکن یہ مورفنگ کی پیشن گوئی یا پیشگی مدد نہیں کرے گا کیونکہ یہ صرف یہ چیک کرتا ہے کہ یہ پہلے سے ہوچکا ہے۔

میٹامورفک کنٹریکٹ ڈیٹیکٹر کے لیے ایک سادہ کمانڈ لائن ٹول بنانے کے علاوہ، میں نے کچھ مثالیں سمارٹ کنٹریکٹس بنائے ہیں جو اسکام میٹامورفک کنٹریکٹ اسٹیکنگ منظر نامے کو ظاہر کرتے ہیں، جس کی میں اگلے حصے میں بیان کروں گا۔ اس میں تمام کوڈ دستیاب ہیں۔ GitHub ذخیرہ

ایک بدنیتی پر مبنی اداکار لوگوں کے فنڈز چرانے کے لیے میٹامورفک معاہدوں کا استعمال کیسے کر سکتا ہے۔

یہاں یہ ہے کہ کوئی شخص اسکام کے حصے کے طور پر میٹامورفک سمارٹ کنٹریکٹ کا استعمال کیسے کرسکتا ہے۔ 

سب سے پہلے سیٹ اپ کا مرحلہ ہے۔ حملہ آور دو ٹولز کا استعمال کرتے ہوئے بلاکچین پر ایک مخصوص ایڈریس پر ایک سمارٹ کنٹریکٹ لگاتا ہے: میٹامورفک بائیک کوڈ اور کریٹ 2 اوپک کوڈ۔ (ہم ان دونوں تصورات کو بعد میں وسعت دیں گے۔) میٹامورفک بائیک کوڈ پھر وہی کرتا ہے جو اس کا نام تجویز کرتا ہے اور "مورفس"۔ یہاں، یہ a میں بدل جاتا ہے۔ اسٹیکنگ معاہدہ جہاں صارفین ERC-20 ٹوکن لگا سکتے ہیں۔ (دوبارہ، ہم اس مورفنگ چال کی تفصیلات پر بعد میں بات کریں گے۔ وعدہ کریں!)

اگلا بیت اور سوئچ آتا ہے۔ غیر مشتبہ صارفین اس معاہدے میں اپنے ٹوکن داؤ پر لگاتے ہیں، جو کہ پیداوار یا کوئی اور فائدہ حاصل کرنے کے امکان کے لالچ میں ہوتے ہیں۔ حملہ آور اس کے بعد اس سمارٹ کنٹریکٹ ایڈریس پر تمام اسٹیکنگ کوڈ اور "اسٹیٹ" - بلاکچین اسٹوریج یا میموری کو حذف کر دیتا ہے۔ SELFDESTRUCT opcode پچھلے حصے میں بحث کی گئی ہے۔. (واضح رہے کہ ٹوکنز - جو ایک علیحدہ ERC-20 معاہدے کے حصے کے طور پر موجود ہیں - برقرار رہتے ہیں، خود ساختہ معاہدے سے متاثر نہیں ہوتے۔)

آخر میں، قالین پل. حملہ آور وہی میٹامورفک بائیک کوڈ دوبارہ استعمال کرتا ہے جو سیٹ اپ کے مرحلے میں نئے معاہدے کو "دوبارہ تعینات" کرنے کے لیے استعمال ہوتا ہے۔ یہ نیا معاہدہ حال ہی میں خود کو تباہ کرنے والے معاہدے کے ذریعہ خالی کردہ اسی پتے پر تعینات کیا گیا ہے۔ تاہم، اس بار، بائیک کوڈ "مورفس" (دوبارہ، ہم بعد میں بتائیں گے کہ کیسے) ایک بدنیتی پر مبنی معاہدے میں جو معاہدے کے پتے پر لگائے گئے تمام ٹوکنز کو چرا سکتا ہے۔ اسکام مکمل۔ 

میٹامورفک سمارٹ معاہدوں سے جو خطرات لاحق ہوتے ہیں وہ اب صاف ظاہر ہیں۔ لیکن آپ اب بھی سوچ رہے ہوں گے، یہ میٹامورفزم کی چال دراصل کیسے کام کرتی ہے؟ اس کو سمجھنے کے لیے، آپ کو بائٹ کوڈ کی سطح تک گہرائی میں چھان بین کرنی ہوگی۔ 

کس طرح CREATE2 میٹامورفزم کے امکان کو کھولتا ہے۔ 

تخلیق 2 ایک اوپکوڈ اپ گریڈ ہے، Ethereum کو متعارف کرایا فروری 2019 میں، یہ سمارٹ معاہدوں کو تعینات کرنے کا ایک نیا طریقہ پیش کرتا ہے۔ 

CREATE2 ڈویلپرز کو ان کے سمارٹ معاہدوں کی تعیناتی پر پہلے سے زیادہ کنٹرول دیتا ہے۔ اصل CREATE opcode ڈویلپرز کے لیے تعینات کیے جانے والے سمارٹ کنٹریکٹ کے لیے منزل کے پتے کو کنٹرول کرنا مشکل بنا دیتا ہے۔ CREATE2 کے ساتھ، لوگ کسی خاص سمارٹ کنٹریکٹ کا پتہ پہلے سے کنٹرول کر سکتے ہیں اور جان سکتے ہیں، اصل میں اسے بلاک چین پر تعینات کرنے سے پہلے۔ یہ پیشگی علم – نیز کچھ ہوشیار چالیں – لوگوں کو میٹامورفک سمارٹ معاہدے بنانے کے قابل بناتی ہے۔ 

CREATE2 مستقبل کی پیشین گوئی کیسے کر سکتا ہے؟ اوپکوڈ کا حساب متعین ہے: جب تک ان پٹس تبدیل نہیں ہوتے، CREATE2 کے ذریعے طے شدہ پتہ تبدیل نہیں ہوگا۔ (یہاں تک کہ سب سے چھوٹی تبدیلی بھی کہیں اور تعیناتی کا سبب بنے گی۔)

مزید دانے دار طور پر، CREATE2 ایک فنکشن ہے جو چند عناصر کو یکجا اور ہیش کرتا ہے۔ سب سے پہلے، اس میں تعینات کرنے والے (یا بھیجنے والے) کا پتہ شامل ہوتا ہے: شروع کرنے والا سمارٹ معاہدہ جو تخلیق کیے جانے والے کے والدین کے طور پر کام کرتا ہے۔ اس کے بعد، یہ بھیجنے والے (یا "نمک") کی طرف سے فراہم کردہ ایک صوابدیدی نمبر شامل کرتا ہے، جو ڈویلپر کو ایک ہی کوڈ کو مختلف پتوں پر تعینات کرنے کی اجازت دیتا ہے (نمک کو تبدیل کرکے) اور موجودہ، ایک جیسے معاہدوں کو اوور رائٹ کرنے سے روکتا ہے۔ آخر میں، یہ کچھ سمارٹ کنٹریکٹ انیشیلائزیشن ("init") بائیک کوڈ کے keccak256 ہیش کا استعمال کرتا ہے، جو کہ ایک نئے سمارٹ کنٹریکٹ میں تبدیل ہوتا ہے۔ یہ ہیش ایک ساتھ ملا کر ایتھریم ایڈریس کا تعین کرتا ہے اور پھر اس ایڈریس پر دیئے گئے بائیک کوڈ کو تعینات کرتا ہے۔ جب تک بائیک کوڈ بالکل ویسا ہی رہتا ہے، CREATE2 دیے گئے بائٹ کوڈ کو ہمیشہ بلاکچین پر اسی ایڈریس پر تعینات کرے گا۔

یہاں ہے CREATE2 فارمولہ کیسا لگتا ہے۔ (نوٹ: ذیل کی مثال میں آپ کو ایک اور عنصر، "0xFF" نظر آئے گا۔ یہ صرف ایک مستقل CREATE2 استعمال کرتا ہے۔ تصادم کو روکنے کے پہلے والے CREATE opcode کے ساتھ۔)

اب جب کہ ہمارے پاس کوڈ کو تعییناتی پتے پر تعینات کرنے کا طریقہ ہے، یہ کیسے ممکن ہے۔ تبدیل اسی ایڈریس پر کوڈ؟ شروع میں، یہ ناممکن لگ سکتا ہے. اگر آپ CREATE2 کا استعمال کرتے ہوئے نیا کوڈ تعینات کرنا چاہتے ہیں، تو بائیک کوڈ کو تبدیل کرنا ہوگا، اور اس وجہ سے، CREATE2 ایک مختلف ایڈریس پر تعینات کرے گا۔ لیکن کیا ہوگا اگر ایک ڈویلپر نے بائیک کوڈ کو اس طرح بنایا ہے کہ جب CREATE2 سمارٹ کنٹریکٹ تعینات کرتا ہے تو یہ مختلف کوڈ میں "مورف" کر سکتا ہے؟

میٹامورفک معاہدہ دراصل کیسے کام کرتا ہے۔

سمارٹ کنٹریکٹ کو میٹامورفک کنٹریکٹ میں تبدیل کرنے کی ترکیب میں کل تین سمارٹ کنٹریکٹس کی ضرورت ہوتی ہے، ہر ایک منفرد کردار ادا کرتا ہے۔

ان ضروری اجزاء میں سے ایک میٹامورفک کنٹریکٹ فیکٹری ہے، آپریشن کا دماغ۔ یہ "فیکٹری" میٹامورفک کنٹریکٹ کے ساتھ ساتھ ایک اور سمارٹ کنٹریکٹ کی تعیناتی کے لیے ذمہ دار ہے جسے امپلیمینٹیشن کنٹریکٹ کہا جاتا ہے، اس لیے اس کا کوڈ آخر کار میٹامورفک کنٹریکٹ کے اندر لاگو ہو جاتا ہے۔ ان تینوں معاہدوں کے درمیان ایک لطیف کوریوگرافی کے نتیجے میں میٹامورفزم ہوتا ہے، جیسا کہ نیچے دیے گئے خاکے میں دکھایا گیا ہے۔

Metamorphic Smart Contracts PlatoBlockchain ڈیٹا انٹیلی جنس کا پتہ لگانے کے لیے ایک ٹول۔ عمودی تلاش۔ عی

آئیے کام پر ہونے والی کارروائیوں کو روشن کرنے کے لیے ہر قدم، 1-7 پر تفصیل سے بات کرتے ہیں۔

مرحلہ 1: ایک ڈویلپر ہر چیز کو حرکت میں رکھتا ہے۔

ایک کوڈر کچھ سمارٹ کنٹریکٹ کوڈ ڈیزائن کرتا ہے - عمل درآمد کنٹریکٹ بائی کوڈ - جو آخر کار میٹامورفک کنٹریکٹ میں ختم ہوگا۔ ڈویلپر اس کوڈ کو میٹامورفک کنٹریکٹ فیکٹری کو بھیجتا ہے، ایک سمارٹ کنٹریکٹ جس کا بنیادی مقصد دوسرے سمارٹ کنٹریکٹس کو تعینات کرنا ہے۔ یہ عمل پورے میٹامورفک کنٹریکٹ کی تخلیق کے عمل کو حرکت میں لاتا ہے۔

اس کے بعد آنے والی ہر چیز اس ابتدائی قدم کا نتیجہ ہے۔ بے شک، مرحلہ 1 سے 6 بلاکچین پر ایک ایٹم لین دین میں ہوتا ہے، یعنی تقریباً سبھی ایک ساتھ۔ میٹامورفک کنٹریکٹ کے اندر کوڈ کو تبدیل کرنے اور اسے مسلسل شکل میں رکھنے کے لیے ان اقدامات کو بار بار دہرایا جا سکتا ہے۔

مرحلہ 2: فیکٹری لاگو کرنے کا معاہدہ کرتا ہے۔

پہلا معاہدہ جو فیکٹری تعینات کرتا ہے وہ نفاذ کا معاہدہ ہے، جس میں نفاذ کوڈ ہوتا ہے۔ (تخلیقی، ہم جانتے ہیں۔) نفاذ کے معاہدے کے بارے میں ایک لوڈنگ گودی، یا وے پوائنٹ کے طور پر سوچیں، جو اپنی آخری منزل تک پہنچنے سے پہلے کچھ کوڈ رکھتا ہے، جو اس صورت میں، میٹامورفک کنٹریکٹ کے اندر ہوگا۔ 

مرحلہ 3: فیکٹری اسٹورز کے نفاذ کے معاہدے کا پتہ

بلاکچین میں اس کی تعیناتی کے بعد، نفاذ کا معاہدہ لازمی طور پر کسی بلاکچین ایڈریس پر موجود ہوگا۔ فیکٹری اس معاہدے کے پتے کو اپنی یادداشت میں محفوظ کرتی ہے (بعد میں استعمال کیا جائے گا، مرحلہ 5 میں)۔ 

مرحلہ 4: فیکٹری میٹامورفک کنٹریکٹ تعینات کرتی ہے۔

فیکٹری میٹامورفک کنٹریکٹ کو CREATE2 اور میٹامورفک بائٹ کوڈ کا استعمال کرتے ہوئے تعینات کرتی ہے۔ آپ میٹامورفک بائیک کوڈ کیسے کام کرتے ہیں اس کے بارے میں ایک تکنیکی، گہرائی سے واک تھرو تلاش کر سکتے ہیں۔ یہاں، لیکن یہ کہنا کافی ہے کہ جب میٹامورفک بائیک کوڈ پر عمل درآمد ہوتا ہے، تو یہ کسی دوسرے آن چین مقام سے کوڈ کو کاپی کرتا ہے – اس صورت میں، نفاذ کے معاہدے سے – میٹامورفک کنٹریکٹ میں۔ جیسا کہ ہم نے پچھلے حصے میں بات کی تھی، چونکہ CREATE2 فیصلہ کن ہے – جب تک کہ ایک ہی بھیجنے والے، نمک اور بائیک کوڈ کا استعمال کیا جاتا ہے – تب میٹامورفک کنٹریکٹ ایڈریس وہی رہتا ہے چاہے ان مراحل کو کتنی ہی بار دہرایا جائے۔

ذیل میں اس کی ایک مثال دی گئی ہے کہ میٹامورفک بائیک کوڈ کیسا لگتا ہے۔ میٹامورفک ریپو 0 عمر سے یہ میٹامورفک بائیک کوڈ کی صرف ایک مثال ہے - ممکنہ طور پر بے شمار تغیرات موجود ہیں، جو میٹامورفک معاہدوں کی کھوج کو بہت پیچیدہ بنا رہے ہیں۔

Metamorphic Smart Contracts PlatoBlockchain ڈیٹا انٹیلی جنس کا پتہ لگانے کے لیے ایک ٹول۔ عمودی تلاش۔ عی

مرحلہ 5: میٹامورفک بائیک کوڈ کے استفسارات عمل درآمد کنٹریکٹ ایڈریس کے لیے فیکٹری

میٹامورفک بائٹ کوڈ فیکٹری سے عمل درآمد کنٹریکٹ کا پتہ پوچھتا ہے (جیسا کہ مرحلہ 3 میں محفوظ ہے)۔ اس سے کوئی فرق نہیں پڑتا ہے کہ نفاذ کے معاہدے کا پتہ تب تک تبدیل ہوتا ہے جب تک کہ میٹامورفک بائیک کوڈ جو پتہ مانگتا ہے وہی رہتا ہے۔ درحقیقت، اگر ڈیولپر بعد میں ایک نیا عمل درآمد کنٹریکٹ تعینات کرتا ہے - جیسا کہ ٹوکن چوری کرنے کے لیے بنایا گیا ایک بدنیتی پر مبنی معاہدہ - یہ ضروری طور پر ایک مختلف بلاکچین ایڈریس پر تعینات کرے گا، فی مرحلہ 2۔ اس کا میٹامورفک کنٹریکٹ کی تخلیق پر کوئی اثر نہیں پڑے گا۔

6 مرحلہ: نفاذ کنٹریکٹ کوڈ میٹامورفک کنٹریکٹ میں کاپی ہو جاتا ہے۔

مرحلہ 5 میں سیکھے گئے بلاکچین ایڈریس کا استعمال کرتے ہوئے، میٹامورفک بائیک کوڈ نفاذ کے معاہدے میں کوڈ کو تلاش کرتا ہے اور اس کوڈ کو میٹامورفک کنٹریکٹ کے مقامی اسٹوریج میں کاپی کرتا ہے۔ اس طرح میٹامورفک معاہدہ کی شکل بدل جاتی ہے: نفاذ کے معاہدے سے کوڈ کاپی کرکے۔ 

مرحلہ 7: کللا کریں اور دہرائیں۔

ایک ڈویلپر مرحلہ 1 سے لے کر 6 تک کو بار بار دہرا سکتا ہے اور میٹامورفک کنٹریکٹ میں کوڈ کو نئے نفاذ کے معاہدے کے ذریعے اپنی پسند کے مطابق تبدیل کر سکتا ہے۔ میٹامورفک کنٹریکٹ میں پہلے سے موجود کوڈ کو ہٹانے کے لیے بس اس کی ضرورت ہے SELFDESTRUCT opcode - یا، زیادہ ڈھٹائی سے، DELEGATECALL آپکوڈز جو بالآخر ایک SELFDESTRUCT کی صورت میں نکلتے ہیں۔ نئے نفاذ کے معاہدے کے بائیک کوڈ کے ساتھ سائیکل کو دہرانے سے، میٹامورفک معاہدہ، جادو کی طرح، شکل!

میٹامورفک کنٹریکٹس بنانے کے لیے اس تکنیک کا استعمال کرتے ہوئے، ایک ہوشیار ڈویلپر مسلسل ویب 3 کے صارفین کے پاؤں کے نیچے زمین کو منتقل کر سکتا ہے۔ مثال کے طور پر، گھوٹالے کے منظر نامے پر دوبارہ غور کریں۔ ایک ڈویلپر پہلے ٹوکن اسٹیکنگ کوڈ کے ساتھ نفاذ کے معاہدے کو متعین کر سکتا ہے، جو گرافک میں دکھائے گئے اور اوپر کے مراحل میں تفصیل سے بیان کیے گئے راستے کے ذریعے، میٹامورفک کنٹریکٹ میں ختم ہوتا ہے۔ دھوکہ باز بعد میں اس کوڈ کو خود تباہ کر سکتا ہے اور اسے ٹوکن پر مشتمل ایک نیا نفاذ معاہدہ تعینات کر کے بدل سکتا ہے۔چوری کوڈ 

نفاذ کے معاہدے میں جو کچھ بھی شامل کیا جاتا ہے وہ بالآخر میٹامورفک معاہدے میں ختم ہوگا۔ یہ چال کا نچوڑ ہے۔ 

***

میٹامورفک سمارٹ کنٹریکٹس ویب 3 سماجی معاہدے کو توڑ دیتے ہیں کہ آپ جو دیکھتے ہیں وہی آپ کو ملتا ہے۔ جس طرح سے شیل گیم گیند کو چھپانے کے لیے تین موونگ کپ کا استعمال کرتا ہے، اسی طرح میٹامورفک کنٹریکٹ کی تخلیق میں تین کنٹریکٹس کا انٹر پلے کنٹریکٹ کے حقیقی فنکشن کی پیروی کرنا مشکل بناتا ہے۔ شیل گیم خاص طور پر ایک مناسب موازنہ ہے کیونکہ اعتماد کی چال کرنے والے اکثر اپنی جیت کو یقینی بنانے کے لیے ہاتھ اور غلط سمت کا استعمال کرتے ہیں۔ ویب 3 ورژن میں، میٹامورفک کنٹریکٹ رائٹرز اسی طرح "بال" بنا سکتے ہیں - نفاذ کوڈ، یعنی - غائب (پڑھیں: خود کو تباہ)، اور وہ اسے اپنی مرضی کے مطابق بدل سکتے ہیں۔

میٹامورفک معاہدوں کے وجود کا مطلب ہے کہ ویب 3 کے صارفین کے لیے ایسے معاہدوں میں داخل ہونا ممکن ہے جو اپنی مرضی سے تبدیل ہو سکتے ہیں – اسی لیے اس خطرے کو سمجھنا اور اس کے خلاف دفاع کرنا بہت اہم ہے۔ میرا میٹامورفک کنٹریکٹ ڈیٹیکٹر میٹامورفک معاہدوں کی نشاندہی کرنے کی طرف صرف ایک پہلا قدم پیش کرتا ہے جس سے وہ کام کرتے ہیں۔ مستقبل میں ڈیٹیکٹر کو بہتر کرنے کے کئی طریقے ہیں۔ مثال کے طور پر، میٹامورفک کنٹریکٹ بنانے والے فیکٹری (یا تعینات کنٹریکٹ) کو بار بار چیک کرکے، کوئی دیکھ سکتا ہے کہ آیا فیکٹری خود میٹامورفک ہے۔ یہ فیچر ڈیٹیکٹر کے اپ گریڈ شدہ ورژن 2 میں ایک مفید اضافہ ہوگا۔

یہ ایک بار پھر دہرانے کے قابل ہے: یہ ڈیٹیکٹر ٹول فول پروف نہیں ہے۔ اس کے پکڑے جانے والے جھنڈے میٹامورفک صلاحیت کے تمام بتانے والے نشانات نہیں ہیں، لیکن وہ سراگ پیش کرتے ہیں۔ ان جھنڈوں کی شناخت ایک مزید مکمل انکوائری کے لیے صرف آغاز ہے۔ اسی لیے ہم نے ایسے جھنڈوں کی تلاش کے لیے ڈیٹیکٹر کو بڑھایا جو آسانی سے غلط مثبت پیدا کر سکتے ہیں، جیسے CREATE2 یا DELEGATECALL opcodes کی موجودگی۔ اگر آپ کے پاس ٹول کو بہتر بنانے کے لیے تجاویز ہیں یا آپ اس ابتدائی کام کو مزید بنانا چاہتے ہیں تو مجھ سے اس پر رابطہ کریں۔ .

میٹامورفک خصلتوں کے لیے سمارٹ معاہدوں کا تجزیہ کریں۔ ڈیٹیکٹر ٹول کا استعمال کرتے ہوئے اور ملاحظہ کریں GitHub repo زیادہ کے لئے

ایڈیٹر: رابرٹ ہیکیٹ @rhhackett

***

اعترافات: میں ایک بہت بڑا نعرہ لگانا چاہتا ہوں اور اس پوسٹ اور ٹول کو زندہ کرنے میں قیمتی آراء اور مشورے کے لیے رابرٹ ہیکیٹ، ایڈی لازارین، سیم ریگسڈیل، ریاض فیض اللہ بھائے، نوح سیٹرون، میسن ہال، اور ڈیجن پارک کا شکریہ ادا کرنا چاہتا ہوں۔ 

***

یہاں بیان کردہ خیالات انفرادی AH Capital Management, LLC ("a16z") کے اہلکاروں کے ہیں جن کا حوالہ دیا گیا ہے اور یہ a16z یا اس سے وابستہ افراد کے خیالات نہیں ہیں۔ یہاں پر موجود کچھ معلومات فریق ثالث کے ذرائع سے حاصل کی گئی ہیں، بشمول a16z کے زیر انتظام فنڈز کی پورٹ فولیو کمپنیوں سے۔ جب کہ معتبر مانے جانے والے ذرائع سے لیا گیا ہے، a16z نے آزادانہ طور پر ایسی معلومات کی تصدیق نہیں کی ہے اور معلومات کی پائیدار درستگی یا دی گئی صورت حال کے لیے اس کی مناسبیت کے بارے میں کوئی نمائندگی نہیں کی ہے۔ اس کے علاوہ، اس مواد میں فریق ثالث کے اشتہارات شامل ہو سکتے ہیں۔ a16z نے ایسے اشتہارات کا جائزہ نہیں لیا ہے اور اس میں موجود کسی بھی اشتہاری مواد کی توثیق نہیں کرتا ہے۔

یہ مواد صرف معلوماتی مقاصد کے لیے فراہم کیا گیا ہے، اور قانونی، کاروبار، سرمایہ کاری، یا ٹیکس کے مشورے کے طور پر اس پر انحصار نہیں کیا جانا چاہیے۔ آپ کو ان معاملات کے بارے میں اپنے مشیروں سے مشورہ کرنا چاہئے۔ کسی بھی سیکیورٹیز یا ڈیجیٹل اثاثوں کے حوالے صرف مثالی مقاصد کے لیے ہیں، اور سرمایہ کاری کی سفارش یا پیشکش کی تشکیل نہیں کرتے ہیں کہ سرمایہ کاری کی مشاورتی خدمات فراہم کریں۔ مزید برآں، یہ مواد کسی سرمایہ کار یا ممکنہ سرمایہ کاروں کی طرف سے استعمال کرنے کے لیے نہیں ہے اور نہ ہی اس کا مقصد ہے، اور کسی بھی صورت میں a16z کے زیر انتظام کسی بھی فنڈ میں سرمایہ کاری کرنے کا فیصلہ کرتے وقت اس پر انحصار نہیں کیا جا سکتا ہے۔ (a16z فنڈ میں سرمایہ کاری کرنے کی پیشکش صرف پرائیویٹ پلیسمنٹ میمورنڈم، سبسکرپشن ایگریمنٹ، اور اس طرح کے کسی بھی فنڈ کی دیگر متعلقہ دستاویزات کے ذریعے کی جائے گی اور ان کو مکمل طور پر پڑھا جانا چاہیے۔) کوئی بھی سرمایہ کاری یا پورٹ فولیو کمپنیوں کا ذکر کیا گیا، حوالہ دیا گیا، یا بیان کردہ A16z کے زیر انتظام گاڑیوں میں ہونے والی تمام سرمایہ کاری کے نمائندے نہیں ہیں، اور اس بات کی کوئی یقین دہانی نہیں ہو سکتی کہ سرمایہ کاری منافع بخش ہو گی یا مستقبل میں کی جانے والی دیگر سرمایہ کاری میں بھی ایسی ہی خصوصیات یا نتائج ہوں گے۔ Andreessen Horowitz کے زیر انتظام فنڈز کے ذریعے کی گئی سرمایہ کاری کی فہرست (ان سرمایہ کاری کو چھوڑ کر جن کے لیے جاری کنندہ نے a16z کو عوامی طور پر ظاہر کرنے کے ساتھ ساتھ عوامی طور پر تجارت کیے جانے والے ڈیجیٹل اثاثوں میں غیر اعلانیہ سرمایہ کاری کی اجازت فراہم نہیں کی ہے) https://a16z.com/investments پر دستیاب ہے۔ /.

اندر فراہم کردہ چارٹس اور گراف صرف معلوماتی مقاصد کے لیے ہیں اور سرمایہ کاری کا کوئی فیصلہ کرتے وقت ان پر انحصار نہیں کیا جانا چاہیے۔ ماضی کی کارکردگی مستقبل کے نتائج کا اشارہ نہیں ہے۔ مواد صرف اشارہ کردہ تاریخ کے مطابق بولتا ہے۔ کوئی بھی تخمینہ، تخمینہ، پیشن گوئی، اہداف، امکانات، اور/یا ان مواد میں بیان کیے گئے خیالات بغیر اطلاع کے تبدیل کیے جا سکتے ہیں اور دوسروں کی رائے سے مختلف یا اس کے برعکس ہو سکتے ہیں۔ اضافی اہم معلومات کے لیے براہ کرم https://a16z.com/disclosures دیکھیں۔

ٹائم اسٹیمپ:

سے زیادہ اندیسن Horowitz