کیوں "ٹوکن اپروول" DeFi میں سب سے بدترین خیال ہے۔
ERC-20 نے ٹوکن کو صحیح طریقے سے ٹھیک کر لیا، لیکن مشکل حصہ غلط۔ اس نے بیلنس اور ٹرانسفرز کو معیاری بنایا، لیکن کسی کنٹریکٹ کو آپ کے ٹوکنز کو استعمال کرنے کا کوئی صاف طریقہ نہیں دیا۔ ایک عام ٹرانسفر کنٹریکٹ کو بتاتا نہیں کہ کچھ آ گیا ہے۔ اس لیے انہوں نے ایک ہاٹ فکس لگا دیا: approve + transferFrom۔
اس ہاٹ فکس کو دیکھیں جو آپ پر مجبور کرتا ہے۔ ایک کنٹریکٹ کو آپ کے ٹوکنز خرچ کرنے کی اجازت دینے کے لیے، آپ یا تو:
- اسے ایک بار بہت بڑی یا لا محدود رقم کے لیے اپروو کر دیں، اور اب یہ جب بھی چاہے آپ کے والٹ میں داخل ہو سکتا ہے، ہمیشہ، جب تک کہ آپ منسوخ کرنے کا خیال نہ آئے۔ آپ ایک ایسے کنٹریکٹ پر بھروسہ کر رہے ہیں جسے شاید آپ نے کبھی نہیں پڑھا۔
- یا پھر ہر عمل سے پہلے بالکل درست رقم کو اپروو کریں، جس سے ہر عمل پر دوسری ٹرانزیکشن اور دوسری گیس فیس آتی ہے۔
ایک غیر معلوم شخص پر بھروسہ کریں، یا ہر حرکت پر ٹैकس دیں۔ یہ دونوں اختیارات ہیں، اور معیار کچھ بھی بہتر نہیں پیش کرتا۔ اس لیے سب لوگ دروازہ ایک منتخب کرتے ہیں اور "لا محدود" پر کلک کرتے ہیں، اور زنجیر میں والٹس بھر جاتے ہیں جو خود پر بندوقوں کا اشارہ کر رہے ہوتے ہیں۔
نظریہ نہیں۔ جیرید فروم سبس وے MEV بوٹ نے اس طرح ملینز کھو دئیے۔ کچھ بھی ہینک نہیں ہوا۔ اس نے جعلی ٹریدز کا تعاقب کرتے ہوئے اپروولز دیدئ، اور کسی نے transferFrom استعمال کرکے فنڈز باہر نکال لئے۔
سب سے بدترین بات: پورے وقت ایک بہتر ڈیزائن موجود تھا۔ transfer-and-call (ERC-223, ERC-1363) درست رقم منتقل کرتا ہے اور رسد کنندہ کو ایک ہی ٹرانزیکشن میں نوٹس دे�تا ہے۔ کوئی مستقل اپروول نہیں، کوئي اضافي ٹرانزیکشن نہیں، کوئي غیر معلوم شخص آپ کے اکاؤنٹ کا کلید نہیں رکھتا۔ اس نے ERC-20 کے شروعاتی فائدے سے ہار دی، اور اب لا محدود اپروولز DeFi کے تمام حصوں کا بنیادی حامل بن چکے ہیں۔ permit، permit2، account abstraction، ہر "فِکس" اس بنیادی خراب ڈیزائن پر لگائا گيا مرمت ہے جسے شروع میں شپ نہीں کرنا تھا۔
ہم نے محفوظ آپشن نہیں حاصل کيا۔ ہم نے آسان آپشن حاصل کيا، اور ہم اب تک اس کا بدلہ دے رہے ہيں۔