Solidity

Solidity هي “لغة عالية المستوى  لتنفيذ العقود الذكية … البرامج التي تحكم سلوك الحسابات داخل حالة Ethereum” (مصدر). بينما تم تطوير عدد قليل من لغات برمجة العقود الذكية على مر السنين ، تظل Solidity الأكثر هيمنة.

كما ذكرنا سابقًا ، تعد Solidity لغة عالية المستوى مما يعني أن الكود المنشور باستخدام عقد ذكي ليس Solidity ، بل رمزًا ثنائيًا لـ EVM. تعتبر Solidity  كطبقة فوق تلك اللغة الأساسية ، حتى لا يتعين علينا كتابة كود يشبه هذا:

  PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xE PUSH1 0x0 
  SSTORE CALLVALUE DUP1 ISZERO PUSH1 0x14 JUMPI 
  PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x35 
  DUP1 PUSH1 0x22 PUSH1 0x0 CODECOPY PUSH1 0x0 
  RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 
  0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 
  KECCAK256 RETURNDATASIZE 0x25 0xb6 0xcf CALLDATALOAD 
  LOG1 DUP16 PUSH9 0x27AC943141CFD6D0FA MSTORE SHL 
  DUP6 LOG4 PUSH8 0x7FADA153CC03D771 BLOCKHASH 0xb3 
  STOP 0x29

لكن ، بالأحرى كود يشبه هذا:

  pragma solidity >=0.4.0 <0.9.0;

  contract MyContract {
      uint i = 10 + 2 * 2;
  }

$$

بينما يصف كلا الكودين  نفس العملية ، فإن (Solidity) أسهل في القراءة والكتابة.

الخصائص العامة لـ Solidity

تستخدم Solidity بنية ECMAScript مثل JavaScript ، لجعلها سهلة الوصول لمطوري الويب. ومع ذلك Solidity أكثر تطلبًا في متطلباتها.

بعض الخصائص الأساسية لـ Solidity:

  • حساسية الأحرف الكبيرة و الصغيرة
  • إنهاء العبارة عبر فاصلة منقوطة ؛
  • تستخدم الملفات الامتداد .sol
  • يجب معرفة الأنواع المكتوبة (Statically typed Types)  في وقت البناء . هذا يجعل Solidity أشبه بـ TypeScript من JavaScript في الممارسة.
  • خيارات بناء متنوعة يمكن إجراء بناء Solidity على سطر الأوامر بواسطة Solc، ويمكنك بنائها في متصفح ويب باستخدام Remix، أو بنائها كجزء من إطار تطوير عقد ذكي مثل Truffleأو Hardhat.
  • بتم البناء (Compiles ) وصولاً إلى EVM bytecode والذي يتم تشغيله بعد ذلك داخل جهاز Ethereum Virtual Machine عند نشره على شبكة

بشكل عام ، يمكن توضيح سير عمل Solidity على النحو التالي:

رسم يوضح سير العمل من الصلابة إلى EVM

مصادر إضافية 

إذا كنت ترغب في بعض الأماكن لتعلم Solidity ، فيمكنك أيضًا الاطلاع على هذه الموارد الرائعة.

  • الدورة التدريبية: CryptoZombies أحد أشهر مقدمات Solidity
  • الدورة التدريبية: Ethernaut (OpenZeppelin) هي “لعبة” ممتازة في المتصفح تقوم بتدريس Solidity من منظور أمني.
  • الدورة التدريبية: Intro to Solidity (Chainshot)  تستخدم Chainshot منصة تفاعلية رائعة جدًا لتعليم Solidity
  • ويكي: Solidity by Example مجموعة من الأمثلة الرائعة على Solidity ، بما في ذلك أنماط التصميم الممتازة ، والقرصنة ونصائح الأمان.
  • ويكي: Use Web3  مجموعة أخرى جيدة من مصادر التعلم
  • مقال: Test Driven Introduction to Solidity من نسخة قديمة من Solidity ، ولكن قد يكون من المثير للاهتمام التحقق منها! الريبو المصاحب للمقال هنا.
  • تويترWhat Does Ethereum Development Look Like Today? قام سانتياغو بالادينو ، الذي كتب Ethereum لمطوري الويب ، بتحديث أجزاء من كتابه للنظام البيئي Ethereum الحالي.
  • مقال: Learn X in Y Minutes (Solidity)  طويلة وخشنة بعض الشيء ، لكنها نظرة عامة شاملة على تعلم Solidity

إضافة تعليق