في 2 فبراير، تم إطلاق باندروا، وهو مشروع يركز على تجزئة NFT. تتمثل ميزته الأساسية في ERC404، وهو معيار توكن يجمع بين ERC20 وERC721 وله خصائص السيولة الأصلية وتجزئة NFT. باعتباره بروتوكولًا تم إطلاقه حديثًا، أثار ERC404 نقاشات واسعة في المجتمع. لقد تجاوز حجم التداول اليومي لمشروعه الأول، باندروا، أيضًا 50 مليون دولار. المزيد من المشاريع المعتمدة على ERC404 أو معايير توكن مشابهة جاهزة للإطلاق.
بما أن ERC404 تم إصداره مباشرةً كمصدر مفتوح للمجتمع للتجارب دون مناقشة ومراجعة اقتراح تحسين من Ethereum (EIP) وطلب التعليقات من Ethereum (ERC)، فإن البروتوكول نفسه يملك العديد من المجالات التي تحتاج إلى تحسين. ستقوم فرق أمن Beosin بإجراء تحليل تفصيلي لآلية التصميم وكود العقد الخاص بـERC404 لمساعدة مستخدمي التشفير على فهم ERC404.
ما هو ERC404؟
ERC404 بروتوكول تجريبي جديد "يُدمج" معيارين للرموز: ERC20 وERC721. ببساطة، يتيح ERC404 تقسيم الـNFTs وتداولها مثل رموز ERC20. رموز ERC404 هي في نفس الوقت رموز ERC20 وNFTs؛ أي يمكن اعتبار كل رمز ERC404 كرمز ERC20 واحد أو كـNFT واحد.
عندما يقوم مستخدم بشراء رمز ERC404، سيتم تلقائيًا استلام Replicant NFT في محفظة المستخدم. عند قيام المستخدم ببيع الرمز، سيتم تلقائيًا تدمير الـNFT المقابل.
خذ Pandora، المشروع الأول لـERC404، كمثال. الرمز المميز لـERC404 في هذا المشروع هو PANDORA، و الـNFT المقابل له هو Pandora Replicants. إجمالي المعروض من رموز PANDORA هو 10,000، لذا فإن إجمالي المعروض من Pandora NFTs المقابلة هو أيضًا 10,000.
عند قيام المستخدم بشراء رموز PANDORA على Uniswap، فإن امتلاك 1 رمز PANDORA يعادل امتلاك 1 NFT من Pandora في الوقت نفسه. بعد ذلك يمكنك اختيار بيع رموز PANDORA أو الانتقال إلى أسواق تداول الـNFT مثل OpenSea لبيع NFT الخاص بـPandora. كما يمكن للمستخدمين أيضًا شراء NFTs من Pandora أولاً ثم اختيار بيع رموز PANDORA على DEX.

نظرًا لأن ERC404 يتضمن خصائص مميزة لكل من رموز ERC20 وNFTs، فإن ما يلي هو سمات التصميم لـERC404، وهي أيضًا الأشياء التي يحتاج المستخدمون إلى الانتباه لها:
١.
إذا تم تداول رموز ERC404 على أنها رموز ERC20، فسيتم أخذ الكسور العشرية (decimals) في الاعتبار والمشاركة. ينص ERC404 على أن عدد الرموز يتم التقريب للأسفل إلى رقم الـNFT المقابل. على سبيل المثال، إذا كان لدى مستخدم 2.9 من رموز PANDORA، فإنه يمتلك فقط 2 من Pandora NFT من منظور الـNFT.
٢.
في ERC404 v1، إذا تم تداول رموز ERC404 على أنها رموز ERC20، فسيتم تدمير الـNFT المقابل وسيتم إنشاء NFT جديد أثناء التداول. وبهذه الطريقة، في كل مرة يتم فيها توليد NFT جديد، سيتم إضافة رقم معرفه من أعلى رقم معرف للـNFT الأصلي. تقوم ERC404 v2 بتغيير آلية الحرق هذه، والتي سيتم شرحها لاحقًا. وبما أن Pandora NFT تم ضبطه ليحتوي على ندرة، فسوف يقوم المستخدمون بتداول رموز Pandora لزيادة ندرة Pandora NFT بهدف التحكيم، واستبدال الـNFT الأصلي بــPandora NFT أكثر ندرة.
٣.
في حالة ERC404 v1، إذا كان لدى مستخدم 2.9 من رموز PANDORA وباع 1 من رمز PANDORA، فللرمز نفسه عدم وجود ندرة، لكن الـNFT المقابل له يمتلك ندرة مختلفة. عند بيع 1 رمز، سيتم تدمير آخر NFT من نوع Pandora الذي تم استلامه من قِبل المستخدم أولاً، لذلك يجب على المستخدمين الانتباه إلى ندرة الـNFT المقابل لرمز PANDORA. يُنصح بأن يقوم عنوان واحد فقط بتخزين رمز PANDORA واحد، والذي يقابله NFT واحد من Pandora، أو يمكن للمستخدمين تداول NFTs الخاصة بـPandora مباشرةً.
تحليل كود ERC404
تم إصدار ERC404 v1 على Github بواسطة Acme، وهو مهندس برمجيات سابق في Coinbase، ويحتوي على العديد من مجالات التحسين. بمساعدة المجتمع، يقوم فريق ERC404 حاليًا ببناء ERC404 وتحسينه وإطلاق ERC404 v2 في 15 فبراير. تقلل ERC404 v2 بشكل كبير من استهلاك الغاز وتُحسّن آلية الشراء والبيع لرموز ERC404. أحدث مستودع للكود الخاص بها هو https://github.com/Pandora-Labs-Org/erc404.
في هذه المرة، سنستخدم أداة Beosin VaaS لمسح عقد ERC404 v2 الذكي وتحليل أكواد ERC404 v2 وتقديم اقتراحات أمان لمشاريع ERC404 مع خبراء أمن من Beosin:

