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

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

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

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

  • Solidity
  • Vyper

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

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

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

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

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

Solidity

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

مثال على عقد

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

Vyper

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

لمزيد من المعلومات، اقرأ الأساس المنطقي لـ Vyper (opens in a new tab).

مثال

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

Yul وYul+

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

Yul

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

Yul+

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

مثال على عقد

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

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

Fe

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

مثال على عقد

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

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

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

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

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

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

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

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

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

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

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

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

قراءة إضافية