Page cover

👨‍🏫ما هي موافقات التوكنات (Token Approvals)؟

وصف طريقة Approv للموافقة القياسية

الموافقات على الرموز (token approvals) تُستخدم لمنح عقد ذكي إذنًا بصرف رموزك نيابةً عنك. هذه آلية شائعة تستخدمها بورصات DEX، وبروتوكولات الإقراض، وتطبيقات Dapp الأخرى. على سبيل المثال، إذا أردت تداول رموزك على بورصة لامركزية (DEX)، فستحتاج إلى منح البورصة إذنًا لتبادل تلك الرموز نيابةً عنك.

تُستخدم الموافقات على الرموز أيضًا مع NFT. على سبيل المثال، إذا أردت بيع NFT الخاص بك على سوق، فستحتاج إلى منح السوق إذنًا لنقل الـ NFT نيابةً عنك. أو إذا أردت استخدام NFT الخاص بك كضمان للحصول على قرض (loan)، فستحتاج إلى منح بروتوكول الإقراض (lending protocol) إذنًا لنقل الـ NFT نيابةً عنك.

كيف تعمل موافقات الرموز (Token Approvals)؟

في معظم العقود الذكية للرموز [القابلة للاستبدال] (/learn/basics/what-are-tokens) و[الـ NFT] (/learn/basics/what-are-nfts) توجد بنية mappingالتي تتتبع كل الأذونات التي منحها المستخدم، ولمن وبأي كمية. في كل مرة تمنح أو تلغي أحد هذه الأذونات، mapping يتم تحديثها.

عندما يحاول العقد إنفاق رموزك نيابةً عنك، يتحقق عقد الرمز الذكي من mappingليرى ما إذا كان لدى المُنفِق إذنٌ بصرف الرموز. إذا كان كذلك، تُنفق الرموز. إن لم يكن، تفشل المعاملة.

موافقات الرموز القابلة للاستبدال (fungible)

في الرموز القابلة للاستبدال تتضمن العقود الذكية دالة approve()التي تتيح منح عنوان آخر إذنًا لصرف رموزك نيابةً عنك. تستقبل هذه الدالة معاملين: عنوان المُنفِق وكمية الرموز. يتم إلغاء الإذن عن طريق استدعاء الدالة approve() بنفس المعاملين لكن بالمبلغ 0.

على سبيل المثال، إذا أردت منح بورصة لامركزية (DEX) إذنًا لصرف 1000 USDC نيابةً عنك، يجب عليك استدعاء approve() بهذه الطريقة:

الموافقة على USDC

موافقات NFT (Approvals)

بالنسبة للـ NFT يوجد نوعان مختلفان من الموافقات: محددة وغير محددة. تستخدم الموافقات المحددة (Limited approvals) لمنح العقد الذكي إذنًا لنقل NFT محدد (بمعرّف معين). تُستخدم الموافقات غير المحددة (Unlimited approvals) لمنح العقد الذكي إذنًا لنقل أي من NFTاتك. يمكن منح الموافقات المحددة لعُنوان واحد فقط في كل مرة، ولذلك يستخدم معظم أسواق NFT الموافقات غير المحددة.

موافقات NFT المحددة (Limited Approvals)

للموافقات المحددة في عقود الـ NFT توجد دالة approve()تسمح بمنح عنوان آخر إذنًا لنقل NFT محدد نيابةً عنك. تستقبل هذه الدالة معاملين: عنوان المُرسل ومعرّف الـ NFT المطلوب. يمكن إلغاء الموافقة بإعادة استدعاء الدالة approve() بنفس المعاملين لكن بتحديد عنوان المرسل 0x000.... كما يتم إلغاء هذا النوع من الموافقة تلقائيًا عند النقل.

على سبيل المثال، إذا أردت منح OpenSea إذنًا لنقل Pudgy Penguin الخاص بك بالمعرّف 4420 نيابةً عنك، يجب عليك استدعاء approve() بهذه الطريقة:

الموافقة على Pudgy Penguins 4420

موافقات NFT غير المحددة (Unlimited Approvals)

في حالة الموافقات غير المحددة تحتوي عقود الـ NFT على دالة setApprovalForAll()التي تتيح منح عنوان آخر إذنًا لنقل أي NFT من محفظتك نيابةً عنك. تستقبل هذه الدالة معاملين: عنوان المرسل وقيمة true/false. تتم الموافقة عبر استدعاء الدالة setApprovalForAll() بالمعامل true، وإلغاء الموافقة - بالمعامل false.

على سبيل المثال، إذا أردت منح OpenSea إذنًا لنقل أي من NFTاتك نيابةً عنك، يجب عليك استدعاء setApprovalForAll() بهذه الطريقة:

الموافقة على جميع Pudgy Penguins

موافقات الرموز شبه القابلة للاستبدال (Semi-Fungible)

الرموز شبه القابلة للاستبدال (Semi-Fungible) هي نوع خاص من الـ NFT يمكن استخدامه لتمثيل عدة نسخ من نفس الأصل. كما ترى، تشترك هذه الرموز في الكثير مع الـ NFT، لذا تبدو آلية الموافقات عليها مشابهة جدًا. الاختلاف الأكبر هو أن رموز الـ semi-fungible لديها دالة setApprovalForAll()ولكنها لا تملك دالة approve().

المخاطر عند الموافقة على الرموز (Token Approvals)

الموافقات على الرموز جزء أساسي من نظام العقود الذكية. بدونها، كانت العديد من تطبيقات DeFi ستكون غير قابلة للعمل. لكن هناك مخاطر مرتبطة بالموافقات على الرموز. إذا منحت عقدًا ذكيًا إذنًا بصرف رموزك، يمكنه صرفها في أي وقت. لذلك إذا تم اختراق العقد الذكي أو تعرّض لهجوم، قد تُسرق رموزك.

استغلالات العقود الذكية

أحد مخاطر الموافقات على الرموز هو أن العقد الذكي الذي تمنحه الموافقة قد يُخترق. حتى المشاريع الشهيرة قد تصبح ضحية للاختراق، كما رأينا في حالة استغلال SushiSwaparrow-up-right في أبريل 2023. في مثل هذه الحالات قد يسرق القراصنة الرموز من محفظتك إذا منحت أذونات لأي عقد ذكي مُخترَق.

للتنبّه إلى مثل هذه الحالات أنشأنا مستعرض الاستغلالاتarrow-up-rightالذي يحتوي على قائمة بالاستغلالات المعروفة للعقود الذكية. يمكنك استخدام هذه الأداة للتحقق مما إذا كانت لديك موافقات نشطة على عقود ذكية تم اختراقها.

الاحتيال وهجمات التصيد

بخلاف اختراق المشاريع الأصلية، توجد في عالم الكريبتو العديد من هجمات الاحتيال والتصيد. غالبًا ما يستخدم المحتالون الموافقات لسرقة أموالك. تشمل أنواع التصيد الشائعة التي تستغل الموافقات ما يلي:

  1. موافقة مباشرة للمحتال: المحتال يخدعك لتمنح عقدًا ذكيًا تسيطر عليه إذنًا، مما يسمح له بأخذ المال مباشرة من محفظتك.

  2. نشر إعلانات على سوق NFT: المحتال يخدعك لتمنح توقيعًا يضع أصولك معروضة للبيع على سوق NFT بسعر 0 ETH، مما يسمح له "بشراء" NFTاتك مقابل 0 ETH.

Last updated