تتضمن عقود ERC404 v2 بشكل أساسي ERC404.sol وERC721Receiver.sol وDoubleEndedQueue.sol. تعد DoubleEndedQueue بُنية بيانات جديدة قدمها فريق ERC404 لتغيير منطق تداول الرمز وحرق الـNFT.
ERC404 v2، مشابهًا لـv1، هو تطبيق هجين لـERC721 وERC20، ما يتيح تمثيل رموز ERC721 كرموز ERC20. من بينها، يقابل كل رمز ERC721 عدد ثابت من رموز ERC20 (يحدده معلمة units). عند نقل رموز ERC721، يتم نقل رموز ERC20 المقابلة بوحدات.
مقارنةً بالإصدار v1، تحتوي ERC404 v2 على التحسينات التالية:
١.
يدعم EIP-2612
يدعم ERC404 v2 EIP-2612، ما يتيح معاملات بدون رسوم غاز (gas-less) عبر رسائل موقعة (permissions). يتم حساب "DOMAIN_SEPARATOR" في المُنشئ ويمكن إعادة حسابه إذا تغيّر رقم السلسلة (chain ID)، مما يحسن توافق عقده.
constructor(string memory name_, string memory symbol_, uint8 decimals_) {
name = name_;
symbol = symbol_;
if (decimals_ < 18) {
revert DecimalsTooLow();
}
decimals = decimals_;
units = 10 ** decimals;
// تهيئة EIP-2612
INITIAL_CHAIN_ID = block.chainid;
INITIAL_DOMAIN_SEPARATOR = _computeDomainSeparator();
}
٢.
التحقق من النقل الآمن
تتبع دالة safeTransferFrom() داخل عقده onERC721Received() في معيار ERC721، وستتحقق من المستلم للتأكد من أن المستلم قادر على التعامل مع رموز ERC721 (على سبيل المثال، أن المستلم عبارة عن عقد).
function safeTransferFrom(
address from_,
address to_,
uint256 id_,
bytes memory data_
) public virtual {
if (id_ > mint ed || id == 0) {
revert InvalidId();
}
transferFrom(from_, to_, id_);
if (
to_.code.length != 0 &&
ERC721Receiver(to_).onERC721Received(msg.sender, from_, id_, data_) !=
ERC721Receiver.onERC721Received.selector
) {
revert UnsafeRecipient();
}
}
٣. منطق محسّن للـMinting والـBurning
على عكس v1، عند تداول رموز ERC404 v2، لن يتم تدمير الـNFT المقابل. بدلًا من ذلك، يتم تخزين جميع معرّفات الـNFT في Double-ended queue لإعادة استخدامها. وبهذه الطريقة، يكون الـNFT المقابل لـERC404 هو نفسه تمامًا الـERC721 المعتاد. مثل العملات. لا يقلل هذا الأسلوب فقط من استهلاك الغاز، بل يبسط أيضًا منطق نقل ERC404.

