شراء العملات المشفرة
الأسواق
العقود الفورية
العقود الآجلةBTC
مدخرات
مركز الأحداث
مركز المكافآت
المزيد
مهرجان صفر رسوم
واجهة ERC-721: ما واجهة ERC-721؟واجهة ERC-721 مجموعة معيارية من دوال العقود الذكية وأحداثها، تُستخدم لتمثيل التوكنات غير القابلة للاستبدال ونقلها على Ethereum وشبكات البلوكشين المتوافقة معها.يمثل التوكن غير القابل لواجهة ERC-721: ما واجهة ERC-721؟واجهة ERC-721 مجموعة معيارية من دوال العقود الذكية وأحداثها، تُستخدم لتمثيل التوكنات غير القابلة للاستبدال ونقلها على Ethereum وشبكات البلوكشين المتوافقة معها.يمثل التوكن غير القابل ل

واجهة ERC-721

2026/10/13 15:31
#Advanced
Humanity
H$0.05665-2.69%
PX
PX$0.0111-1.76%
AINFT
NFT$0.0000002364-0.25%
TokenFi
TOKEN$0.001859-3.52%
SynFutures
F$0.00298-4.02%

ما واجهة ERC-721؟

واجهة ERC-721 مجموعة معيارية من دوال العقود الذكية وأحداثها، تُستخدم لتمثيل التوكنات غير القابلة للاستبدال ونقلها على Ethereum وشبكات البلوكشين المتوافقة معها.

يمثل التوكن غير القابل للاستبدال (NFT) توكنًا محددًا وفريدًا، لا كمية قابلة للاستبدال من وحدات متماثلة.

تحدد مواصفات ERC-721 الرسمية كيفية تحقق المحافظ والتطبيقات والعقود الذكية وأدوات البلوكشين من ملكية NFT وإجراء تحويلات معيارية.

لا تحدد الواجهة ما الذي يمثله NFT، أو قيمته، أو ما إذا كان المحتوى المرتبط به أصليًا.

بل تحدد لغة تقنية مشتركة يمكن لتطبيقات العملات المشفرة المختلفة استخدامها عند التعامل مع عقود NFT.

وصل معيار ERC-721 إلى الحالة النهائية ضمن عملية مقترحات تحسين Ethereum، وما زال أحد المعايير الرئيسية للأصول الفريدة على البلوكشين.

يمكن استخدام ERC-721 للمقتنيات الرقمية، وعناصر الألعاب، وبيانات العضوية، والأراضي الافتراضية، وتذاكر الفعاليات، والأصول الشبيهة بالنطاقات، والمراكز المالية، والسجلات المرمزة.

لماذا تُعد الواجهة مهمة؟

تصف واجهة العقد الذكي الدوال والأحداث الخارجية التي تتوقع البرامج المتوافقة أن يوفرها العقد.

من دون واجهة مشتركة، قد يستخدم كل مشروع NFT أسماء دوال وقواعد تحويل مختلفة.

وعندها ستحتاج المحافظ والتطبيقات اللامركزية إلى تعليمات برمجية مخصصة لكل مجموعة.

تتيح واجهة ERC-721 للبرامج استدعاء دوال مألوفة مثل

ownerOf
و
balanceOf
و
approve
و
safeTransferFrom
.

كما توحد الأحداث التي تتيح للأنظمة خارج السلسلة تتبع تحويلات NFT والموافقات.

يمكن للعقد إضافة دوال أخرى إلى جانب ERC-721 مع الحفاظ على توافقه مع المعيار الأساسي.

يحسن التوافق مع الواجهة التشغيل البيني، لكنه لا يضمن أمان العقد أو دعم كل تطبيق لميزاته المخصصة.

ما الذي يجعل توكن ERC-721 غير قابل للاستبدال؟

يملك كل توكن ERC-721 رقمًا صحيحًا غير موقّع وفريدًا يسمى معرّف التوكن.

يُحدد التوكن بالكامل من خلال الجمع بين شبكة البلوكشين وعنوان العقد ومعرّف التوكن.

لا صلة لمعرّف التوكن 100 في عقد ما بمعرّف التوكن 100 في عقد آخر.

لا يشترط المعيار أن تبدأ معرّفات التوكنات من الصفر، أو أن تزيد بالتتابع، أو أن تتبع نمطًا متوقعًا.

ينبغي للتطبيقات التعامل مع كل معرّف توكن بوصفه معرّفًا غير تفسيري، بدلًا من تخمين معرّفات التوكنات الموجودة.

