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

لغات العقود الذكية

من الجوانب الرائعة في إيثيريوم أنه يمكن برمجة العقود الذكية باستخدام لغات صديقة للمطورين نسبيًا. إذا كانت لديك خبرة في لغة Python أو أي لغة تستخدم الأقواس المعقوفة (يفتح في علامة تبويب جديدة)، فيمكنك العثور على لغة ذات بنية مألوفة.

اللغتان الأكثر نشاطًا وصيانة هما:

  • Solidity
  • Vyper

توفر بيئة التطوير المتكاملة Remix بيئة تطوير شاملة لإنشاء واختبار العقود في كل من Solidity وVyper. جرب بيئة التطوير المتكاملة Remix في المتصفح (يفتح في علامة تبويب جديدة) لبدء البرمجة.

قد يرغب المطورون الأكثر خبرة أيضًا في استخدام Yul، وهي لغة وسيطة لـ آلة إيثيريوم الافتراضية (EVM)، أو Yul+، وهي امتداد للغة Yul.

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

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

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

Solidity

  • لغة عالية المستوى وموجهة للكائنات لتنفيذ العقود الذكية.
  • لغة تستخدم الأقواس المعقوفة وتأثرت بشدة بلغة C++.
  • مكتوبة بشكل ثابت (يُعرف نوع المتغير في وقت الترجمة).
  • تدعم:
    • الوراثة (يمكنك توسيع عقود أخرى).
    • المكتبات (يمكنك إنشاء كود قابل لإعادة الاستخدام يمكنك استدعاؤه من عقود مختلفة – مثل الدوال الثابتة في فئة ثابتة في لغات البرمجة الموجهة للكائنات الأخرى).
    • أنواع معقدة يحددها المستخدم.

مثال على عقد

يجب أن يمنحك هذا المثال فكرة عن شكل بنية عقد Solidity. للحصول على وصف أكثر تفصيلاً للدوال والمتغيرات، راجع التوثيق (يفتح في علامة تبويب جديدة).

Vyper

  • لغة برمجة مبنية على أسلوب Python
  • كتابة قوية (Strong typing)
  • كود مترجم (compiler) صغير ومفهوم
  • توليد فعال لرمز البايت
  • تحتوي عمدًا على ميزات أقل من Solidity بهدف جعل العقود أكثر أمانًا وأسهل في التدقيق. لا تدعم Vyper:
    • المُعدِّلات (Modifiers)
    • الوراثة
    • لغة التجميع المضمنة (Inline assembly)
    • التحميل الزائد للدوال (Function overloading)
    • التحميل الزائد للعوامل (Operator overloading)
    • الاستدعاء العودي (Recursive calling)
    • الحلقات اللانهائية
    • النقاط الثابتة الثنائية (Binary fixed points)

لمزيد من المعلومات، اقرأ الأساس المنطقي لـ Vyper (يفتح في علامة تبويب جديدة).

مثال

يجب أن يمنحك هذا المثال فكرة عن شكل بنية عقد Vyper. للحصول على وصف أكثر تفصيلاً للدوال والمتغيرات، راجع التوثيق (يفتح في علامة تبويب جديدة).

Yul وYul+

إذا كنت جديدًا على إيثيريوم ولم تقم بأي برمجة باستخدام لغات العقود الذكية بعد، فنوصيك بالبدء باستخدام Solidity أو Vyper. لا تنظر في Yul أو Yul+ إلا بعد أن تكون على دراية بأفضل ممارسات أمان العقود الذكية وتفاصيل العمل مع آلة إيثيريوم الافتراضية (EVM).

Yul

Yul+

  • امتداد منخفض المستوى وعالي الكفاءة للغة Yul.
  • صُممت في البداية لعقد رول أب متفائل.
  • يمكن النظر إلى Yul+ على أنها مقترح ترقية تجريبي للغة Yul، حيث تضيف ميزات جديدة إليها.

مثال على عقد

ينفذ المثال البسيط التالي دالة القوة (الأس). يمكن تجميعه باستخدام solc --strict-assembly --bin input.yul. يجب تخزين المثال في ملف input.yul.

إذا كنت تتمتع بخبرة جيدة بالفعل في العقود الذكية، فيمكن العثور على تنفيذ كامل لـ ERC-20 بلغة Yul هنا (يفتح في علامة تبويب جديدة).

Fe

  • لغة مكتوبة بشكل ثابت لآلة إيثيريوم الافتراضية (EVM).
  • مستوحاة من Python وRust.
  • تهدف إلى أن تكون سهلة التعلم -- حتى للمطورين الجدد في نظام إيثيريوم البيئي.
  • لا يزال تطوير Fe في مراحله الأولى، وقد تم إصدار النسخة الأولية (alpha) من اللغة في يناير 2021.

مثال على عقد

فيما يلي عقد بسيط تم تنفيذه بلغة Fe.

كيفية الاختيار

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

إليك بعض الأشياء التي يجب مراعاتها إذا لم تجرب أيًا من اللغات بعد:

ما الرائع في Solidity؟

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

ما الرائع في Vyper؟

  • طريقة رائعة للبدء لمطوري Python الذين يرغبون في كتابة العقود الذكية.
  • تحتوي Vyper على عدد أقل من الميزات مما يجعلها رائعة للنماذج الأولية السريعة للأفكار.
  • تهدف Vyper إلى أن تكون سهلة التدقيق وقابلة للقراءة من قبل البشر إلى أقصى حد.

ما الرائع في Yul وYul+؟

  • لغة منخفضة المستوى مبسطة ووظيفية.
  • تتيح الاقتراب أكثر من آلة إيثيريوم الافتراضية (EVM) الخام، مما يمكن أن يساعد في تحسين استخدام الغاز في عقودك.

مقارنات اللغات

لمقارنات البنية الأساسية، ودورة حياة العقد، والواجهات، والعوامل، وهياكل البيانات، والدوال، وتدفق التحكم، والمزيد، تحقق من الورقة المرجعية هذه بواسطة Auditless (يفتح في علامة تبويب جديدة)

قراءة إضافية