مقارنة ERC20 و ERC223 ومعيار التوكن الجديد Ethereum ERC777
أنت على دراية برموز ERC20 نظرًا لأنك ربما تمتلك زوجين ، يتم توزيعها من خلال نوع من بيع الرموز. لكن هل تعلم أن هناك العديد من المعايير الأخرى بجانب ERC20؟ Ethereum لديها تاريخ طويل من المعايير المتقدمة.
لإعطائك فكرة أفضل عما تعنيه ERC ، فإنها تعني “طلب Ethereum للتعليق”. هذا هو الاقتراح المقدم للمناقشة والاقتراحات للمعيار الفعلي. الرقم (مثل 20) يشير إلى رقم إصدار على منصة مشاركة الكود جيثب. أولاً ، دعونا نلقي نظرة على معيار ERC20.
معيار ERC20
ما هو بالضبط معيار ERC20?
أحدث ظهور رموز ERC20 ثورة في سوق العملات المشفرة وفتح الباب أمام عدد كبير من عملة معماة ICO المشاريع التي شهدها العالم خلال عام 2017. تم تقديم رمز ERC20 في عام 2015 ، ويحدد قائمة محددة من القواعد التي يجب على رمز معين قائم على Ethereum نشره ، مما يبسط عملية برمجة وظائف الرموز على blockchain في Ethereum. في الأساس ، تعتبر الرموز المميزة لـ ERC20 أشكالًا خاصة من العقود الذكية التي تستخدم blockchain في Ethereum.
أبرز الأمثلة على توكنات ERC20 تشمل Bancor و EOS و Tronix و BNB و VeChain و Bankex.
قبل ابتكار معيار ERC20 لرموز Ethereum ، كان على المبرمجين إنشاء معايير تنفيذ محددة لتطوير رمز مميز وإطلاقه على شبكة Ethereum. ومع ذلك ، فإن رمز الرمز المميز ERC20 قد بسط عملية إنشاء الرموز ، وذلك بفضل بروتوكول مبسط ومعايير عقد ذكية. خفف كود ERC20 من التعقيد المرتبط بتنفيذ العقود الذكية للرمز المميز ، مما قلل بشكل كبير من إمكانية كسر عقود الرمز المميز.
اعتبارًا من أبريل 2018 ، هناك 66468 عقدًا رمزيًا لـ ERC20, بفضل توحيد الرمز المميز الذي يوفره معيار ERC20 ، مما جعل من السهل على بورصات العملة المشفرة إدراج الرموز المميزة المختلفة على منصات التداول الخاصة بهم. على هذا النحو ، ساعد معيار ERC20 مجتمع التشفير على التغلب على مشاكل السيولة التي كان من الممكن أن ترتبط بهذا العدد الهائل من الرموز المميزة القائمة على Ethereum.
وظائف رمز ERC20:
يحدد كود ERC20 ست وظائف محددة للرموز المميزة ، وهي
1- الحصول على إجمالي المعروض من التوكنات عن طريق "إجمالي العرض" وظيفة
2- استرداد رصيد التوكن لحساب آخر مرتبط ب "_صاحب" العنوان عبر " BalanceOf (العنوان _المالك) عوائد ثابتة (رصيد uint256)" وظيفة.
3- إرسال عدد محدد من التوكنات "_القيمة" إلى عنوان معين عبر " إرجاع (العنوان _to ، uint256 _value) (نجاح منطقي)" وظيفة.
4- إرسال عدد محدد من التوكنات "_القيمة" من عنوان رمز (عقد) إلى عنوان رمز (عقد) آخر عبر "إرجاع التحويل من (العنوان _from ، العنوان _ إلى ، uint256 _value) (النجاح المنطقي)" وظيفة.
5- تمكين حساب معين من سحب الرموز من حساب الفرد بشكل متكرر ، مع التحديد المسبق للحد الأعلى لمبلغ التوكنات المراد سحبها باستخدام "_القيمة" معامل. يمكن تحقيق ذلك عبر "الموافقة على إرجاع (عنوان _ الإنفاق ، uint256 _value) (نجاح منطقي)". الحد الأعلى للانسحاب ، أي "_القيمة" المعلمة ، يمكن الكتابة فوقها عند استدعاء الوظيفة.
6- إعادة المبلغ المتبقي من التوكنات ضمن المبلغ المحدد مسبقًا المحدد بالحد الأعلى المسموح بإنفاقه بواسطة "_المنفق" للانسحاب من حساب "_صاحب". يمكن تنفيذ ذلك عبر "بدل (العنوان * _المالك * ، العنوان * _ المصروف *) عوائد ثابتة (المتبقي uint256)" وظيفة.
تمثل هذه الوظائف الست المحددة بواسطة رمز ERC20 مشكلات وظيفية أساسية ، والتي تشمل كيفية نقل هذه الرموز المميزة بين الحسابات المختلفة ، وكيف يمكن للمستخدمين استرداد البيانات المرتبطة برمز ERC20 معين. تم تحديد مجموعة الوظائف هذه للتأكد من أن الرموز المميزة المستندة إلى Ethereum ستعمل بشكل مشابه في أي جزء من منصة Ethereum. على هذا النحو ، فإن جميع محافظ العملات المشفرة المتوافقة مع عملة الأثير ستدعم أيضًا الرموز المميزة بناءً على معيار ERC20.
خطأ فادح:
ERC20 هو أول معيار رمزي لإيثريوم. كما هو الحال غالبًا مع الكود الجديد ، فإنه يحتوي على بعض الأخطاء أو الأخطاء المنطقية. يفترض ERC20 طريقتين لإجراء معاملة رمز. بادئ ذي بدء ، تتيح لك وظيفة النقل إرسال الرموز المميزة إلى عنوان شخص ما. إذا كنت تريد إيداع الرموز في عقد ذكي ، فيجب عليك استخدام المجموعة “الموافقة + التحويل من”. يجب أن تفوض هذا العقد لسحب الرموز الخاصة بك عبر وظيفة الموافقة. بعد ذلك ، تحتاج إلى استدعاء وظيفة العقد التي ستتعامل مع إيداعك وسحب الرموز المميزة الخاصة بك عبر وظيفة TransferFrom.
ماذا لو قمت بإيداع الرموز عن طريق الصدفة في عقد مع وظيفة التحويل؟ ستنجح المعاملة ولكن لن يتم التعرف على هذه المعاملة من قبل العقد المستلم. على سبيل المثال ، إذا قمت بإرسال الرموز المميزة إلى عقد صرف لامركزي ، فسيتلقى عقد التبادل الرموز المميزة الخاصة بك ولكنه لن يضاف هذه الرموز إلى رصيد رمز التبادل الخاص بك. علاوة على ذلك ، إذا كان عقد الصرف اللامركزي لا ينفذ وظيفة استخراج الرموز الطارئة ، فمن المستحيل استعادة الرموز المميزة في أي حال ، مما يؤدي إلى خسارة دائمة للرموز. بسبب هذا الخطأ ، فقد النظام البيئي Ethereum ملايين الدولارات بالفعل.
لماذا ما زلنا نستخدم معيار ERC20?
مستخدم Reddit ش / ديكساران, منشئ المعيار ERC223 ، هو أحد المطورين الأوائل الذين أبلغوا المجتمع بالخطأ المذكور أعلاه. سألناه عن سبب استمرار استخدام ERC20 على نطاق واسع ، حتى عند معرفة هذا الخطأ الخطير. وقدم الأسباب التالية:
- بسبب عدم المسؤولية الجنائية لمطوري التوكنات عن أفعالهم.
- لأن مؤسسة Ethereum لا تزال تروج لمعيار الرمز المميز ERC20 حتى عندما يُعرف أنها تحتوي على أخطاء. نفس الوضع الذي كان عليه مع TheDAO سابقًا. هم بحاجة إلى القول "توقف عن هذا الآن" لكنهم لن يفعلوا.
- لأن السبب الرئيسي لتطوير الرمز المميز هو الاستحواذ على الأموال ، بدلاً من إنشاء المنتج.
- لأن استخدام معيار مختلف سيؤدي إلى تأثيرات شبكة أعلى. هذا ليس ما نحتاجه حقًا نظرًا لأن شبكة Ethereum لديها بالفعل مشكلات في قابلية التوسع.
معيار ERC223
ال ERC223 تم اقتراح المعيار بواسطة u / Dexaran الذي ساعد في إنشاء هذه المقالة. ERC223 هو معيار رمزي يسمح لعمليات نقل الرموز بالتصرف تمامًا مثل معاملات الإيثر. يستخدم ERC223 معالجة الحدث (يعتبر المعاملة حدثًا) لمنع فقدان الرموز المميزة في المعاملات غير المعالجة. يعمل هذا المعيار المحسن على حل الخطأ الفادح في ERC20 عن طريق جعل وظيفة التحويل تلقي بخطأ في عمليات النقل غير الصالحة وإلغاء المعاملة حتى لا يتم فقد الأموال. باختصار ، يركز ERC223 على الأمان.
الإضافات والمشاكل
يضيف ERC223 معلمة بيانات إضافية إلى وظيفة النقل ، للسماح بعمليات أكثر تعقيدًا من مجرد نقل رمز.
يتمثل الشاغل الرئيسي لـ Dexaran في أن الكثير من الأشخاص يمكن أن يفقدوا الرموز المميزة الخاصة بهم عن طريق إرسالها إلى العقود باستخدام وظيفة النقل ، وليس طرق الموافقة والتحويل كما تمت مناقشته مسبقًا. يتمثل الحل في تعديل طريقة النقل للتحقق مما إذا كان عنوان الاستلام عقدًا (أي يحتوي على بيانات) أم لا. إذا كان العقد ، فإنه يفترض أن هناك وظيفة tokenFallback لاستدعائها مرة أخرى. تتمثل نقطة الضعف الرئيسية في أنه في حالة عدم وجود الرمز المميز (tokenFallback) ، فسيتم استدعاء الوظيفة الاحتياطية لعقد الاستلام وقد تظل الرموز المميزة المرسلة مفقودة.
معيار ERC777
ERC777 هو معيار رمزي جديد قابل للاستبدال يعتمد على ERC820 (سجل الاستبطان الزائف للعقد) ويحاول حل مشكلات ERC20 ، مثل الافتقار إلى آليات التعامل مع المعاملات التي أدت إلى خسارة ملايين الدولارات من النظام البيئي Ethereum. باختصار ، يركز ERC777 على تبني من خلال تقديم أ مجموعة واسعة من آليات التعامل مع المعاملات.
فوائد
الميزة الرئيسية لـ ERC777 هي أنه يستخدم طريقة جديدة للتعرف على واجهة العقد. يفترض هذا المعيار وجود سجل مركزي للعقود على شبكة Ethereum (تم تعريف هذا في ERC820). يمكن للجميع استدعاء هذا السجل لمعرفة ما إذا كان عنوان معين (لا يهم إذا كان هذا العنوان عقدًا أم لا) يدعم مجموعة معينة من الوظائف ، مثل “الواجهة”.
تتمثل إحدى المشكلات الرئيسية في Ethereum في عدم القدرة على معرفة الوظائف التي ينفذها العقد. يهدف ERC820 إلى حل هذه المشكلة. يستفيد ERC777 من هذا النهج ، وهي بالتأكيد فكرة جيدة.
من ناحية أخرى ، يمكنك إنشاء رمز مميز يقوم بتنفيذ وظائف ERC20 الافتراضية جنبًا إلى جنب مع وظائف ERC777 الجديدة دون تجاوزات (واختياريا ترث خطأ ERC20 الحرج). يمكن أن يضمن ذلك تأثير شبكة جيد لهذا المعيار المميز الجديد واعتماد أسرع. كما تبين الممارسة ، فإن الهدف الرئيسي لمطوري الرموز هو جمع الأموال التي تفترض أنهم بحاجة إلى دفع الرموز المميزة الخاصة بهم إلى البورصات. من السهل على البورصات دعم رمز مميز ينفذ وظائف ERC20 القديمة (لا يهم ما إذا كانت هذه الوظائف تحتوي على أخطاء أم لا) دون أي بحث عن الوظائف الأحدث لمعايير الرمز المميز الجديد. كلما كان من الأسهل على البورصات دعم الرموز المميزة على معيار جديد ، زاد عدد المطورين الذين يستخدمونه. هذا يعزز اعتماد ERC777 ، بينما يفتقر ERC223 إلى هذه الخاصية.
ما هو المختلف?
يحدد معيار الرمز المميز هذا مجموعة جديدة تمامًا من الوظائف ، مثل وظائف “الإرسال” بدلاً من وظائف “النقل”. “AuthoriseOperator” بدلاً من “الموافقة”. دالة معالج `tokensReceived` بدلاً من وظيفة معالج` tokenFallback`.
يمكن لمثل هذا النهج أن يضمن أن وظائف هذا المعيار لن تتقاطع مع وظائف أي معيار رمزي آخر وتتجاوزه ، وبالتالي من الممكن عمل رمز متوافق مع معايير ERC777 و ERC820 في وقت واحد.
أخيرًا ، توحد ERC777 النعناع والحرق وظائف الرموز المميزة.
نقاط الفشل والمخاوف الأمنية
يقوم ERC777 بتنفيذ وظيفة “مشغل التفويض” التي تسمح لشخص ما بإدارة الرموز المميزة نيابة عنك. أوضح لنا Dexaran أنه يعتقد أن هذه الطريقة مهملة ويجب عدم استخدامها. بالإضافة إلى ذلك ، يؤدي السماح لشخص ما بإدارة الرموز نيابة عنك إلى الإضرار بالنطاق الترددي للشبكة ويتطلب مزيدًا من الغاز. يمثل “مشغل التفويض” بالفعل معاملة واحدة ، ويلزم إجراء معاملة أخرى لتنفيذ "سحب مصرح به". لذلك ، يلزم إجراء معاملتين لإجراء تحويل يمكن إجراؤه بمعاملة واحدة فقط.
بعد ذلك ، يحتوي معيار ERC777 على علامة اختيارية لمنع الرموز المميزة المتوقفة عن طريق إجراء بعض عمليات الفحص حول واجهة ITokenRecipient ، وللتحقق مما إذا كان العنوان مدرجًا في القائمة البيضاء. نظرًا لأن هذا المعيار يركز على أمان الشبكة التي تتعامل مع الرموز المميزة التي تبلغ قيمتها ملايين الدولارات ، فليس من الجيد جعل هذه الفحوصات اختيارية.
معايير أخرى
هناك العديد من المعايير الأخرى مثل ERC827 الذي يجمع بين بعض مزايا ERC223 مع وظائف ERC20 القديمة. ال ERC664 يركز المعيار على نمطية معيار الرمز المميز. يسمح هذا المعيار بترقية عقود الرمز المميز ، لكنه ورث خطأ حرجًا في ERC20. تشمل المعايير الأخرى ERC721 و ERC677 و ERC820 ، لكنها أقل شهرة.
التوافق بين المعايير
سألنا Dexaran عن المعايير المتوافقة مع الإصدارات السابقة. أخبرنا أولاً أنه يجب أن نفهم ما يعنيه “التوافق مع الإصدارات السابقة”: “التوافق مع الإصدارات السابقة هو خاصية لنظام أو منتج أو تقنية تسمح بالتشغيل البيني مع نظام قديم قديم ، أو مع مدخلات مصممة لهذا النظام.”
ERC20 & ERC223: الرموز المميزة ERC223 متوافقة مع ERC20. كل ما تم تصميمه للعمل بشكل صحيح مع ERC20 (مثل المحافظ) يمكن أن يعمل مع ERC223 أيضًا. الاستثناء الوحيد هنا هو العقود التي تعتمد على الموافقة + التحويل من أنماط إيداع الرموز. ومع ذلك ، من الممكن تنفيذ وظائف الموافقة + التحويل من خلال الرموز المميزة ERC223 ، حتى لو لم يتم تضمينها في المعيار في الوقت الحالي. بالنسبة للمحافظ وأي خدمات تابعة لجهات خارجية ليست عقودًا ذكية ، فهي تدعم ERC223 تلقائيًا لأن بيانات استدعاء الإدخال الخاصة برمز ERC20 صالحة لـ ERC223.
ERC20 & ERC777: يمكنك العثور على العبارة التالية في قسم “التوافق مع الإصدارات السابقة” من اقتراح ERC777: “لا يقدم برنامج EIP هذا حالات عدم التوافق مع الإصدارات السابقة ويتوافق مع معيار الرمز المميز ERC-20 الأقدم.”
ومع ذلك ، أخبرنا Dexaran بالعكس تمامًا وقدم لنا هذا المثال: “تعمل محافظ وخدمات مثل MetaMask و Mist و MyEtherWallet مع رموز ERC20. المدخلات المصممة لرمز ERC20 عبارة عن استدعاء عقد يحتوي على معلمات مشفرة وتوقيع وظيفة. يتم تحديد استدعاءات الوظائف في Ethereum Virtual Machine بواسطة أول أربعة بايت من البيانات المرسلة مع المعاملة. يتم تعريف هذه التواقيع المكونة من 4 بايت على أنها أول أربعة بايتات من تجزئة التمثيل المتعارف عليه لتوقيع الوظيفة. هذا يعني أن وظيفتي “النقل (العنوان ، uint256)” و “الإرسال (العنوان ، uint256)” سيكون لها توقيعات مختلفة. ونتيجة لذلك ، لن يكون الإدخال المصمم لرمز ERC20 صالحًا لرمز ERC777 “. نظرًا لأننا نستخدم تعريفنا للتوافق مع الإصدارات السابقة ، فإن ERC777 غير متوافق مع معيار الرمز المميز ERC20.
متى تستخدم أي معيار
ERC20: قدم لنا مستخدم Reddit u / Dexaran هذه النصيحة الساخرة ، “عندما تريد أن يخسر مستثمروك المال بسبب الأخطاء.”
ERC223: يمكن أيضًا استخدام معيار الرمز المميز هذا جنبًا إلى جنب مع ERC777. يحتوي ERC777 على بعض الميزات الأنيقة التي يفتقر إليها ERC223 ، ولكن منطق ERC223 مباشر مقارنةً بـ ERC777 والذي يمكن أن يضمن أنه يحتوي على الكثير رمز أقل عرضة للخطأ. علاوة على ذلك ، لا يعتمد ERC223 على أي خدمة مركزية مما يعني أن رمز ERC223 الخاص بك سيعتمد فقط على التنفيذ الخاص بك. كما ذكرنا سابقًا ، يهدف ERC223 إلى تحسين الأمان ، ولكن هذا جعل الرموز المميزة ERC223 غير متوافقة مع معايير ERC20.
ERC777: معيار الرمز المميز هذا قابل للاستخدام بالفعل. من ناحية أخرى ، لدى ERC777 بعض المخاوف الأمنية كما هو مذكور أعلاه. كما أنها تعتمد على سجل العقود المركزي الذي يمثل مصدر قلق أمني أيضًا. يمكن للسجل المركزي أن يجعل حياة المطور أسهل ولكنه يعمل أيضًا كنقطة مركزية للفشل تمامًا كما كان مع Parity Multisig. اعتمدت جميع أشكال Parity Multisigs على مكتبة رموز مركزية. حدث أن كان هناك خلل في المكتبة وتم استغلاله. نتيجة لذلك ، تحطمت جميع Parity Multisigs. بالإضافة إلى ذلك ، يحدد ERC777 مجموعة جديدة من الوظائف. هذه محاولة للسماح لمطوري الرمز المميز بجعل الرموز المميزة الخاصة بهم متوافقة مع معايير ERC20 و ERC777 في وقت واحد من أجل التبني. هذا يعني أنه يمكن للمطور أن يرث خطأ ERC20 في ERC777 ، ولكنه يسمح للمطور باستخدام المزيد من أحداث معالجة المعاملات.
بشكل عام: جميع الرموز لها حالة استخدام مماثلة – ICO. أود أن أقول إن ERC223 و ERC777 يحاولان حل مشكلة واحدة من ERC20 بطرق مختلفة. ERC223 يأخذ مكانته بالفعل في إيثريوم كلاسيك بدلاً من ERC20.
تم إنشاء هذه المقالة بمساعدة Dexaran ، مطور ERC223. تم استخدام بعض تعليقات Paul Edge على معايير الرمز المميز لـ Ethereum أيضًا.