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

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

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

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

  • Solidity
  • Vyper

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

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

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

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

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

Solidity

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

مثال على عقد

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

Vyper

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

منذ الإصدار v0.4.0، تدعم Vyper نظام الوحدات (يفتح في علامة تبويب جديدة). يتم تحقيق إعادة استخدام الكود من خلال التركيب (composition)، بدلاً من وراثة الفئات.

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

مثال

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

Yul وYul+

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

Yul

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

Yul+

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

مثال على عقد

ينفذ المثال البسيط التالي دالة القوة (power function). يمكن تجميعه باستخدام 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 (يفتح في علامة تبويب جديدة)

قراءة إضافية