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

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

آخر تحديث للصفحة: 21 أغسطس 2025

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

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

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

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

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

السلوكيات

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

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

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

1contract Ownable {
2 address public owner;
3
4 constructor() internal {
5 owner = msg.sender;
6 }
7
8 modifier onlyOwner() {
9 require(owner == msg.sender, "Ownable: المتصل ليس المالك");
10 _;
11 }
12}
إظهار الكل

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

1import ".../Ownable.sol"; // مسار إلى المكتبة المستوردة
2
3contract MyContract is Ownable {
4 // لا يمكن استدعاء الوظيفة التالية إلا من قبل المالك
5 function secured() onlyOwner public {
6 msg.sender.transfer(1 ether);
7 }
8}

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

المعايير

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

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

ومن الجدير بالذكر أن بعض مراكز ERC ليست قائمة بذاتها، ولكنها إضافات إلى مراكز ERC أخرى. على سبيل المثال، يضيف ERC2612 (opens in a new tab) امتدادًا إلى ERC20 لتحسين قابليته للاستخدام.

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

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

1// سيؤدي هذا إلى تحميل مكتبة @openzeppelin/contracts من node_modules الخاصة بك
2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
3
4contract MyNFT is ERC721 {
5 constructor() ERC721("MyNFT", "MNFT") public { }
6}

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

متى يجب الاستخدام

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

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

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

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

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

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

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

thirdweb سوليديتي SDK - يوفر الأدوات اللازمة لبناء عقود ذكية مخصصة بكفاءة

قراءة إضافية

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

هل كانت هذه المقالة مفيدة؟