تخطي إلى المحتوى الرئيسي
Change page

معيار الرمز المميز ⁦ERC-20⁩

مقدمة

ما هو الرمز المميز؟

يمكن أن تمثل الرموز المميزة أي شيء تقريبًا في إيثيريوم:

  • نقاط السمعة في منصة عبر الإنترنت
  • مهارات شخصية في لعبة
  • الأصول المالية مثل حصة في شركة
  • عملة ورقية مثل الدولار الأمريكي (USD)
  • أوقية من الذهب
  • والمزيد...

يجب التعامل مع هذه الميزة القوية في إيثيريوم بواسطة معيار قوي، أليس كذلك؟ هذا بالضبط هو الدور الذي يلعبه ERC-20! يسمح هذا المعيار للمطورين ببناء تطبيقات رموز مميزة قابلة للتشغيل البيني مع المنتجات والخدمات الأخرى. يُستخدم معيار ERC-20 أيضًا لتوفير وظائف إضافية لـ .

ما هو ERC-20؟

يقدم ERC-20 معيارًا للرموز القابلة للاستبدال، وبعبارة أخرى، تمتلك خاصية تجعل كل رمز مميز مطابقًا تمامًا (في النوع والقيمة) لرمز مميز آخر. على سبيل المثال، يعمل الرمز المميز ERC-20 تمامًا مثل ETH، مما يعني أن رمزًا مميزًا واحدًا يساوي وسيظل دائمًا مساويًا لجميع الرموز المميزة الأخرى.

المتطلبات الأساسية

المحتوى

معيار ERC-20 (طلب تعليقات إيثيريوم 20)، الذي اقترحه فابيان فوغلستيلر في نوفمبر 2015، هو معيار رمز مميز ينفذ واجهة برمجة تطبيقات (API) للرموز المميزة داخل العقود الذكية.

أمثلة على الوظائف التي يوفرها ERC-20:

  • تحويل الرموز المميزة من حساب إلى آخر
  • الحصول على رصيد الرمز المميز الحالي لحساب ما
  • الحصول على إجمالي المعروض من الرمز المميز المتاح على الشبكة
  • الموافقة على ما إذا كان يمكن إنفاق كمية من الرمز المميز من حساب بواسطة حساب طرف ثالث

إذا كان العقد الذكي ينفذ الطرق والأحداث التالية، فيمكن تسميته عقد رمز مميز ERC-20، وبمجرد نشره، سيكون مسؤولاً عن تتبع الرموز المميزة التي تم إنشاؤها على إيثيريوم.

من EIP-20 (opens in a new tab):

الطرق

الأحداث

event Transfer(address indexed _from, address indexed _to, uint256 _value)
event Approval(address indexed _owner, address indexed _spender, uint256 _value)

أمثلة

دعونا نرى كيف أن المعيار مهم جدًا لجعل الأمور بسيطة بالنسبة لنا لفحص أي عقد رمز مميز ERC-20 على إيثيريوم. نحن نحتاج فقط إلى واجهة التطبيق الثنائية للعقد (ABI) لإنشاء واجهة لأي رمز مميز ERC-20. كما ترى أدناه، سنستخدم ABI مبسطًا، لجعله مثالًا سهل الفهم.

مثال Web3.py

أولاً، تأكد من تثبيت مكتبة Python Web3.py (opens in a new tab):

pip install web3

المشكلات المعروفة

مشكلة استقبال الرمز المميز ERC-20

اعتبارًا من 06/20/2024، فُقد ما لا يقل عن $83,656,418 من الرموز المميزة ERC-20 بسبب هذه المشكلة. لاحظ أن تنفيذ ERC-20 النقي عُرضة لهذه المشكلة ما لم تقم بتنفيذ مجموعة من القيود الإضافية فوق المعيار كما هو موضح أدناه.

عندما يتم إرسال الرموز المميزة ERC-20 إلى عقد ذكي غير مصمم للتعامل مع الرموز المميزة ERC-20، يمكن أن تُفقد هذه الرموز المميزة بشكل دائم. يحدث هذا لأن العقد المستلم لا يمتلك الوظيفة للتعرف على الرموز المميزة الواردة أو الاستجابة لها، ولا توجد آلية في معيار ERC-20 لإخطار العقد المستلم بالرموز المميزة الواردة. الطرق الرئيسية التي تتخذها هذه المشكلة هي من خلال:

  1. آلية تحويل الرمز المميز
  • يتم تحويل الرموز المميزة ERC-20 باستخدام دوال التحويل أو التحويل من (transfer أو transferFrom)
    • عندما يرسل المستخدم رموزًا مميزة إلى عنوان عقد باستخدام هذه الدوال، يتم تحويل الرموز المميزة بغض النظر عما إذا كان العقد المستلم مصممًا للتعامل معها
  1. نقص الإشعارات
    • لا يتلقى العقد المستلم إشعارًا أو استدعاءً بأنه تم إرسال رموز مميزة إليه
    • إذا كان العقد المستلم يفتقر إلى آلية للتعامل مع الرموز المميزة (على سبيل المثال، دالة احتياطية أو دالة مخصصة لإدارة استقبال الرموز المميزة)، فإن الرموز المميزة تعلق فعليًا في عنوان العقد
  2. عدم وجود معالجة مدمجة
    • لا يتضمن معيار ERC-20 دالة إلزامية للعقود المستلمة لتنفيذها، مما يؤدي إلى وضع تكون فيه العديد من العقود غير قادرة على إدارة الرموز المميزة الواردة بشكل صحيح

الحلول الممكنة

على الرغم من أنه ليس من الممكن منع هذه المشكلة مع ERC-20 تمامًا، إلا أن هناك طرقًا تسمح بتقليل احتمالية فقدان الرموز المميزة للمستخدم النهائي بشكل كبير:

  • المشكلة الأكثر شيوعًا هي عندما يرسل المستخدم رموزًا مميزة إلى عنوان عقد الرمز المميز نفسه (على سبيل المثال، إيداع USDT في عنوان عقد الرمز المميز USDT). يوصى بتقييد دالة transfer(..) للتراجع عن محاولات التحويل هذه. فكر في إضافة فحص require(_to != address(this)); ضمن تنفيذ دالة transfer(..).
  • دالة transfer(..) بشكل عام ليست مصممة لإيداع الرموز المميزة في العقود. يُستخدم نمط approve(..) & transferFrom(..) لإيداع الرموز المميزة ERC-20 في العقود بدلاً من ذلك. من الممكن تقييد دالة التحويل لعدم السماح بإيداع الرموز المميزة في أي عقود بها، ومع ذلك قد يؤدي ذلك إلى كسر التوافق مع العقود التي تفترض أنه يمكن إيداع الرموز المميزة في العقود باستخدام دالة transfer(..) (على سبيل المثال، مجمعات سيولة يونيسواب).
  • افترض دائمًا أن الرموز المميزة ERC-20 يمكن أن ينتهي بها المطاف في عقدك حتى لو لم يكن من المفترض أن يتلقى عقدك أيًا منها. لا توجد طريقة لمنع أو رفض الإيداعات العرضية من جانب المستلم. يوصى بتنفيذ دالة تسمح باستخراج الرموز المميزة ERC-20 المودعة عن طريق الخطأ.
  • فكر في استخدام معايير رموز مميزة بديلة.

ظهرت بعض المعايير البديلة من هذه المشكلة مثل ERC-223 أو ERC-1363.

قراءة إضافية

معايير الرموز القابلة للاستبدال الأخرى

برامج تعليمية: البناء باستخدام ERC-20 على إيثيريوم