لأغراض تعليمية فقط؛ لا يشكل ذلك نصيحة استثمارية أو توصية استثمارية. قد تؤدي الاستثمارات إلى خسائر.
الإجابة المباشرة
يجمع Permit2 نظامين مختلفين للتفويض. يخزن AllowanceTransfer حدا قابلا لإعادة الاستخدام مرتبطا بالمالك والرمز والجهة المخولة بالإنفاق، مع مبلغ وتاريخ انتهاء وعدد فريد مرتب. أما SignatureTransfer فيستهلك حدا أقصى موقعا لمرة واحدة باستخدام عدد فريد في خريطة بتات غير مرتبة، ولا ينشئ حدا دائما للجهة المخولة بالإنفاق. ويظل النظامان معتمدين على حد ERC-20 الذي يمنحه مالك الرمز لعقد Permit2.
يمكن لتوقيع لا يتطلب من صاحبه دفع الغاز أن يحرك الأصول عندما يدفع المنفذ أو المرحل تكلفة التنفيذ. تحقق من السلسلة الدقيقة وشفرة Permit2 المنشورة ونطاق EIP-712 والوحدة والرمز والجهة المخولة بالإنفاق والحد الأقصى الموقع وبيانات المستلم في الاستدعاء والعدد الفريد والمواعيد. شرعية عقد Permit2 لا تجعل جهة إنفاق أو مستلما أو موجها أو شاهدا خبيثا آمنا.
إن استكمال هذه المراجعة لا يثبت أن الأصل أو المعاملة أو النظام آمن.
آلية العمل
- ثبّت
chainIdوالشبكة وعنوانverifyingContractالخاص بـ Permit2 وشفرة التشغيل المنشورة وعنوان الرمز ووحداته العشرية ونوع محفظة المالك والتطبيق المقصود. استخدم سجلا رسميا للنشر؛ فالعنوان أو الاسم المألوف لا يكفي. - اقرأ حد ERC-20 الصاعد من المالك إلى Permit2 والرصيد. حدد هل الموافقة محدودة أم غير محدودة وسلوك التحويل الخاص بالرمز؛ فهذا السجل يبقى بعد انتهاء توقيع Permit2 أو الحد الهابط المخزن.
- حدد المسار والنوع الأساسي الموقع بدقة:
PermitSingleأوPermitBatchفي AllowanceTransfer، أوPermitTransferFromأو نسخته الدفعية أو نسخ الشاهد في SignatureTransfer. لا تعاملtransferFromعلى أنه النوع الموقع. - فك ترميز نطاق EIP-712 وكل عنصر في الرسالة. في AllowanceTransfer افحص الرمز و
uint160 amountوexpirationوالعدد الفريد المرتب والجهة المخولة بالإنفاق وsigDeadline. وفي SignatureTransfer افحص الرمز والمبلغ المسموحين والعدد الفريد غير المرتب والموعد النهائي والجهة المخولة بالإنفاق المرتبطة بسياق المتصل. - فك بيانات استدعاء التنفيذ بصورة مستقلة. في SignatureTransfer الأساسي، يكون
SignatureTransferDetails.toوrequestedAmountمعاملي تنفيذ لا حقلين في التصريح الأساسي الموقع؛ ولا يلزم للمبلغ المطلوب إلا ألا يتجاوز الحد الأقصى الموقع. تحقق من كل فهرس في الدفعة ومن تجزئة الشاهد وسلسلة نوعه حرفيا عند وجودهما. - استعلم عن العدد الفريد الحالي للحد المرتب أو عن كلمة خريطة البتات وموضع البت، ثم حاك المتصل والاستدعاء والسلسلة والحالة نفسها. طابق المستلم وأفعال الموجه وخصائص الرمز والرصيد وسجلي الحدود؛ فقد تتغير نتيجة المحاكاة بتغير الحالة أو الترتيب أو إعادة التنظيم.
- قلل المبالغ والمدد. عند الاشتباه، احتفظ بالبيانات المهيكلة وقدم عبر مسار موثوق إلغاء الموافقة الصاعدة أو الحد الهابط أو إبطال العدد الفريد المناسب، واعتبر ذلك سباقا في مجمع المعاملات؛ انتظر التأكيد وطابق التحويلات والأرصدة والحدود وبتات الخريطة.
يحدد sigDeadline في AllowanceTransfer آخر وقت يستطيع فيه التصريح الموقع إنشاء الصلاحية المخزنة أو تحديثها؛ بينما يحدد expiration مدة إمكان إنفاق تلك الصلاحية. ويحدد الموعد النهائي في SignatureTransfer تنفيذها الوحيد. توفر EIP-712 التجزئة المهيكلة وفصل النطاق، لا الحماية من إعادة الاستخدام ولا سلامة القصد؛ وتوفر قواعد العدد الفريد والموعد النهائي في Permit2 هذين الحدين.
في محفظة تعاقدية، تعتمد صلاحية ERC-1271 على سياسة isValidSignature الحالية ووحدات المحفظة وحدود التوقيع وشفرتها. أسماء المحافظ وشاشات محافظ الأجهزة المقتطعة والمحاكاة الناجحة أدلة مساعدة وليست ضمانات. ولا يؤدي قطع اتصال الواجهة إلى إلغاء أي موافقة أو توقيع.
مثال
- سجلان لحدود الإنفاق. يبدأ حد الرمز المحدود الممنوح لـ Permit2 عند
1,000 USDC، ويخزنPermitSingleحدا قدره600 USDCللجهة S. بعد أن تحول S مبلغ225 USDCيصبح المبلغ المخزن600 - 225 = 375 USDC، بينما يصبح الحد الصاعد القياسي المحدود1,000 - 225 = 775 USDC. انتهاء 375 أو إلغاؤها لا يمحو 775 تلقائيا؛ وقد تختلف الرموز غير القياسية. - المستلم والمبلغ في التحويل أحادي الاستخدام. يوقع SignatureTransfer حدا أقصى
250 USDC، وتطلب بيانات الاستدعاء تحويل180 USDCإلى تاجر. إذا كفى الرصيد والحد الصاعد، يمكن تنفيذ 180. ويستهلك العدد الفريد، فلا يمكن إعادة استخدام70 USDCالمتبقية. وإذا سمت بيانات الاستدعاء مهاجما مستلما، فلا يمنع التصريح الأساسي وحده إعادة التوجيه هذه من الجهة المخولة المرتبطة. - خريطة البتات للأعداد غير المرتبة. للعدد
513تكونwordPos = 513 >> 8 = 2وbitPos = 513 & 255 = 1وmask = 1 << 1 = 2. يضبط التنفيذ البت 1 من الكلمة 2؛ وتفشل إعادة استخدام 513، بينما يظل العدد512في البت 0 مستقلا. - سباق الإلغاء. حد مخزن قدره
400 USDC. يبث المالك إلغاء إلى الصفر، لكن تحويل300 USDCينفذ أولا فيبقى100 USDC؛ ثم يجعل الإلغاء اللاحق الباقي0. وصول الحد النهائي إلى صفر لا يعكس خسارة300 USDCالمحققة، لذلك يجب مطابقة ترتيب المعاملات والأرصدة.
المخاطر
- معرف سلسلة أو نشر أو شفرة تشغيل غير صحيحة
- عقد تحقق مزيف أو غير متوقع
- الخلط بين AllowanceTransfer وSignatureTransfer
- جهة إنفاق أو متصل خبيث أو خاطئ
- اختيار المستلم عبر بيانات استدعاء التنفيذ
- اقتراب المبلغ المطلوب من الحد الأقصى الموقع
- عنوان رمز أو اسمه أو وحداته العشرية أو وحداته الخام غير صحيحة
- موافقة ERC-20 صاعدة دائمة أو غير محدودة
- مبلغ هابط أو مدة انتهاء مفرطان
- الخلط بين الموعد النهائي وموعد التوقيع والانتهاء
- عدد فريد مرتب قديم أو خاضع للسباق
- إعادة استخدام بت أو قناع إبطال مفرط الاتساع
- عدم تطابق تجزئة الشاهد أو سلسلة النوع الدقيقة
- عنصر دفعة مخفي أو مكرر أو خاطئ الفهرس
- اختلاف عرض الواجهة أو بيانات الاستدعاء عن القصد
- خسارة الإلغاء لسباق مجمع المعاملات أو MEV
- تغير وحدة ERC-1271 أو الموقع أو الحد أو الترقية
- رمز يقتطع رسوما أو يعيد تحديد الرصيد أو يوقف أو يحظر أو يستدعي رد اتصال
- تغير حالة المحاكاة أو فشلها أو إعادة التنظيم
- اعتبار تأكيد محفظة الأجهزة أو قطع الاتصال دليلا على الأمان
مفاهيم خاطئة شائعة
- التوقيع الذي لا يعرض طلب غاز لا يستطيع تحريك الرموز. يمكن لطرف آخر دفع غاز التنفيذ.
- عنوان Permit2 الرسمي يثبت أمان جهة الإنفاق والمستلم. قد ينفذ Permit2 تفويضا خبيثا بأمانة.
- ينشئ SignatureTransfer وAllowanceTransfer الصلاحية الدائمة نفسها. الأول أحادي الاستخدام والثاني يخزن حدا قابلا لإعادة الاستخدام.
- يلغي قطع الاتصال أو إلغاء طبقة واحدة كل المسارات والتواقيع المعلقة. حالات الصلاحية الصاعدة والهابطة والعدد الفريد مستقلة، وتظل السباقات قائمة.
- تثبت EIP-712 أو محفظة الأجهزة أو المحاكاة الناجحة القصد والنهائية. يحسن كل منها الرؤية أو الاختبار، لكنه لا يغني عن التحقق من الحقول والاستدعاء والحالة المؤكدة.
مواضيع ذات صلة
المصادر
- Overview - Uniswap Developers (تم الاطلاع: 2026-08-13)
- Allowance Transfer - Uniswap Developers (تم الاطلاع: 2026-08-13)
- Signature Transfer - Uniswap Developers (تم الاطلاع: 2026-08-13)
- Deployments - Uniswap Developers (تم الاطلاع: 2026-08-13)
- PermitHash.sol - Uniswap Permit2 (تم الاطلاع: 2026-08-13)
- EIP-712: Typed structured data hashing and signing - Ethereum Improvement Proposals (تم الاطلاع: 2026-08-13)
- ERC-1271: Standard Signature Validation Method for Contracts - Ethereum Improvement Proposals (تم الاطلاع: 2026-08-13)
- ERC-20: Token Standard - Ethereum Improvement Proposals (تم الاطلاع: 2026-08-13)