لكل معرّف توكن صالح مالك واحد في كل مرة وفق نموذج الملكية الأساسي في ERC-721.

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

معرّف واجهة ERC-721 الأساسية

يُعرّف ERC-165 واجهة ERC-721 الأساسية بالقيمة

0x80ac58cd
.

ينبغي للعقد المتوافق أن يعيد

true
عند استدعاء
supportsInterface
بهذا المعرّف.

يحسب معيار كشف الواجهات ERC-165 معرّف الواجهة عبر تطبيق عملية XOR على محددات الدوال المضمنة في تلك الواجهة.

يتيح ERC-165 للتطبيق سؤال العقد عن الواجهات المعيارية التي يزعم دعمها قبل محاولة التفاعل معه.

تفيد الاستجابة الإيجابية في التحقق من التوافق، لكنها لا تثبت بصورة مستقلة أن كل دالة منفذة على نحو صحيح.

قد تحتاج التطبيقات التي تتعامل مع أصول ذات قيمة أيضًا إلى مراجعة التعليمات البرمجية والاختبار ومحاكاة المعاملات.

الدوال الأساسية لواجهة ERC-721

تتضمن واجهة ERC-721 المطلوبة استعلامات الملكية ودوال التحويل وإدارة الموافقات.

تشمل الدوال الرئيسية

balanceOf
و
ownerOf
و
safeTransferFrom
و
transferFrom
و
approve
و
setApprovalForAll
و
getApproved
و
isApprovedForAll
.

يجب أن يتبع التنفيذ المتوافق السلوك المطلوب في المعيار، بما في ذلك عمليات التحقق من التفويض وشروط الفشل.

لا تحدد الواجهة الأساسية بالكامل السك والحرق والإتاوات وحدود المعروض والتسعير وإدارة المجموعة.

تضيف المشاريع عادةً منطقًا منفصلًا لهذه الميزات.

دالة balanceOf

تعيد الدالة

balanceOf
عدد NFTs التي يملكها عنوان ما ضمن عقد ERC-721 واحد.

ولا تعيد كمية توكنات قابلة للتجزئة أو القيمة المالية لـ NFTs.

إذا كان عنوان يملك معرّفات التوكن 4 و19 و83 من المجموعة نفسها، فرصيده ثلاثة.

يشترط المعيار أن يفشل الاستعلام عن العنوان الصفري.

لا تكشف الدالة معرّفات التوكنات المحددة التي يملكها العنوان.

قد يتطلب العثور على هذه المعرّفات فهرسة أحداث التحويل أو استخدام واجهة التعداد الاختيارية.

دالة ownerOf

تعيد الدالة

ownerOf
المالك الحالي لمعرّف توكن محدد.

يجب ألا يكون المالك المعاد هو العنوان الصفري إذا كان التوكن موجودًا.

يجب أن يفشل الاستعلام عن توكن غير صالح أو غير موجود بموجب المعيار.

تتحكم الملكية المسجلة في العقد في حقوق التحويل الأساسية المرتبطة بذلك الـ NFT.

لكنها لا تثبت بالضرورة ملكية حقوق الطبع والنشر أو العلامات التجارية أو الممتلكات المادية أو الحقوق القانونية الأخرى.

تعتمد هذه الحقوق على اتفاقية المشروع والقانون المعمول به والسجلات الخارجية.

دالة transferFrom

تنقل الدالة

transferFrom
NFT من عنوان إلى آخر بعد التحقق من التفويض والملكية.

يجب أن يكون المستدعي المالك أو العنوان المحدد الذي حصل على الموافقة أو مشغّلًا معتمدًا من المالك.

يجب أن يطابق عنوان

from
المالك الحالي لـ NFT.

لا يجوز أن يكون المستلم هو العنوان الصفري.

لا تشترط هذه الدالة أن يؤكد العقد الذكي المستلم قدرته على التعامل مع NFTs.

قد يصبح NFT المرسل باستخدام

transferFrom
إلى عقد غير متوافق غير قابل للوصول نهائيًا.

ينبغي للمستخدمين والمطورين عمومًا تفضيل التحويل الآمن عند إرسال NFT إلى عقد غير معروف.

دوال safeTransferFrom

يحدد ERC-721 نسختين محملتين فوقيًا من

safeTransferFrom
.

تتضمن إحدى النسختين المرسل والمستلم ومعرّف التوكن.

وتضيف النسخة الأخرى حقل bytes يمكنه حمل بيانات خاصة بالتطبيق.

تجري كلتا الدالتين عمليات التحقق المعتادة من الملكية والتفويض.