تجعل تحسينات ERC404 v2 ERC404 أكثر قابلية للتوسع والاستدامة، لكن لا تزال توجد بعض مخاطر الأمان التي تستحق الانتباه:
١.
دالة القائمة البيضاء (Whitelist)
يتيح ERC404 لبعض عناوين القائمة البيضاء نقل رموز ERC721 داخليًا، ويمكن استخدامها لتحسين استخدام الغاز للعقود أو العناوين المحددة. ومع ذلك، قد يؤدي ذلك أيضًا إلى مشكلات مركزية أو احتمال إساءة الاستخدام.
abstract contract ERC404 is IERC404 {
.......
mapping(address => bool) public erc721TransferExempt;
......
// يتعامل مع إعفاءات ERC-721.
function _transferERC20WithERC721(
// توفير الغاز عبر التداول داخليًا
}
}
٢.
مشكلة دالة النقل
تتعامل دالة transferFrom مع نقل ERC20 وERC721، وتميّز منطق معيارَي الترميز بناءً على معلمة valueOrId_. قد يقع المطورون أو المستخدمون في أخطاء عند استدعاء هذه الدالة، لأن هذه الدالة تفترض أنه إذا كانت قيمة النقل أكبر من قيمة عدد الـminting، فإن النقل يكون أشبه بنقل رموز ERC20.
function transferFrom(
address from_,
address to_,
uint256 valueOrId_
) public virtual returns (bool) {
......
if (valueOrId_ <= _minted) {
// النية هي النقل كرمز ERC-721 (id).
uint256 id = valueOrId_;
......
}
٣.
تحسين استهلاك الغاز
على الرغم من أن ERC404 v2 قد قللت بشكل كبير من رسوم الغاز المطلوبة لتفاعل المستخدم مقارنةً بـv1، فلا تزال هناك مساحة كبيرة للتحسين. على سبيل المثال، تستخدم عقد ERC404 v2 خطأً مخصصًا NotFound() كـrevert بدلًا من عبارة require مع رسالة خطأ، مما يزيد من استهلاك الغاز.
٤.
غياب دالة الإيقاف الطارئ
باعتباره بروتوكولًا مولودًا حديثًا، قد يمتلك ERC404 ثغرات محتملة في العقود لا يمكن تجاهلها. لذلك، عند تطوير الفريق للعقد، ينبغي النظر في إضافة دالة إيقاف طارئ (emergency pause) ليتم ضبطها داخل العقد، كما يجب صياغة خطة للاستجابة للمخاطر للاستجابة بسرعة وإصلاح الثغرات عند ظهور المخاطر.
سابقًا، ذكر Beosin اقتراحات الأمان أعلاه لفريق المشروع عند إتمام تدقيقه لبرنامج Avatar، وهو مشروع مبتكر مبني على ERC404، وقد ساعد ذلك فريق Avatar على تحسين أمان العقود الذكية الخاصة به وضمان التشغيل الآمن لمشروع Avatar. يتضمن هذا التدقيق تحققًا رسميًا وتدقيقًا يدويًا بواسطة خبراء الأمان للتأكد من عدم وجود ثغرات منطقية في الكود:

بشكل عام، يحاول ERC404 معالجة مشكلات عدم قابلية الـNFT للتقسيم (indivisibility) ونقص السيولة من منظور جديد. مقارنةً بمشاريع تجزئة الـNFT السابقة، يبدأ من معايير الرموز الأصلية، وهو أبسط وأكثر فعالية للتطبيق ويوفر طرقًا جديدة لتداول الـNFT. ومع ذلك، فإن ERC404 هو عقد أكثر تعقيدًا نسبيًا ضمن عقود الرموز. يحتاج المطورون إلى الانتباه إلى خصائص ERC20 وERC721 وإلى المخاطر التي قد تنشأ عند إضافة وظائف جديدة. تحتاج فرق الأمان إلى فحص التفاعل بين دوال ERC20 وERC721 بعناية أثناء عمليات التدقيق، وكذلك تأثيرات تحسينات الغاز المختلفة ومخاطر المركزية في عقود ERC404.
Beosin هي شركة رائدة عالميًا في أمن البلوكشين. لديها مكاتب في سنغافورة وكوريا واليابان وغيرها من أكثر من 10 دول. وبمهمة "تأمين نظام بيئي للبلوكشين"، تقدم Beosin حل "الكل في واحد" لأمن البلوكشين يغطي تدقيق العقود الذكية، والمراقبة والتنبيه للمخاطر، وKYT/AML، والتتبع التشفيري. قامت Beosin بالفعل بتدقيق أكثر من 3000 عقد ذكي وترحب مشاريع ERC404 بطلب استشارتنا وتدقيقاتنا.