مدخل إلى العقود الذكية
آخر تحديث للصفحة: 25 فبراير 2026
ما هو العقد الذكي؟
"العقد الذكي" هو ببساطة برنامج يعمل على بلوكشين الإيثريوم. هو عبارة عن مجموعة من الأكواد (وظائفه) والبيانات (حالته) الموجودة في عنوان محدد على بلوكشين الإيثريوم.
العقود الذكية هي نوع من حسابات إيثريوم. وهذا يعني أن لديها رصيدًا ويمكن أن تكون هدفًا للمعاملات. ومع ذلك لا يتحكم بها أي مستخدم، بل يتم نشرها على الشبكة لتعمل وفقًا لما تمت برمجتها عليه. يمكن لحسابات المستخدمين التفاعل مع العقد الذكي من خلال إرسال معاملات تنفّذ وظيفة مُعرَّفة داخل العقد الذكي. يمكن للعقود الذكية تحديد القواعد كما العقود التقليدية، وفرضها تلقائيًا من خلال الكود البرمجي. لا يمكن حذف العقود الذكية بشكل افتراضي، كما أن التفاعلات معها غير قابلة للعكس.
المتطلبات الأساسية
إذا كنت قد بدأت للتو أو كنت تبحث عن مقدمة أقل تقنية، فنحن نوصي بـ مقدمتنا عن العقود الذكية.
تأكد من أنك قرأت عن الحسابات والمعاملات وآلة إيثريوم الافتراضية قبل الخوض في عالم العقود الذكية.
آلة بيع رقمية
ربما أفضل تشبيه للعقد الذكي هو آلة البيع، كما وصفها نيك زابو (opens in a new tab). في حال إدخال المدخلات الصحيحة، تكون النتيجة المحددة مضمونة.
للحصول على وجبة خفيفة من ماكينة البيع الآلي:
1نقود + اختيار وجبة خفيفة = صرف الوجبة الخفيفةتمت برمجة هذا المنطق ضمن ماكينة البيع الآلي.
العقد الذكي، مثل ماكينة البيع الآلي، يحتوي على منطق مبرمج بداخله. وفيما يلي مثال بسيط عن مظهر ماكينة البيع الآلي إذا كانت عقدًا ذكيًا مكتوبًا بلغة سوليديتي:
1pragma solidity 0.8.7;23contract VendingMachine {45 // الإعلان عن متغيرات الحالة للعقد6 address public owner;7 mapping (address => uint) public cupcakeBalances;89 // عند نشر عقد 'VendingMachine':10 // 1. تعيين عنوان النشر كمالك للعقد11 // 2. تعيين رصيد الكب كيك للعقد الذكي المنشور إلى 10012 constructor() {13 owner = msg.sender;14 cupcakeBalances[address(this)] = 100;15 }1617 // السماح للمالك بزيادة رصيد الكب كيك للعقد الذكي18 function refill(uint amount) public {19 require(msg.sender == owner, "يمكن للمالك فقط إعادة التعبئة.");20 cupcakeBalances[address(this)] += amount;21 }2223 // السماح لأي شخص بشراء الكب كيك24 function purchase(uint amount) public payable {25 require(msg.value >= amount * 1 ether, "يجب أن تدفع 1 ETH على الأقل لكل قطعة كب كيك");26 require(cupcakeBalances[address(this)] >= amount, "لا يوجد ما يكفي من الكب كيك في المخزون لإتمام عملية الشراء هذه");27 cupcakeBalances[address(this)] -= amount;28 cupcakeBalances[msg.sender] += amount;29 }30}إظهار الكلفكما تلغي ماكينة البيع الآلي الحاجة إلى وجود البائع، يمكن للعقود الذكية أن تستبدل الوسطاء في العديد من الصناعات.
بلا أذونات
يمكن لأي شخص كتابة عقد ذكي ونشره على الشبكة. كل ما عليك فعله هو تعلم كيفية البرمجة بإحدى لغات العقود الذكية، وأن يكون لديك ما يكفي من ETH لنشر عقدك. يُعد نشر عقد ذكي معاملة من الناحية الفنية، لذا عليك دفع الغاز بنفس الطريقة التي تدفع بها الغاز لإجراء تحويل ETH بسيط. ومع ذلك، تكون تكاليف الغاز لنشر العقد أعلى بكثير.
تمتلك الإيثريوم لغات برمجة ملائمة للمطورين لكتابة العقود الذكية:
- لغة برمجة سوليديتي
- لغة برمجة فايبر
ومع ذلك، يجب ترجمتها قبل نشرها حتى تتمكن الآلة الافتراضية للإيثريوم من تفسير العقد وتخزينه. المزيد عن التجميع
القابلية للتركيب
العقود الذكية هي عقود عامة على إيثريوم ويمكن اعتبارها بمثابة واجهات برمجة تطبيقات مفتوحة. يعني ذلك أنه يمكنك استدعاء عقود ذكية أخرى داخل عقدك الذكي لتوسيع الإمكانات بشكل كبير. يمكن للعقود حتى أن تنشر عقودًا أخرى.
اعرف المزيد عن قابلية تركيب العقود الذكية.
القيود
لا تستطيع العقود الذكية بمفردها الحصول على معلومات حول الأحداث في "العالم الواقعي" لأنها لا تستطيع جلب البيانات من المصادر خارج السلسلة. يعني ذلك أنها لا تستطيع التفاعل مع الأحداث في العالم الواقعي. This is by design. Relying on external information could jeopardise consensus, which is important for security and decentralization.
ومع ذلك، من المهم أن تتمكن تطبيقات البلوكشين من استخدام البيانات خارج السلسلة. الحل هو الأوراكل، وهي أدوات تجلب البيانات من خارج السلسلة وتتيحها للعقود الذكية.
قيد آخر من قيود العقود الذكية هو الحد الأقصى لحجم العقد. يمكن أن يبلغ الحد الأقصى لحجم العقد الذكي 24 كيلوبايت، وإلا فسوف ينفذ الغاز المخصص. يمكن تجاوز ذلك باستخدام The Diamond Pattern (opens in a new tab).
عقود التوقيعات المتعددة
العقود متعددة التوقيعات هي حسابات عقود ذكية تتطلب توافر عدة توقيعات صحيحة لتنفيذ معاملة. يُعدّ هذا مفيدًا جدًا لتجنب نقاط الفشل الفردية في العقود التي تحتفظ بكميات كبيرة من الإيثر أو الرموز الأخرى. تُوزّع العقود متعددة التوقيعات أيضًا مسؤولية تنفيذ العقد وإدارة المفاتيح بين عدة أطراف، وتمنع فقدان مفتاح خاص واحد من التسبب في خسارة الأموال بصورة غير قابلة للاسترجاع. لهذه الأسباب، يمكن استخدام العقود متعددة التوقيعات في حوكمة المنظمات اللامركزية البسيطة. تتطلب العقود متعددة التوقيعات توفّر N توقيعًا من أصل M توقيعًا مقبولًا (حيث N ≤ M وM > 1) لتنفيذ العملية. يشيع استخدام N = 3, M = 5 وN = 4, M = 7. يتطلب عقد متعدد التوقيعات 4/7 أربع توقيعات صحيحة من أصل سبعة توقيعات ممكنة. يعني ذلك أنّ الأموال تظل قابلة للاسترجاع حتى إذا فُقِدت ثلاثة توقيعات. في هذه الحالة، يعني ذلك أيضًا أنّ غالبية حاملي المفاتيح يجب أن يوافقوا ويوقّعوا حتى يتم تنفيذ العقد.
موارد العقود الذكية
عقود أوبن زبلين - مكتبة لتطوير عقود ذكية آمنة.
- openzeppelin.com/contracts/ (opens in a new tab)
- غيت هاب (opens in a new tab)
- منتدى المجتمع (opens in a new tab)