إذا كان المستلم عقدًا ذكيًا، تستدعي عملية التحويل

onERC721Received
في ذلك العقد.

يجب أن يعيد المستلم المحدد الصحيح، وإلا تُلغى عملية التحويل بأكملها.

يقلل هذا التحقق من المستلم احتمال إرسال NFT إلى عقد لا يستطيع إدارته.

لكنه لا يثبت موثوقية العقد المستلم أو إمكانية سحب NFT منه لاحقًا.

ما IERC721Receiver؟

IERC721Receiver
هي الواجهة التي يطبقها العقد الذكي عندما يريد قبول NFTs عبر
safeTransferFrom
.

الدالة المطلوبة فيها هي

onERC721Received
.

تتلقى الدالة المشغّل والمالك السابق ومعرّف التوكن والبيانات الاختيارية.

يعيد المستلم الناجح محدد دالته، والذي يُمثّل عادةً بالقيمة

0x150b7a02
.

تؤدي القيمة المعادة غير الصحيحة أو إلغاء الاستدعاء إلى فشل التحويل الآمن.

يتضمن توثيق تنفيذ ERC-721 الحالي واجهة للمستلم وأداة أساسية للاحتفاظ بالتوكنات، للعقود التي تحتاج إلى قبول التحويلات الآمنة.

ينبغي للمستلم التحقق من عقد NFT الذي استدعاه قبل استخدام الاستدعاء الراجع لتحديث محاسبة مهمة.

مخاطر الاستدعاء الراجع لمستلم ERC-721

ينشئ التحويل الآمن إلى عقد استدعاءً خارجيًا لذلك المستلم.

يمكن للمستلم تنفيذ تعليمات برمجية إضافية قبل اكتمال المعاملة الأصلية.

يؤدي ذلك إلى احتمال إعادة الدخول إذا لم يكن التطبيق المرسل قد أكمل تحديثاته الداخلية للحالة.

قد يحاول مستلم خبيث استدعاء دالة أخرى في العقد الأصلي أثناء الاستدعاء الراجع.

يوصي دليل أمن العقود الذكية في Solidity بإكمال عمليات التحقق والتغييرات المهمة في الحالة قبل التفاعلات الخارجية، عندما يسمح التصميم المقصود بذلك.

ينبغي للمطورين اختبار تحويلات NFT الآمنة باستخدام عقود مستلمة خبيثة بدلًا من افتراض أن الاستدعاء الراجع غير ضار.

دالة approve

تمنح الدالة

approve
عنوانًا واحدًا صلاحية تحويل NFT محددًا.

يمكن عادةً لمالك التوكن أو لمشغّل مفوض منح هذه الموافقة.

لا يصبح العنوان الموافق عليه مالكًا.

بل يحصل على صلاحية نقل معرّف التوكن المحدد.

تُزال الموافقة الخاصة بتوكن معين عمومًا عند نقل NFT.

يمكن أن يؤدي استدعاء

approve
بالعنوان الصفري إلى إلغاء موافقة قائمة.

ينبغي للمستخدمين التحقق من العنوان الموافق عليه، إذ يستطيع المهاجم الذي لديه موافقة صالحة نقل NFT دون توقيع آخر من المالك.

دالة getApproved

تعيد الدالة

getApproved
العنوان الموافق عليه حاليًا لمعرّف توكن واحد.

إذا لم يوجد عنوان حاصل على موافقة خاصة بالتوكن، فتعيد عادةً العنوان الصفري.

تنطبق الدالة على NFT صالح وموجود فقط.

ولا تعرض موافقة المشغّل التي تشمل رصيد المجموعة بالكامل لدى المالك.

ينبغي للتطبيقات أيضًا التحقق من

isApprovedForAll
عند تحديد ما إذا كان عنوان آخر قادرًا على نقل التوكن.

دالة setApprovalForAll

تفوض الدالة

setApprovalForAll
مشغّلًا أو تلغي تفويضه بشأن كل توكنات ERC-721 التي يملكها المستدعي ضمن ذلك العقد.

يمكن للمشغّل المفوض نقل NFTs الموجودة وما يستلمه المالك لاحقًا من المجموعة نفسها.

هذه الصلاحية أوسع من الموافقة على معرّف توكن واحد.

تُستخدم عادةً عندما يحتاج التطبيق إلى إدارة عدة NFTs دون طلب موافقة منفصلة لكل واحد منها.

يمكن لمشغّل خبيث نقل كل NFTs المتأثرة ما دامت الصلاحية سارية.

