Page cover

ما هي توق Signatures Permit؟

وصف Permit

بسبب الحاجة لدفع الرسوم (الغاز) تفضل العديد من التطبيقات طلب أذونات غير محدودة (موافقات)، مما يعني أنك تحتاج لدفع الغاز مرة واحدة فقط. قد يشكل هذا خطرًا أمنيًا لأن التطبيق يحتفظ بهذا الوصول غير المحدود لفترة غير محددة. من الناحية المثالية ينبغي منح موافقة محدودة تغطي عدد الرموز المحدد اللازم لعملية معينة. لكن عندها سيتعين عليك دفع الغاز عن كل موافقة.

EIP2612arrow-up-right تحاول حل هذه المشكلة من خلال السماح بتوقيع رسالة بالموافقة خارج السلسلة (offchain). بهذا لن تحتاج لإرسال معاملة على السلسلة (onchain) ويمكنك منح موافقة محدودة دون دفع رسوم الغاز.

كيف تعمل توقيعات Permit؟

EIP2612 هو امتداد لمعيار ERC20، مما يعني أن رموز ERC20 يمكنها تنفيذ هذه الوظيفة الإضافية، لكن معظم الرموز لا تدعمها. تعتمد توقيعات Permit على المعيار EIP712arrow-up-right، الذي يحدد طريقة موحدة لتوقيع البيانات المهيكلة. تحتوي البيانات التي يجب توقيعها لتوقيعات Permit على نفس المعلومات كما عند منح الموافقات على السلسلة: عنوان المصرف المفوض (authorized spender address - ASA) وعدد الرموز.

الموافقة عبر Permit على USDC في Etherscan

بعد ذلك يمكن تمرير هذه البيانات والتوقيع المطابق إلى دالة الرمز permit()، التي تتحقق من التوقيع و"تفعل" الموافقة على السلسلة، بعد ذلك تصبح الموافقة مماثلة للموافقة العادية على السلسلة. على الرغم من أن هذا النوع من التوقيع يجب أن يُ"فعل" على السلسلة، إلا أن التفعيل على السلسلة يمكن أن يُدمج مع المعاملة التي تحتاج إلى الموافقة، لذا لن تحتاج لإرسال معاملة منفصلة.

مزايا توقيعات Permit

كما ذُكر أعلاه، المشكلة الأساسية التي تحلها توقيعات Permit هي أنه يمكنك منح موافقات دون الحاجة لإرسال معاملة منفصلة للموافقة. هذا يمنح ميزتين مهمتين:

  • تقليل التعقيدات للمستخدمين لأنهم لا يحتاجون لدفع الغاز أو الانتظار حتى تُستخرج المعاملة.

  • خفض مخاطر الأمان، إذ يمكن منح موافقات محدودة تغطي فقط عدد الرموز اللازم للمعاملات المحددة.

مساوئ توقيعات Permit

على الرغم من أن توقيعات Permit تتمتع بعدد من المزايا المهمة، إلا أن لها مساوئ أيضًا. أحدها هو أنها غير مدعومة من قبل معظم الرموز، لذا لا يمكنك الاعتماد على توفرها. ونظرًا للدعم المحدود في رموز ERC20، فإن العديد من التطبيقات لا تدعمها أيضًا. لكي تدعم العقود الذكية توقيعات Permit، يجب عليها تنفيذ هذه الميزة بشكل صريح، مما يضيف صعوبات إضافية للمطورين.

نافذة موافقة Permit على USDC في MetaMask

نظرًا لأن توقيعات Permit هي توقيعات خارج السلسلة، فكثيرًا ما يستغلها المحتالون لخداع المستخدمين وإجبارهم على منح موافقة. تعرض العديد من المحافظ، مثل MetaMask، الآن تحذيرًا عندما توقع موافقة على السلسلة، لكن مثل هذه التحذيرات غير موجودة لتوقيعات Permit. لذلك قد يبدو أنك فقط توصل محفظتك بموقع ما، بينما في الواقع تكون قد منحت موافقة.

Last updated