المحتويات
منذ إطلاقها، اجتذبت سلسلة بلوكشين Ethereum المطورين والشركات ورواد الأعمال، مما أدى إلى ظهور مجال متنامي من المستخدمين الذين يطلقون
عقوداً ذكية وتطبيقات موزعة.
في هذه المقالة، سنلقي نظرة على معيار
ERC-20، وهو إطار عمل مهم لإنشاء
الرموز المميزة. على الرغم من أنه خاص بشبكة Ethereum، إلا أن إطار العمل هذا ألهم أيضاً معايير سلاسل البلوكشين الأخرى، مثل
BEP-2 الخاص بسلسلة (بينانس) Binance.
في Ethereum، يُعتبر ERC طلب للتعليقات في Ethereum. وهذه هي الوثائق التقنية التي تحدد معايير البرمجة على Ethereum. ويجب عدم الخلط بينها وبين مقترحات تحسين Ethereum (EIPs)، والتي، مثل BIPs الخاصة بـ Bitcoin، تقترح تحسينات للبروتوكول نفسه. وبدلاً من ذلك، تهدف ERCs إلى إنشاء اتفاقيات تسهل على التطبيقات والعقود التفاعل مع بعضها البعض.
قام فيتاليك بوتيرين وفابيان فوجلستيلر باستحداث ERC-20 عام 2015، ويقترح هذا الرمز المميز تنسيقاً بسيطاً نسبياً للرموز المميزة المستندة إلى Ethereum. وباتباع المخطط التفصيلي، لا يحتاج المطورون إلى البدء من الصفر. بدلاً من ذلك، يمكنهم الاعتماد على أساس مستخدَم بالفعل في هذا المجال.
تجدر الإشارة إلى أن معيار ERC-20 قد تم تطويره إلى EIP (على وجه التحديد، EIP-20). وقد حدث ذلك بعد بضع سنوات من تقديم المقترح الأصلي بسبب انتشار استخدامه على نطاق واسع. ومع ذلك، حتى بعد سنوات، ظل اسم "ERC-20" عالقاً في الأذهان.
على عكس ETH (العملة الرقمية الأصلية لـ Ethereum)، لا يتم الاحتفاظ بالرموز المميزة ERC-20 في الحسابات. الرموز المميزة موجودة فقط داخل عقد، وهو ما يشبه قاعدة بيانات قائمة بذاتها. وتضع قواعد الرموز المميزة (أي الاسم والرمز والقابلية للقسمة) وتحتفظ بقائمة تربط أرصدة المستخدمين بعناوين Ethereum الخاصة بهم.
لنقل الرموز المميزة، يجب على المستخدمين إرسال معاملة إلى العقد مطالباً إياه بتخصيص جزء من رصيده في مكان آخر. على سبيل المثال، إذا أرادت أليس إرسال 5000 BinanceAcademyTokens إلى بوب، فستقوم باستدعاء وظيفة داخل العقد الذكي BinanceAcademyToken تطلب منه القيام بذلك.
يتم تضمين الاستدعاء في ما يبدو أنه معاملة Ethereum عادية تدفع 0 ETH إلى عقد الرمز المميز. ويتم إضافة الاستدعاء في حقل إضافي في المعاملة، والذي يحدد ما تريد أليس فعله – في مثالنا هذا، تحويل الرموز المميزة إلى بوب.
على الرغم من أنها لا ترسل عملة الإيثيريوم، فلا يزال يتعين عليها دفع رسوم محددة بها لإدراج معاملتها في
كتلة ما. وإذا لم يكن لديها أي عملات ETH، فستحتاج إلى الحصول على بعضها قبل تحويل الرموز المميزة.
فيما يلي مثال من الواقع على ما سبق ذكره أعلاه عن Etherscan: شخص ما يقوم بإجراء استدعاء لعقد BUSD. يمكنك أن ترى أنه قد تم تحويل الرموز المميزة ودفع الرسوم، على الرغم من أن حقل القيمة يوضح أنه لم يتم إرسال أي ETH.
الآن نحن بصدد الإسراع، لنلقي نظرة عن كثب لفهم هيكل عقد ERC-20 النموذجي بشكل أفضل.
لكي يكون عقدك متوافقاً مع ERC-20، يجب أن يتضمن ست دوال إلزامية: totalSupply وbalanceOf وtransfer وtransferFrom وapprove وallowance. بالإضافة إلى ذلك، يمكنك تحديد دوال اختيارية، مثل name وsymbol وdecimal. قد يكون من الواضح لك وظائف هذه الدوال من أسمائها. وإذا لم تكن تعرف وظائفها، فلا تقلق – سنقوم بتفصيلها.
فيما يلي الدوال كما تظهر في لغة Solidity المصممة لهذا الغرض من Ethereum.
totalSupply
function totalSupply() public view returns (uint256)
عند استدعائها بواسطة المستخدم، ستقوم الدالة المذكورة أعلاه بإرجاع
المخزون الإجمالي للرموز المميزة الموجودة بالعقد.
balanceOf
function balanceOf(address _owner) public view returns (uint256 balance)
على عكس totalSupply، الدالة balanceOf لها متغير (عنوان). عند استدعائها، تقوم بإرجاع رصيد ممتلكات الرموز المميزة لهذا العنوان. تذكر أن الحسابات على شبكة Ethereum عامة، لذا يمكنك الاستعلام عن رصيد أي مستخدم بشرط أن تعرف عنوانه.
تحويل
function transfer(address _to, uint256 _value) public returns (bool success)
الدالة transfer وظيفتها تحويل الرموز المميزة من مستخدم إلى آخر. هنا، تقوم بإدخال العنوان الذي تريد الإرسال إليه والمبلغ المطلوب تحويله.
عند استدعائها، تقوم الدالة transfer بتشغيل شيء ما يُسمى حدث (حدث التحويل، في هذه الحالة)، والذي يقوم بإخطار سلسلة البلوكشين بشكل أساسي بتضمين إشارة إليه.
transferFrom
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
تُعتبر الدالة transferFrom بديلاً مفيداً من أجل التحويل، وتتيح قدراً أكبر من قابلية البرمجة في التطبيقات اللامركزية. ومثل الدالة transfer، يتم استخدامها لنقل الرموز المميزة، ولكن لا يلزم بالضرورة أن تنتمي هذه الرموز المميزة إلى الشخص الذي يقوم باستدعاء العقد.
بمعنى آخر، يمكنك تفويض شخص ما – أو عقد آخر – لتحويل الأموال نيابةً عنك. إحدى حالات الاستخدام المحتملة هي الدفع مقابل الخدمات القائمة على الاشتراك، حيث لا تريد إرسال دفعة يدوياً كل يوم/أسبوع/شهر. وبدلاً من ذلك، يمكنك فقط السماح للبرنامج بالقيام بهذا نيابةً عنك.
تقوم هذه الدالة بتشغيل نفس الحدث مثل دالة transfer.
approve
function approve(address _spender, uint256 _value) public returns (bool success)
الدالة approve هي إحدى الدوال الأخرى المفيدة من حيث قابلية البرمجة. باستخدام هذه الدالة، يمكنك تحديد عدد الرموز المميزة التي يمكن أن يسحبها العقد الذكي من رصيدك. وبدونها، فإنك تخاطر بتعطل العقد (أو التعرض للاستغلال) وسرقة جميع أموالك.
فيما يلي أحد الأمثلة على نموذج الاشتراك مرة أخرى. لنفترض أن لديك قدراً هائلاً من BinanceAcademyTokens، وتريد إعداد مدفوعات أسبوعية متكررة إلى
التطبيق اللامركزي للبث. وأنت مشغول بقراءة محتوى
أكاديمية Binance ليلاً ونهاراً، لذلك لا ترغب في قضاء الوقت كل أسبوع لإنشاء معاملة يدوياً.
لديك رصيد ضخم من BinanceAcademyTokens، يتجاوز بكثير ما هو مطلوب لدفع ثمن الاشتراك. لمنع التطبيق اللامركزي من استنزاف الرصيد بالكامل، يمكنك تعيين حد باستخدام الدالة approve. لنفترض أن اشتراكك يكلف BinanceAcademyToken واحداً في الأسبوع. إذا حددت القيمة المعتمدة بعشرين رمزاً مميزاً، يمكنك دفع اشتراكك تلقائياً لمدة خمسة أشهر.
في أسوأ الأحوال، إذا حاول التطبيق اللامركزي سحب كل أموالك أو إذا تم العثور على خطأ، ستخسر عشرين رمزاً مميزاً فقط. قد لا يكون الأمر مثالياً، ولكنه بالتأكيد أفضل من خسارة كل ممتلكاتك.
عند استدعائها، تقوم الدالة approve بتشغيل حدث الموافقة. ومثل حدث التحويل، ستقوم بكتابة البيانات في سلسلة البلوكشين.
allowance
function allowance(address _owner, address _spender) public view returns (uint256 remaining)
يمكن استخدام الدالة
allowance بالتزامن مع الدالة
approve. عند منحك إذن عقد لإدارة
الرموز المميزة الخاصة بك، يمكنك استخدام هذا الإذن للتحقق من عدد الرموز المميزة التي لا يزال بإمكانك سحبها. على سبيل المثال، إذا استهلك اشتراكك اثني عشر رمزاً مميزاً من الرموز المميزة العشرين المعتمدة الخاصة بك، فعند استدعاء الدالة
allowance، ستعمل على إرجاع ثمانية رموز مميزة إجمالاً.
الدوال الاختيارية
الدوال التي تمت مناقشتها مسبقاً هي دوال إلزامية. من ناحية أخرى، لا يلزم تضمين الدوال name وsymbol وdecimal، ولكن يمكن لهذه الدوال جعل عقد ERC-20 أفضل قليلاً. يسمح استخدام هذه الدوال على التوالي بإضافة اسم يمكن قراءته، وتعيين رمز (على سبيل المثال، ETH أو BTC أو BNB)، وتحديد عدد رموز المنازل العشرية التي يمكن قسمتها. على سبيل المثال، قد تستفيد الرموز المميزة المستخدمة كعملات أكثر من كونها قابلة للقسمة أكثر من الرمز المميز الذي يمثل ملكية عقار.
تحقق من
هذا المثال على GitHub لرؤية هذه العناصر في عقد حقيقي.
من خلال تجميع جميع الدوال المذكورة أعلاه، يصبح لدينا عقد ERC-20. يمكننا الاستعلام عن
المخزون الإجمالي، والتحقق من الأرصدة وتحويل الأموال ومنح أذونات إلى
التطبيقات اللامركزية الأخرى لإدارة الرموز المميزة الخاصة بنا.
جزء كبير من جاذبية الرموز المميزة ERC-20 يتمثل في مرونتها. لا تقيد الاتفاقيات المنصوص عليها تطويرها، لذلك يمكن للأطراف تنفيذ ميزات إضافية وتعيين متغيرات محددة لتناسب احتياجاتهم.
العملات المستقرة
غالباً ما تستخدم
العملات المستقرة (الرموز المميزة المرتبطة بـ
العملات المحلية المعتمدة) معيار الرمز المميز ERC-20. وتُعتبر المعاملة الخاصة بعقد BUSD التي أشرنا إليها سابقاً أحد الأمثلة على ذلك، وتتوفر أيضاً معظم العملات المستقرة الرئيسية بهذا التنسيق.
بالنسبة لعملة مستقرة نموذجية مدعومة بالعملة المحلية المعتمدة، تحتفظ جهة الإصدار باحتياطيات من اليورو والدولار وغيرها من العملات. ثم، تقوم بإصدار رمز مميز لكل وحدة في الاحتياطيات. وهذا يعني أنه إذا تم قفل 10000 دولار في خزينة، يمكن لجهة الإصدار إنشاء 10000 رمز مميز، كل منها قابل للاسترداد مقابل دولار واحد.
يُعتبر هذا سهل التنفيذ في Ethereum، من الناحية الفنية. تُطلق جهة الإصدار ببساطة عقداً به 10000 رمز مميز. بعد ذلك، ستقوم بتوزيعها على المستخدمين مع وعد بإمكانية استرداد الرموز المميزة لاحقاً مقابل كمية متناسبة من العملة المحلية المعتمدة.
يمكن للمستخدمين القيام بعدد من الأشياء باستخدام الرموز المميزة الخاصة بهم – يمكنهم شراء السلع والخدمات أو استخدامها في التطبيقات اللامركزية. بدلاً من ذلك، يمكنهم مطالبة جهة الإصدار بتداولها على الفور. وفي هذه الحالة، تقوم جهة الإصدار
بحرق الرموز المميزة المرتجعة (مما يجعلها غير قابلة للاستخدام) وسحب الكمية الصحيحة من العملات المحلية المعتمدة من الاحتياطيات.
العقد الذي يحكم هذا النظام، كما ذكرنا سابقاً، بسيط نسبياً. ومع ذلك، فإن إطلاق عملة مستقرة يتطلب الكثير من العمل على العوامل الخارجية مثل الخدمات اللوجستية والالتزام باللوائح التنظيمية وما إلى ذلك.
رموز الأوراق المالية
الرموز المميزة للأوراق المالية تشبه العملات المستقرة. على مستوى العقد، يمكن أن يكون كلاهما متطابقاً لأنهما يعملان بنفس الطريقة. ويكون التمييز على مستوى جهة الإصدار. تمثل الرموز المميزة الأوراق المالية، مثل الأسهم أو السندات أو الأصول المادية. وفي كثير من الأحيان (على الرغم من أن هذا ليس هو الحال دائماً)، فإنها تمنح المالك نوعاً من الحصة في شركة أو سلعة.
رموز الخدمة
ربما تكون الرموز المميزة للخدمات هي أكثر أنواع الرموز المميزة شيوعاً الموجودة اليوم. وعلى عكس العرضين السابقين، فإنها غير مدعومة بأي شيء. إذا كانت الرموز المميزة المدعومة بالأصول مثل الأسهم في شركة طيران، فإن الرموز المميزة للخدمات تشبه برامج المسافر الدائم: فهي تخدم وظيفة معينة، لكن ليس لها قيمة خارجية. يمكن أن تلبي الرموز المميزة للخدمات عدداً لا يحصى من حالات الاستخدام، حيث تعمل
بمثابة عملة داخل اللعبة، ووقوداً للتطبيقات اللامركزية ونقاط برامج الولاء، وغيرها الكثير.
يمكنك تعدين عملة الإيثيريوم (ETH)، لكن الرموز المميزة ليست قابلة للتعدين – بمعنى أنه يتم سكها عند إنشاء رموز مميزة جديدة. عند إطلاق العقد، يقوم المطورون بتوزيع المخزون وفقاً للخطط وخارطة الطريق الخاصة بهم.
عادةً، يتم ذلك عبر
الطرح الأولي للعملة (ICO) أو
الطرح الأولي للتبادل (IEO)، أو طرح الرمز المميز للأوراق المالية (STO). قد تصادف اختلافات في هذه الاختصارات، لكن هذه المفاهيم متشابهة تماماً. يُرسل المستثمرون عملة الإيثيريوم إلى عنوان العقد ويتلقون في المقابل رموزاً مميزة جديدة. ويتم استخدام الأموال التي تم جمعها لتمويل مزيد من التطوير في المشروع. يتوقع المستخدمون أن يتمكنوا من استخدام الرموز المميزة الخاصة بهم (إما على الفور أو في وقت لاحق) أو إعادة بيعها لتحقيق ربح مع تطور المشروع.
توزيع الرمز المميز بشكل تلقائي ليس إلزامياً. تسمح العديد من أحداث التمويل الجماعي للمستخدمين بالدفع بمجموعة من العملات الرقمية المختلفة (مثل BNB وBTC وETH وUSDT). ثم يتم تخصيص الأرصدة ذات الصلة إلى العناوين المقدمة من قِبل المستخدمين.
مزايا الرموز المميزة ERC-20
قابل للتبادل
الرموز المميزة ERC-20
قابلة للتبادل – كل وحدة قابلة للتبديل بأخرى. إذا كان لديك BinanceAcademyToken، فلن يكون الرمز المميز المحدد لديك مهماً. يمكنك تداوله مقابل رمز مميز خاص بشخص آخر، وستظل هذه الرموز المميزة متطابقة وظيفياً، تماماً مثل النقود أو الذهب.
هذا مثالي إذا كان الرمز المميز الخاص بك يهدف إلى أن يكون عملة من نوع ما. لن ترغب في وحدات فردية ذات سمات مميزة، مما يجعلها غير قابلة للتبادل. قد يتسبب هذا في أن تصبح بعض الرموز المميزة أكثر – أو أقل – قيمة من غيرها، مما يقوض الغرض منها.
مرن
كما اكتشفنا في القسم السابق، فإن الرموز المميزة ERC-20 قابلة للتخصيص بدرجة كبيرة ويمكن تصميمها للعديد من التطبيقات المختلفة. على سبيل المثال، يمكن استخدامها كعملة داخل اللعبة، أو في برامج نقاط الولاء، أو
كعناصر رقمية قابلة للتجميع، أو حتى لتمثيل الفنون الجميلة وحقوق الملكية.
شائع
تُعد شعبية ERC-20 في مجال العملات الرقمية سبباً مقنعاً للغاية لاستخدامه كمخطط أولي. هناك عدد كبير من منصات التداول والمحافظ والعقود الذكية المتوافقة بالفعل مع الرموز المميزة التي تم إطلاقها حديثاً. والأكثر من ذلك، دعم المطور والوثائق متوفرة بكثرة.
عيوب الرموز المميزة ERC-20
قابلية التوسع
كما هو الحال مع العديد من شبكات العملات الرقمية، فإن Ethereum ليست محصنة ضد متاعب التطور. وفي شكلها الحالي، لا يتسع نطاقها بشكل جيد – تؤدي محاولة إرسال معاملة في أوقات الذروة إلى ارتفاع الرسوم والتأخير. إذا قمت بتشغيل الرمز المميز ERC-20 وأصبحت الشبكة مزدحمة، فقد تتأثر قابليتها للاستخدام.
هذه ليست مشكلة حصرية في Ethereum. ولكنها تُعتبر جانباً سلبياً ضرورياً في أنظمة آمنة وموزعة. يخطط المجتمع لمعالجة هذه المشكلات عند الانتقال إلى
Ethereum 2.0، والذي سيُنفذ ترقيات مثل
تحجيم Ethereum و
Ethereum Casper.
عمليات الاحتيال
على الرغم من عدم وجود مشكلة في التقنية نفسها، إلا أن السهولة التي يمكن بها إطلاق الرمز المميز يمكن اعتبارها جانباً سلبياً في بعض النواحي. لا يتطلب الأمر سوى القليل من الجهد لإنشاء رمز مميز ERC-20 بسيط، مما يعني أنه يمكن لأي شخص القيام بذلك – سواء كان ذلك لأغراض جيدة أو سيئة.
كان ERC-20 هو المعيار الأول (والأكثر شيوعاً حتى الآن) للرموز المميزة في Ethereum، ولكنه ليس المعيار الوحيد بأي حال من الأحوال. وعلى مر السنين، ظهرت العديد من الرموز المميزة الأخرى، إما لاقتراح تحسينات على ERC-20 أو محاولة تحقيق أهداف مختلفة تماماً.
بعض المعايير الأقل شيوعاً هي تلك المستخدمة في
الرموز غير القابلة للتبادل (NFTs). في بعض الأحيان، تستفيد حالة الاستخدام الخاصة بك فعلياً من وجود رموز مميزة ذات سمات مختلفة. إذا كنت ترغب في ترميز قطعة فنية فريدة من نوعها، أو أصل داخل اللعبة، وما إلى ذلك، فقد يكون أحد أنواع العقود هذه أكثر جاذبية بالنسبة لك.
على سبيل المثال، تم استخدام معيار
ERC-721 في التطبيق اللامركزي CryptoKitties ذي الشعبية الهائلة. يوفر هذا العقد
واجهة برمجة التطبيق للمستخدمين لسك الرموز المميزة غير القابلة للتبادل الخاصة بهم وتشفير
البيانات الوصفية (الصور والأوصاف وما إلى ذلك).
يمكن اعتبار معيار ERC-1155 بمثابة تحسين لكل من ERC-721 وERC-20؛ حيث يحدد المعيار الذي يدعم كلاً من الرموز القابلة للتبادل وغير القابلة للتبادل في نفس العقد.
تهدف الخيارات الأخرى مثل ERC-223 أو ERC-621 إلى تحسين إمكانية الاستخدام. يطبق المعيار الأول ضمانات لمنع عمليات تحويل الرموز المميزة العرضية. بينما يضيف الأخير وظائف إضافية لزيادة وتخفيض مخزون الرموز المميزة.
هيمن معيار ERC-20 على مجال أصول العملات الرقمية لسنوات، وليس من الصعب معرفة السبب. بسهولة نسبية، يمكن لأي شخص نشر عقد بسيط ليناسب مجموعة واسعة من حالات الاستخدام (الرموز المميزة للخدمات والعملات المستقرة، وما إلى ذلك). ومع ذلك، يفتقر ERC-20 إلى بعض الميزات التي ظهرت على الساحة من خلال معايير أخرى. ويتبقى أن نرى ما إذا كانت الأنواع اللاحقة من العقود ستأخذ مكانها أم لا.