ينبغي للمحافظ عرض عنوان المجموعة ونطاق موافقة المشغّل بوضوح.

دالة isApprovedForAll

تعرض الدالة

isApprovedForAll
ما إذا كان للمشغّل صلاحية على مستوى المجموعة كلها لحساب مالك معين.

وتعيد قيمة منطقية لا كمية توكنات.

تنطبق صلاحية المشغّل على عقد ERC-721 الذي منحها فقط.

لا تنطبق الموافقة في مجموعة NFT واحدة تلقائيًا على مجموعة أخرى.

ينبغي للمستخدمين مراجعة صلاحيات المشغّلين النشطة دوريًا وإلغاء ما لم يعودوا بحاجة إليه.

أحداث ERC-721

تحدد واجهة ERC-721 الأساسية أحداث

Transfer
و
Approval
و
ApprovalForAll
.

تتيح سجلات الأحداث هذه للمحافظ والمفهرسات وأنظمة التحليلات ومستكشفي البلوكشين تتبع أنشطة NFT المعيارية.

تساعد الأحداث البرامج خارج السلسلة على إعادة بناء سجل الملكية والصلاحيات.

يُعد حدث العقد دليلًا على ما أصدره العقد أثناء التنفيذ، لكن ينبغي للتطبيقات مع ذلك التأكد من نجاح المعاملة وصدورها عن العقد المتوقع.

حدث Transfer

يسجل حدث

Transfer
المالك السابق والمالك الجديد ومعرّف التوكن.

تتضمن التحويلات العادية عناوين غير صفرية للمرسل والمستلم.

يُمثّل السك عادةً بإصدار حدث تحويل من العنوان الصفري إلى المالك الأول.

ويُمثّل الحرق عادةً بإصدار حدث تحويل من المالك إلى العنوان الصفري.

لا تحدد واجهة ERC-721 دوالًا عامة للسك أو الحرق، رغم أن أنماط الأحداث هذه تدعم تتبع دورة حياة التوكن.

لا يثبت حدث يشير إلى سك NFT أن للمجموعة معروضًا ثابتًا أو أن صلاحيات السك محدودة.

حدث Approval

يسجل حدث

Approval
الموافقة على معرّف توكن واحد.

ويحدد المالك والعنوان الموافق عليه ومعرّف التوكن.

يمكن للتطبيقات استخدامه لتتبع التغييرات في صلاحية نقل توكن محدد.

ينبغي عدم الخلط بين هذا الحدث ونقل الملكية، إذ يظل المالك كما هو.

حدث ApprovalForAll

يسجل حدث

ApprovalForAll
ما إذا كان المالك قد فعّل مشغّلًا أو عطّله.

ويتضمن المالك والمشغّل وحالة الموافقة.

تكتسب مراقبة هذا الحدث أهمية لأن موافقة واحدة للمشغّل قد تشمل كل NFTs التي يملكها الشخص في تلك المجموعة.

لا يؤدي حدث إلغاء التفويض إلى التراجع عن عمليات النقل التي تمت أثناء سريان الصلاحية.

واجهة البيانات الوصفية الاختيارية في ERC-721

يضيف امتداد البيانات الوصفية الدوال

name
و
symbol
و
tokenURI
.

معرّف واجهته في ERC-165 هو

0x5b5e139f
.

هذا الامتداد اختياري وفق المواصفات الرسمية، مع أن كثيرًا من عقود NFT تطبقه.

تعيد الدالة

name
الاسم الوصفي للمجموعة.

تعيد الدالة

symbol
معرّفًا مختصرًا يختاره مطور العقد.

تعيد الدالة

tokenURI
معرّف URI المرتبط بمعرّف توكن محدد.

أسماء المجموعات ورموزها ليست فريدة، لذا لا ينبغي استخدامها وحدها للتحقق من الأصالة.

كيف تعمل tokenURI

تشير الدالة

tokenURI
عادةً إلى مستند بيانات وصفية بتنسيق JSON.

قد يتضمن المستند حقولًا مثل الاسم المعروض والوصف وموقع الصورة والرسوم المتحركة والسمات الخاصة بالمشروع.

يمكن أن يستخدم URI عنوان HTTPS أو معرّف محتوى لامركزيًا أو URI لبيانات على السلسلة.

يسمح معيار ERC-721 الرسمي بإمكانية تغيير البيانات الوصفية.

وهذا يعني أن المحتوى المعروض لـ NFT قد يتغير بعد السك ما لم يوفر العقد أو المشروع ضمانات أقوى لعدم القابلية للتغيير.

