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

مكتبات العقود الذكية

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

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

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

ماذا يوجد في المكتبة

يمكنك عادةً العثور على نوعين من لبنات البناء في مكتبات العقود الذكية: سلوكيات قابلة لإعادة الاستخدام يمكنك إضافتها إلى عقودك، وتطبيقات لمعايير مختلفة.

السلوكيات

عند كتابة العقود الذكية، هناك فرصة جيدة لأن تجد نفسك تكتب أنماطًا مشابهة مرارًا وتكرارًا، مثل تعيين عنوان مسؤول (admin) لتنفيذ عمليات محمية في عقد، أو إضافة زر إيقاف مؤقت (pause) للطوارئ في حالة حدوث مشكلة غير متوقعة.

توفر مكتبات العقود الذكية عادةً تطبيقات قابلة لإعادة الاستخدام لهذه السلوكيات كـ مكتبات (opens in a new tab) أو عبر الوراثة (opens in a new tab) في Solidity.

كمثال، فيما يلي نسخة مبسطة من عقد Ownable (opens in a new tab) من مكتبة عقود أوبن زبلن (opens in a new tab)، والذي يعين عنوانًا كمالك لعقد، ويوفر مُعدِّلًا (modifier) لتقييد الوصول إلى طريقة (method) فقط لذلك المالك.

لاستخدام لبنة بناء مثل هذه في عقدك، ستحتاج أولاً إلى استيرادها، ثم التوسع منها في عقودك الخاصة. سيسمح لك هذا باستخدام المُعدِّل الذي يوفره عقد Ownable الأساسي لتأمين دوالك الخاصة.

import ".../Ownable.sol"; // مسار المكتبة المستوردة

contract MyContract is Ownable {
    // يمكن استدعاء الدالة التالية بواسطة المالك فقط
    function secured() onlyOwner public {
        msg.sender.transfer(1 ether);
    }
}

مثال شائع آخر هو SafeMath (opens in a new tab) أو DsMath (opens in a new tab). هذه مكتبات (على عكس العقود الأساسية) توفر دوال حسابية مع فحوصات تجاوز السعة، والتي لا توفرها اللغة. من الممارسات الجيدة استخدام أي من هاتين المكتبتين بدلاً من العمليات الحسابية الأصلية لحماية عقدك من تجاوز السعة، والذي يمكن أن يكون له عواقب وخيمة!

المعايير

لتسهيل قابلية التركيب وقابلية التشغيل البيني، حدد مجتمع إيثيريوم العديد من المعايير في شكل ERCs. يمكنك قراءة المزيد عنها في قسم المعايير.

عند تضمين ERC كجزء من عقودك، من الجيد البحث عن تطبيقات قياسية بدلاً من محاولة إنشاء تطبيقاتك الخاصة. تتضمن العديد من مكتبات العقود الذكية تطبيقات لأكثر ERCs شيوعًا. على سبيل المثال، يمكن العثور على معيار الرمز القابل للاستبدال ERC-20 واسع الانتشار في HQ20 (opens in a new tab) و DappSys (opens in a new tab) و أوبن زبلن (opens in a new tab). بالإضافة إلى ذلك، توفر بعض ERCs أيضًا تطبيقات أساسية كجزء من ERC نفسه.

تجدر الإشارة إلى أن بعض ERCs ليست مستقلة، بل هي إضافات إلى ERCs أخرى. على سبيل المثال، يضيف ERC-2612 (opens in a new tab) امتدادًا إلى ERC-20 لتحسين قابليته للاستخدام.

كيفية إضافة مكتبة

ارجع دائمًا إلى وثائق المكتبة التي تقوم بتضمينها للحصول على تعليمات محددة حول كيفية تضمينها في مشروعك. يتم حزم العديد من مكتبات عقود Solidity باستخدام npm، لذا يمكنك فقط استخدام npm install معها. ستبحث معظم أدوات تصريف العقود في node_modules الخاص بك عن مكتبات العقود الذكية، لذا يمكنك القيام بما يلي:

// سيقوم هذا بتحميل مكتبة @openzeppelin/contracts من node_modules الخاص بك
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract MyNFT is ERC721 {
    constructor() ERC721("MyNFT", "MNFT") public { }
}

بغض النظر عن الطريقة التي تستخدمها، عند تضمين مكتبة، راقب دائمًا إصدار اللغة. على سبيل المثال، لا يمكنك استخدام مكتبة لـ Solidity 0.6 إذا كنت تكتب عقودك بـ Solidity 0.5.

متى تستخدمها

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

الأمان هو أيضًا ميزة رئيسية. غالبًا ما تخضع مكتبات العقود الذكية مفتوحة المصدر لتدقيق شديد. نظرًا لأن العديد من المشاريع تعتمد عليها، فهناك حافز قوي من قبل المجتمع لإبقائها قيد المراجعة المستمرة. من الشائع جدًا العثور على أخطاء في كود التطبيق أكثر من مكتبات العقود القابلة لإعادة الاستخدام. تخضع بعض المكتبات أيضًا لـ عمليات تدقيق خارجية (opens in a new tab) لمزيد من الأمان.

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

أخيرًا، عند اتخاذ قرار بشأن تضمين مكتبة، ضع في اعتبارك استخدامها العام. تتمتع المكتبة المعتمدة على نطاق واسع بفوائد وجود مجتمع أكبر والمزيد من الأعين التي تبحث فيها عن المشكلات. يجب أن يكون الأمان هو تركيزك الأساسي عند البناء باستخدام العقود الذكية!

عقود أوبن زبلن - المكتبة الأكثر شيوعًا لتطوير العقود الذكية الآمنة.

DappSys - لبنات بناء آمنة وبسيطة ومرنة للعقود الذكية.

HQ20 - مشروع Solidity يحتوي على عقود ومكتبات وأمثلة لمساعدتك في بناء تطبيقات موزعة كاملة الميزات للعالم الحقيقي.

حزمة تطوير برمجيات Solidity من thirdweb - توفر الأدوات اللازمة لبناء عقود ذكية مخصصة بكفاءة

قراءة إضافية

هل تعرف موردًا مجتمعيًا ساعدك؟ قم بتعديل هذه الصفحة وأضفه!