على الرغم من وجود مخاوف بشأن compiler ومعدل التطوير الأبطأ مقارنةً بـ Solidity ، لا يزال هناك العديد من الموارد والطرق لبناء عقود ذكية باستخدام Vyper. في هذا المقال، سنناقش المزيد حول لغة Vyper ونوفر موارد حيث يمكنك معرفة المزيد عن اللغة. يرجى ملاحظة أن Vyper لا يزال يعتبر تجريبيًا إلى حد ما.
مبادئ تصميم Vyper
لدى Vyper بعض المبادئ والأهداف التي تهدف إلى جعلها لغة مثالية لبرمجة العقود الذكية. من مستنداته :
- الأمن هو التركيز الأساسي لأي لغة عقد ذكية ويؤكد Vyper أنه “يجب أن يكون من الممكن والطبيعي بناء عقود ذكية آمنة في Vyper.”
- يجب ألا يكون كود Vyper قابلاً للقراءة فقط ، ولكن يجب أن يجعل كتابة أكواد مضللة أمرًا صعبًا. يهدف هذا التوجيه إلى جعل عمليات تدقيق العقود ناجحة قدر الإمكان.
- إن السعي وراء اللغة وبساطة المترجم (compiler) يدعمان الأهداف الأخرى من خلال إبقاء التعقيد المربك تحت السيطرة.
لتحقيق هذه الأهداف ، يقوم Vyper بتنفيذ الميزات التالية:
- فحص Bounds و overflow
- دعم الأعداد الصحيحة الموقعة والأرقام العشرية الثابتة
- القدرة على اتخاذ القرار – حساب الحدود العليا بشكل موثوق لاستهلاك الغاز لأي استدعاء وظيفة
- كتابة قوية
- كود مترجم صغير ومفهوم
- دعم محدود للوظائف النقية (pure functions)
هناك نقص ملحوظ في الميزات التالية الموجودة في Solidity:
- المُعدِّلات (Modifiers ) تُسهِّل المُعدِّلات كتابة أكواد مضللة. فهي تشجع على كتابة كود حيث يقفز التنفيذ حول الملف المصدر ، مما يجعل عمليات التدقيق أكثر صعوبة. يشجع Vyper على إجراء فحوصات مضمنة في كل وظيفة لتحسين الوضوح.
- Class Inheritance الوراثة الطبقية تجعل من السهل كتابة تعليمات برمجية مضللة. ينتشر منطق العقود عبر ملفات متعددة ، مما يقلل من قابلية القراءة ويتطلب فهمًا إضافيًا لكيفية عمل الوراثة في حالة وجود تعارضات.
- Inline Assembly يتيح التجميع المضمن إمكانية معالجة المتغيرات دون الرجوع إليها مباشرةً بالاسم. هذا يجعل التطوير والتدقيق أكثر صعوبة ويمكن أن يؤدي إلى وجود أخطاء.
- Function overloading زقد تكون العقود المليئة بالوظائف مربكة. قد لا يكون من الواضح ما الوظيفة التي يتم استدعاؤها في مواقف محددة.
- Operator overloading
- Recursive calling في الاتصال التكراري ليس من الممكن تعيين حد أعلى لحدود الغاز في العقود ذات الاتصال المتكرر
- Infinite-length loops في الحلقات ذات الطول اللانهائي ليس من الممكن تعيين حد أعلى لحدود الغاز في العقود ذات الحلقات اللانهائية الطول
- Binary fixed point في النقطة الثابتة الثنائية ، التقريبات مطلوبة (على سبيل المثال في Python 0.3 + 0.3 + 0.3 + 0.1! = 1).
كما ترى في قائمة الميزات التي يفتقر إليها Vyper ، فإن كتابة كود واضح ومفهوم له أهمية قصوى.
لا يحاول Vyper أن يكون بديلاً عن Solidity. من المفترض أن تكون لغة برمجة عقد ذكية أكثر تركيزًا على الأمان ومن المحتمل ألا تكون قادرة على فعل كل ما تستطيع Solidity القيام به.
مصادر إضافية
- الكود: Simple Bank in Vyper (ConsenSys Academy) هذه نسخة Vyper من تمرين Simple Bank.
- كورس : Learn Vyper (0.2) سلسلة شاملة من مقاطع الفيديو التي تغطي أنواع البيانات والوظائف والمتغيرات والتحكم المنطقي والأخطاء والواجهات وغير ذلك الكثير.
- مقال :Develop a DeFi Project using Python (Chainlink)
- مقال : Vyper and Brownie Contract Development on EVM Chains مقال مثير للاهتمام يتجول في تطوير عقد باستخدام Vyper و Brownie.
المستندات: Vyper by Example من وثائق Vyper ، تجول لأنماط التطوير الشائعة في Vyper.
إضافة تعليق