يشير دليل تطوير ERC-721 الحالي إلى أن الطرف الذي يتحكم في موقع التخزين قد يغير البيانات الوصفية خارج السلسلة.

لا تضمن ملكية التوكن تلقائيًا استمرار توفر صورة أو ملف خارجي إلى الأبد.

واجهة التعداد الاختيارية في ERC-721

يتيح امتداد التعداد للتطبيقات اكتشاف معرّفات التوكنات عبر استعلامات على السلسلة.

معرّف واجهته في ERC-165 هو

0x780e9d63
.

ويضيف الدوال

totalSupply
و
tokenByIndex
و
tokenOfOwnerByIndex
.

تعيد الدالة

totalSupply
عدد التوكنات الصالحة حاليًا التي يتتبعها العقد.

تتيح دوال الفهرسة للمتصلين استرجاع معرّفات التوكنات من إجمالي المعروض أو من حيازات مالك واحد.

التعداد اختياري، لأن الحفاظ على فهارس ملكية إضافية يزيد عمليات الكتابة إلى التخزين واستهلاك الغاز.

تعيد تطبيقات كثيرة بناء حيازات NFT بدلًا من ذلك من أحداث

Transfer
عبر الفهرسة خارج السلسلة.

السك والحرق

لا تشترط واجهة ERC-721 الأساسية توفير دالة سك عامة.

يحدد كل مشروع ما إذا كان السك مفتوحًا أو مقيدًا أو مجدولًا أو محددًا بسقف أو معطلًا نهائيًا.

كما لا يشترط المعيار توفير دالة حرق عامة.

يزيل الحرق التوكن من سجلات الملكية الصالحة وفقًا لتنفيذ العقد.

ينبغي للمستخدمين التحقق ممن يستطيع سك NFTs أو حرقها، وما إذا كان بإمكان المسؤول التأثير في التوكنات التي تحتفظ بها حسابات أخرى.

لا يثبت توافق واجهة التحويل أن معروض التوكن ثابت.

واجهة ERC-721 مقارنةً بتنفيذ ERC-721

تحدد الواجهة السلوك الخارجي اللازم للتوافق.

أما التنفيذ فيتضمن منطق التخزين والتفويض والتحويل والسك والبيانات الوصفية والإدارة الفعلي.

يمكن لعقدين دعم واجهة ERC-721 نفسها مع استخدام تصميمين داخليين مختلفين تمامًا.

قد يكون أحد التنفيذات غير قابل للتغيير، فيما قد يعمل آخر عبر وكيل قابل للترقية.

قد يكون لأحدهما معروض ثابت، فيما يسمح آخر للمسؤول بالسك بلا حد.

قد يخزّن أحدهما البيانات الوصفية على السلسلة، فيما يشير آخر إلى خادم قابل للتغيير.

ينبغي للمستخدمين مراجعة التنفيذ بدلًا من اعتبار دعم الواجهة تقييمًا أمنيًا كاملًا.

ERC-721 مقارنةً بـ ERC-20

يمثل ERC-20 أرصدة قابلة للاستبدال، بينما يمثل ERC-721 توكنات محددة كلٌّ منها على حدة.

يمكن لحساب ERC-20 امتلاك كمية قابلة للتجزئة مثل 250 وحدة.

أما حساب ERC-721 فيمتلك عددًا من معرّفات التوكنات المميزة.

تعرض الدالة

balanceOf
في ERC-721 عدد NFTs التي يملكها الحساب، لا كمية من معرّف توكن واحد.

لا يتطلب ERC-721 حقلًا للمنازل العشرية، لأن كل توكن يُنقل عادةً كوحدة كاملة واحدة.

وتختلف الموافقات أيضًا، إذ يدعم ERC-721 الموافقة على توكن واحد أو منح مشغّل صلاحية على المجموعة كلها.

ERC-721 مقارنةً بـ ERC-1155

يركز ERC-721 على التوكنات غير القابلة للاستبدال ذات المعرّفات الفردية.

يتيح ERC-1155 لعقد واحد إدارة معرّفات توكنات متعددة، بما يشمل الأصول القابلة للاستبدال وشبه القابلة للاستبدال وغير القابلة للاستبدال.

يمكن لحساب ERC-1155 امتلاك عدة وحدات من معرّف توكن واحد.

لمعرّف توكن ERC-721 مالك واحد، ولا يحتفظ العقد برصيد كمي لكل حساب.

يعتمد اختيار المعيار الأنسب على نموذج الأصل وأنماط التحويل والحاجة إلى العمليات الدفعية ومتطلبات التطبيق.

الإتاوات وواجهة ERC-721

لا تحدد واجهة ERC-721 الأساسية إتاوات منشئي المحتوى.

يمكن لواجهة منفصلة للإتاوات الإشارة إلى مستلم دفع مقترح ومبلغه.

لا تفرض معلومات الإتاوات تلقائيًا على كل نظام تحويل إجراء الدفع.

ينبغي للمجموعة التي تعلن عن إتاوات توضيح طريقة حسابها وإمكانية تغييرها.

ينبغي ألا يفترض المستخدمون أن NFT وفق ERC-721 يتضمن حقوق إتاوات دائمة أو قابلة للإنفاذ.

المخاطر الأمنية لموافقات ERC-721

يُعد التصيد الاحتيالي للموافقات أحد أهم المخاطر التي تواجه حاملي NFTs.

قد يطلب موقع خبيث تنفيذ

setApprovalForAll
بينما يصف التوقيع بأنه تحقق من الحساب أو دخول إلى المجموعة.

بعد الموافقة، قد ينقل المشغّل كل NFTs المشمولة دون تفويض آخر من المالك.

وقد تتيح الموافقة الخاصة بتوكن واحد أيضًا سرقة NFT المحدد.

ينبغي للمستخدمين فحص عنوان المشغّل وعقد NFT ونوع الصلاحية والشبكة قبل التوقيع.

لا يؤدي فصل المحفظة عن موقع إلكتروني إلى إلغاء موافقة سُجلت بالفعل على السلسلة.

مخاطر التحويل غير الآمن

يمكن لدالة

transferFrom
إرسال NFT إلى عقد لا يملك آلية لاستعادته.

قد تنجح المعاملة رغم عدم تمكن أي جهة لاحقًا من جعل العقد المستلم يعيد نقل NFT منه.

لهذا السبب يُفضّل استخدام

safeTransferFrom
عند التحويل إلى العقود.

لكن الاستلام الآمن يثبت فقط أن العقد أعاد قيمة الاستدعاء الراجع المتوقعة.

ولا يضمن أن لدى المستلم مسارًا مشروعًا للسحب.

مخاطر البيانات الوصفية والأصالة

يمكن لأي شخص نشر عقد ERC-721 يستخدم اسم مجموعة مألوفًا أو رمزًا شائعًا.

يُعد عنوان العقد أهم معرّف تقني للمجموعة.

كما قد تتضمن البيانات الوصفية أسماء مضللة أو أعمالًا فنية منسوخة أو روابط خارجية غير آمنة أو ملفات غير متاحة.

قد يشير URI للتوكن، الذي يتحكم فيه مسؤول المشروع، إلى محتوى مختلف لاحقًا.

لا تتحقق الملكية على السلسلة بصورة مستقلة من هوية المنشئ أو حقوق الملكية الفكرية.

ينبغي للمستخدمين تأكيد عنوان المجموعة ومعلومات المشروع عبر مصادر موثوقة.

مخاطر العقود القابلة للترقية

قد يعمل تنفيذ ERC-721 خلف وكيل قابل للترقية.

قد يتمكن مسؤول مخوّل من تغيير قواعد التحويل أو منطق البيانات الوصفية أو صلاحيات السك أو سلوك آخر بعد اقتناء المستخدمين للـ NFTs.

قد تصلح الترقيات الأخطاء، لكنها قد تنشئ أيضًا مخاطر تتعلق بالحوكمة أو اختراق المفاتيح.

ينبغي للمستخدمين فحص صلاحيات الترقية والتأخيرات الزمنية وضوابط التوقيع المتعدد وأدوار المسؤولين.

لا يكشف دعم واجهة ERC-721 عن كل الدوال ذات الصلاحيات الخاصة في التنفيذ.

كيفية تطبيق ERC-721 للمطورين

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

يوفر مرجع OpenZeppelin ERC-721 API الحالي مكونات أساسية ومكونات للبيانات الوصفية والتعداد والإيقاف والحرق والإتاوات والتصويت والاستقبال.

ينبغي تقييد صلاحية السك بما يتفق مع سياسة المعروض المعلنة للمجموعة.

ينبغي النظر في السك الآمن عندما يمكن سك NFTs مباشرةً إلى عقود ذكية.

ينبغي التعامل مع الاستدعاءات الراجعة للمستلم بوصفها استدعاءات خارجية قد تنطوي على سلوك إعادة الدخول.

ينبغي أن تغطي الاختبارات الملكية والموافقات وصلاحيات المشغّلين والمستلمين الآمنين والمستلمين الخبيثين والحرق ومعرّفات التوكنات غير الصالحة والتحويلات غير المصرح بها.

ينبغي للمطورين أيضًا اختبار ما إذا كان كشف الواجهات يعيد القيم الصحيحة لكل امتداد مطبق.

كيف تكتشف التطبيقات دعم ERC-721

يمكن للتطبيق استدعاء

supportsInterface
باستخدام معرّف واجهة ERC-721 الأساسية.

تشير القيمة المعادة

true
إلى أن العقد يزعم تطبيق الواجهة.

ويمكن للتطبيق التحقق بشكل منفصل من معرّفات واجهتي البيانات الوصفية والتعداد.

يُعد كشف الواجهة أوثق من التخمين استنادًا إلى أسماء الدوال وحدها.

لكن العقود المكتوبة على نحو سيئ أو المخادعة قد تعيد معلومات غير دقيقة.

ينبغي للتطبيقات التعامل بأمان مع الاستدعاءات الفاشلة والسلوك غير المتوقع بدلًا من افتراض توافق كل عقد.

مثال على تحويل ERC-721

لنفترض أن Alice تملك التوكن ذي المعرّف 42 في عقد ERC-721.

تعيد دالة العقد

ownerOf
عنوان Alice للتوكن ذي المعرّف 42.

تقرر Alice إرسال NFT إلى عقد ذكي.

تستدعي محفظتها

safeTransferFrom
مع عنوان Alice وعقد المستلم ومعرّف التوكن 42.

يتحقق عقد NFT من أن Alice تملك التوكن ومصرح لها بنقله.

يحدّث العقد الملكية ويستدعي

onERC721Received
لدى المستلم.

يتحقق المستلم من عقد NFT والمشغّل والمالك السابق ومعرّف التوكن.

إذا أعاد المستلم المحدد الصحيح، يكتمل التحويل ويصدر حدث

Transfer
.

إذا رفض المستلم الاستدعاء الراجع، تُلغى المعاملة بأكملها وتظل Alice هي المالكة.

أخطاء شائعة في واجهة ERC-721

من الأخطاء الشائعة افتراض أن اسم المجموعة يحدد عقد NFT على نحو فريد.

ومنها أيضًا اعتبار

balanceOf
كميةً من معرّف توكن واحد.

والخطأ الثالث استخدام

transferFrom
للإرسال إلى عقد ذكي غير معروف.

والخطأ الرابع منح مشغّل موافقة تشمل المجموعة كلها دون مراجعة عنوانه.

والخطأ الخامس افتراض أن فصل المحفظة يلغي الموافقات المسجلة على السلسلة.

والخطأ السادس اعتبار البيانات الوصفية مخزنة دائمًا على السلسلة دون فحص URI التوكن.

والخطأ السابع افتراض أن ERC-721 يتضمن إتاوات إلزامية.

والخطأ الثامن افتراض أن كل عقود ERC-721 تدعم التعداد.

والخطأ التاسع تجاهل مخاطر إعادة الدخول أثناء الاستدعاء الراجع للمستلم.

والخطأ العاشر اعتبار دعم ERC-165 دليلًا على أمان التنفيذ أو أصالته.

الأسئلة الشائعة

ما واجهة ERC-721؟

واجهة ERC-721 مجموعة معيارية من الدوال والأحداث لتتبع ملكية التوكنات غير القابلة للاستبدال والموافقات عليها وتحويلاتها.

ما معرّف واجهة ERC-721؟

معرّف واجهة ERC-721 الأساسية هو

0x80ac58cd
.

ماذا تعيد balanceOf في عقد ERC-721؟

تعيد عدد NFTs المميزة من ذلك العقد التي يملكها عنوان ما.

ما وظيفة ownerOf؟

تعيد المالك الحالي لمعرّف توكن صالح.

ما الفرق بين transferFrom وsafeTransferFrom؟

تتحقق

safeTransferFrom
من دعم العقد المستلم للاستدعاء الراجع الخاص بمستلم ERC-721، بينما لا تفعل ذلك
transferFrom
.

ما onERC721Received؟

هو الاستدعاء الراجع الذي يطبقه العقد الذكي لتأكيد قدرته على قبول NFT عبر تحويل آمن.

هل يمكن أن يفشل تحويل NFT الآمن؟

نعم، يفشل إذا لم تنجح عمليات التحقق من التفويض أو إذا لم يُعد العقد المستلم محدد الاستدعاء الراجع المتوقع.

ما وظيفة approve؟

تفوض عنوانًا واحدًا بنقل NFT محدد.

ما وظيفة setApprovalForAll؟

تمنح مشغّلًا صلاحية التصرف في كل NFTs التي يملكها المستدعي في عقد ERC-721 ذاك.

هل تنتهي موافقة المشغّل تلقائيًا؟

لا، تظل الموافقة المعيارية على مستوى المجموعة نشطة إلى أن يلغيها المالك أو يطبق العقد قواعد مخصصة إضافية.

هل يؤدي نقل NFT إلى إلغاء الموافقة الخاصة بالتوكن؟

نعم، يلغي تنفيذ ERC-721 الاعتيادي الموافقة المرتبطة بذلك التوكن أثناء نقله.

هل البيانات الوصفية مطلوبة في ERC-721؟

لا، واجهة البيانات الوصفية اختيارية، رغم أن معظم مجموعات NFT تطبقها.

ما معرّف واجهة البيانات الوصفية في ERC-721؟

يستخدم امتداد البيانات الوصفية معرّف الواجهة

0x5b5e139f
.

ما معرّف واجهة التعداد في ERC-721؟

يستخدم امتداد التعداد معرّف الواجهة

0x780e9d63
.

هل يدعم كل عقد ERC-721 دالة totalSupply؟

لا، تنتمي

totalSupply
إلى امتداد التعداد الاختياري.

هل يشترط ERC-721 وجود دالة سك؟

لا، لا تحدد الواجهة الأساسية كيفية سك المستخدمين أو المسؤولين لـ NFTs.

هل يشترط ERC-721 وجود دالة حرق؟

لا، فالحرق ميزة في التنفيذ وليس دالة أساسية مطلوبة.

هل يفرض ERC-721 الإتاوات؟

لا، فالإتاوات خارج نطاق واجهة ERC-721 الأساسية وتتطلب منطقًا أو معايير منفصلة.

هل يمكن تغيير بيانات ERC-721 الوصفية؟

نعم، يسمح المعيار بتغيير URI التوكن ما لم يوفر التنفيذ ضمانات أقوى لعدم القابلية للتغيير.

هل يثبت الامتثال لـ ERC-721 أصالة NFT؟

لا، إذ يمكن لأي شخص نشر عقد متوافق، لذا يجب على المستخدمين التحقق من عنوان العقد والجهة المصدرة بصورة مستقلة.

الخاتمة

توفر واجهة ERC-721 القواعد المشتركة للملكية والموافقة والتحويل والأحداث المستخدمة في التوكنات غير القابلة للاستبدال عبر التطبيقات المتوافقة مع Ethereum.

معرّف الواجهة الأساسية هو

0x80ac58cd
، وتنشره العقود عبر آلية كشف الواجهات ERC-165.

تتيح الدوال المطلوبة للتطبيقات التحقق من الأرصدة والمالكين، وتفويض صلاحية التحويل، ونقل معرّفات التوكنات الفريدة.

تقلل دوال التحويل الآمن التحويلات العرضية إلى العقود غير المتوافقة، إذ تشترط استدعاءً راجعًا لمستلم ERC-721.

ينشئ هذا الاستدعاء الراجع أيضًا مخاطر الاستدعاءات الخارجية وإعادة الدخول التي يجب على المطورين التعامل معها بحذر.

واجهتا البيانات الوصفية والتعداد اختياريتان، ولهما معرّفات منفصلة واعتبارات إضافية تتعلق بالغاز والثقة.

لا يحدد المعيار صلاحيات السك أو حقوق الحرق أو الإتاوات أو حدود المعروض أو ديمومة البيانات الوصفية أو الملكية القانونية أو أصالة المجموعة.

ينبغي للمستخدمين التحقق من عناوين العقود، ومراجعة موافقات المشغّلين، وفحص تخزين البيانات الوصفية، وفهم صلاحيات الترقية قبل التعامل مع NFT.

ينبغي للمطورين استخدام تطبيقات مصانة، واختبار كل مسارات التفويض، والتعامل مع استدعاءات مستلم NFT الراجعة على أنها تعليمات برمجية قد تكون خبيثة.

يساعد فهم واجهة ERC-721 مستخدمي العملات المشفرة على التمييز بين التوافق المعياري لـ NFT وبين الخصائص الاقتصادية والقانونية والأمنية الأوسع لمجموعة بعينها.
BTC ETFs See $679M in Outflows
BTC ETFs See $679M in OutflowsBTC ETFs See $679M in Outflows
Citi sees BTC at $113K. What do institutions see?