العقود الذكية هي بروتوكولات تنفيذ تلقائي تعمل على منصات البلوكشين، مما يتيح للطرفين في العقد إجراء معاملات موثوقة مباشرة دون الحاجة إلى وسطاء أو طرف ثالث موثوق، وهذه المعاملات قابلة للتتبع وغير قابلة للعكس. تحتوي العقود الذكية على دوال برمجية، ويمكنها التفاعل مع عقود أخرى، وعندما يتم استيفاء الشروط المحددة مسبقًا، ستقوم العقود الذكية بتنفيذ دوال الكود المحددة في العقد تلقائيًا.
تم تقديم مفهوم العقود الذكية لأول مرة من قبل عالم الكمبيوتر نيك سزابو في التسعينيات، ولكن لم يبدأ استخدام العقود الذكية بشكل واسع حتى ظهور سلسلة الكتل إيثريوم. تم إطلاق إيثريوم في عام 2015، ويدعم نشر وتنفيذ العقود الذكية، وبخلاف بيتكوين التي تُستخدم بشكل رئيسي في المعاملات البسيطة للعملات المشفرة، يمكن استخدام لغة البرمجة القابلة للتعميم على منصة إيثريوم لبناء تطبيقات لامركزية، لذا يُطلق عليها لقب سلسلة الكتل من الجيل الثاني.
تعتبر لغة العقود الذكية لغة برمجة تُستخدم لكتابة العقود الذكية، حيث يتم تجميعها إلى كود بايت يتم تنفيذه على الآلة الافتراضية لمنصة العقود الذكية على البلوكشين، لتنفيذ الكود الذي يحقق المنطق المحدد. يجب أن تكون لغة العقود الذكية قادرة على تمكين المطورين من التعبير عن قواعد العقد بطريقة آمنة وفعالة، وعادةً ما توفر مجموعة من الأدوات والتجريدات للتعامل مع معاملات البلوكشين والحالة.
العقود الذكية
معظم مطوري العقود الذكية يقومون بالتطوير على الإيثيريوم وسلاسل الكتل المتوافقة مع EVM، بينما سولانا هي الأكثر عددًا من المطورين في نظام بيئي غير متوافق مع EVM، ومove تم بناؤه خصيصًا لتطوير العقود الذكية على البلوكشين بشكل آمن.
على الرغم من وجود العديد من سلاسل الكتل العامة الأخرى التي لديها لغات عقود ذكية متخصصة، مثل TON/FunC و Cardano/Plutus و ICP/Motoko و Flow/Cadence و Starknet/Cairo، إلا أنها مفرطة في التفتت.
لذلك ستقوم هذه المقالة بتصنيف وتقديم لغات العقود الذكية وفقًا لنظام EVM ونظام Solana ونظام Move.
نظام EVM
EVM هو جوهر الإيثيريوم، المسؤول عن تشغيل العقود الذكية ومعالجة المعاملات. يحدد بروتوكول الإيثيريوم نوعًا من بايت كود الذي يعمل على EVM، وتم بناء لغة وسيطة Yul و Yul+ فوقه، وتم بناء لغات عالية المستوى مثل Solidty/Vyper/Fe فوق اللغة الوسيطة، حيث تهدف اللغات عالية المستوى إلى تقليل صعوبة تطوير العقود الذكية للمستخدمين النهائيين. من فوائد اعتماد بنية متعددة المستويات أن اللغة الوسيطة مناسبة لترجمة إلى لغة الآلة، وكذلك مناسبة لتحسين البرنامج بالكامل، وسهلة الفحص اليدوي، وإجراء التحقق الرسمي وما إلى ذلك، ولكن كلما زادت المستويات، زادت تكلفة ضمان الموثوقية القابلة للإثبات، حيث يحتاج كل مستوى إلى إجراء التحقق المناسب، بالطبع، كلما كانت اللغة في المستوى الأدنى أبسط، كانت تكلفة التحقق منها أقل.
على شبكة الإيثيريوم وسلاسل الكتل المتوافقة مع EVM، يمكن للمطورين استخدام لغات برمجة عالية المستوى مختلفة، وأشهرها وأكثرها صيانة هي Solidity وVyper، بالإضافة إلى إمكانية اختيار Yul وYul+ وFe وHuff.
تم اقتراح Solidity لأول مرة من قبل Gavin Wood، CTO لشركة Ethereum، في عام 2014، ثم تولت فريق Ethereum بقيادة Christian Reitwiessner تطويره في وقت لاحق. تعتبر Solidity لغة برمجة موجهة للكائنات، متأثرة بشدة بـ C++ وPython وJavaScript، وقد تم تصميمها خصيصًا لـ EVM. من أجل إعادة استخدام الكود، يتم اعتبار العقود الذكية ككائنات فئة، مستفيدة من الوراثة المتعددة. بشكل خاص، تحدد Solidity معيار واجهة ثنائية التطبيق (ABI) للتفاعل مع عقودها. حاليًا، يُعتبر ABI الخاص بـ Solidity هو المعيار الفعلي لـ EVM DSL.
تم تطوير Vyper بواسطة فريق من أحد مؤسسي إيثريوم، فيتاليك بوترين، بهدف أن يكون بديلاً عن Solidity، وتم إطلاقه في عام 2017. Vyper هي لغة برمجة مشابهة لـ Python وموجهة نحو العقود، مصممة أيضًا لـ EVM. تم تحسين Vyper من أجل الأمان، وقابلية القراءة، وقدرة التدقيق وكفاءة الغاز. لا تعتمد Vyper على نمط البرمجة الكائنية، ولا يمكن استخدام التجميع المضمن.
Yul هي لغة تجميع ذات تدفق تحكم متقدم وكم كبير من التجريد، وهي جزء من مجموعة أدوات Solidity. معظم ميزات Yul مكشوفة في كتل التجميع المضمنة في Solidity، ويمكن استغلال الوظائف التي لا تدعمها Solidity، وتخصيص التخزين والذاكرة وcalldata. Yul+ هو امتداد لـ Yul ويمكن اعتباره ترقية تجريبية لـ Yul.
Fe هي لغة عالية المستوى مشابهة لـ Rust، تم إصدارها في يناير 2021. لا تستخدم Fe نمط البرمجة الكائنية، بل تعيد استخدام الشيفرة من خلال نظام قائم على الوحدات، حيث يمكن إعلان المتغيرات والأنواع والدوال داخل الوحدة، ويمكن استيرادها بطريقة مشابهة لـ Rust.
Huff هي لغة تجميع، تتميز بالتحكم اليدوي في المكدس وتجريد الحد الأدنى من مجموعة تعليمات EVM. من خلال توجيه «#include»، يمكن تحليل أي ملف Huff مضمن أثناء الترجمة، مما يتيح إعادة استخدام الشفرات.
على إيثريوم، تشكل العقود الذكية المطورة باستخدام Solidity الغالبية العظمى، حوالي 90%، وهي عشرة أضعاف الرقم الثاني Vyper، بينما Fee نظرًا لانطلاقه في وقت لاحق، نادرًا ما يستخدمه المطورون. يُعتبر Yul و Yul+ عادةً ككتل التجميع المضمنة لـ Solidity، مما يسمح بالوصول على مستوى منخفض إلى مجموعة تعليمات EVM، وغالبًا ما يُستخدم لتحسين الغاز. Huff أكثر انخفاضًا من Yul/Yul+، حيث يمكنه التعامل يدويًا مع المكدس واستدعاء تعليمات EVM، وغالبًا ما يُستخدم لتحسين حدود الغاز.
سلسلة سولانا
تشتهر سولانا بآلية PoH (إثبات التاريخ) الخاصة بها، بالإضافة إلى انخفاض زمن الانتقال وارتفاع معدل نقل البيانات، وهي واحدة من أبرز "قتلة الإيثريوم". سولانا أيضًا واحدة من أسرع سلاسل الكتل العامة نموًا من حيث القيمة السوقية وتطوير النظام البيئي في العام الماضي، مما أدى إلى نمو ملحوظ في مجتمع المطورين الخاص بها.
تُعرف Solana العقود الذكية باسم البرامج على السلسلة (Program)، وتستخدم بشكل رئيسي لغة Rust، ولكن على عكس سلاسل الكتل العامة الأخرى التي تستخدم لغة Rust، لا تستخدم Solana وقت تشغيل WASM، حيث تمتلك Solana آلة افتراضية فريدة من نوعها SVM وشفرة بايت SBF.
SVM هو وقت التشغيل الذي يعمل على شبكة Solana لتنفيذ العقود الذكية ومعالجة المعاملات، والمكون الرئيسي هو Sealevel. يتيح Sealevel تشغيل عدة عقود ذكية في وقت واحد دون التأثير على أداء بعضها البعض، مما يحقق المعالجة المتوازية في وقت تشغيل Solana. تحدد عقود Solana الذكية الحالة (الحسابات) التي سيتم قراءتها أو كتابتها أثناء وقت التشغيل، مما يسمح بتنفيذ المعاملات المتزامنة دون تضارب، مع ضمان اتساق البيانات.
SBF يعتمد على eBPF، والتي كانت تُعرف سابقاً باسم BPF (فلتر حزم بيركلي)، وكان الهدف منها هو فلترة حزم البيانات الشبكية بكفاءة، حيث يوفر eBPF مجموعة تعليمات أغنى، مما يسمح بالتدخل الديناميكي وتعديل سلوك نواة نظام التشغيل دون الحاجة لتغيير الشيفرة المصدرية، ويتميز بالأداء العالي والأمان وقابلية النقل. SBF مقارنةً بـ eBPF، يستخدم مُصدِقاً مخصصاً، يقوم بالتحقق ليس فقط من ضرورة إنهاء البرنامج خلال عدد معين من التعليمات (وهو ما يُعرف بمشكلة التوقف الشهيرة)، بل أيضاً يتحقق من صحة التعليمات وما إذا كانت هناك قفزات غير متجاوزة. بالإضافة إلى المُصدِق، يتم أيضاً حل بعض التفاصيل المتعلقة بـ eBPF التي قد تكون مشكلة قليلاً في تجميع العقود الذكية.
LLVM (آلة افتراضية منخفضة المستوى) هو هيكل وأدوات حديثة للتجميع، حيث يمكن للمجمع تحويل Rust إلى لغة وسيطة LLVM IR، ومن ثم يتم تحويل LLVM IR بواسطة الجانب الخلفي إلى eBPF للمنصة المستهدفة. من الناحية النظرية، يمكن كتابة العقود الذكية في Solana باستخدام أي لغة برمجة تدعم التحويل إلى LLVM IR، لكن في الواقع أجرت Solana Labs العديد من التغييرات على Rust و eBPF LLVM backend، وبعض هذه التغييرات ليست متاحة أساسًا في النسخة الرئيسية (Rust و LLVM). حاليًا، يدعم تطوير عقود Solana الذكية فقط Rust و Solang.
تقوم Mozilla بتطوير Rust، الذي تم إطلاقه في عام 2011، ويشبه في التركيب اللغوي C++، وهو لغة عامة تم تصميمها للأداء والأمان، وخاصة الأمان، وهي لغة ثابتة ومترجمة وليست محدودة فقط ببرامج العقود الذكية. مقارنةً بـ Solidity، تُعتبر Rust لغة برمجة منخفضة المستوى (low-level) ومتعددة النماذج، حيث تتميز بأداء عالٍ وأمان في الذاكرة. المترجم الرسمي لـ Rust هو rustc، حيث يقوم rustc بتحليل المصدر الخاص بـ Rust من خلال تحليل الكلمات، وتحليل التركيب، وتحليل الدلالة، وأخيرًا يقوم بتجميع الشيفرة إلى LLVM IR.
تم تطوير Solang بقيادة Hyperlege Labs وتم إطلاقه في عام 2023، وهو مُجمّع لـ Solidity قائم على بنية LLVM ل Solana و Polkadot، يدعم كتابة العقود الذكية باستخدام Solidity، لكن تم إجراء بعض التعديلات على بناء الجملة الفعلي لتوافقه مع بنية Solana و Polkadot. الهدف من Solang هو تبسيط انتقال المطورين إلى Solana أو Polkadot وتوسيع نطاق تطوير Solidity.
Rust هي اللغة الرئيسية المدعومة رسمياً من قبل سولانا، وتتميز بمزيد من الاستقرار؛ بينما تتمثل الميزة الرئيسية لـ Solang في توافقها مع لغة Solidity.
نظام Move
Move هي لغة برمجة جديدة للعقود الذكية، تم إطلاقها في عام 2019، وتم تطويرها في الأصل لمشروع دييم (Diem) التابع لمتا. تهدف Move إلى معالجة مسائل الأمان المتعلقة بالأصول والمعاملات، مما يسمح بتعريف الأصول والمعاملات بشكل صارم والتحكم فيها، وتتميز اللغة بـ:
حماية نوع الموارد من الدرجة الأولى (Frist Class Resources): نوع الموارد من الدرجة الأولى هو أولاً نوع من المتغيرات، ثم يتم تحديد متغيرات من هذا النوع: لا يمكن نسخه؛ لا يمكن تدميره بشكل ضمني؛ يمكن "نقله" فقط على عناوين برامج مختلفة؛
المرونة: يمكن تنفيذ bytecode Move مباشرة، أو يمكنه استدعاء كود Modules المنشور الآخر، ويمكن استدعاء برامج متعددة في صفقة واحدة، مما يتيح تنفيذ التحويلات المتعددة للأشخاص في صفقة واحدة بشكل مرن؛
الأمان، القابلية للتحقق: يوفر نظام ترميز Move حماية أمان مخصصة للموارد. لا يمكن نسخ موارد Move أو إعادة استخدامها أو تدميرها. يمكن فقط إنشاء أو تدمير نوع مورد من قبل الوحدة التي تعرف نوعه. ستقوم آلة Move الافتراضية بالتحقق من خلال كود بايت ثابت، وسترفض تشغيل البرامج التي لم تمر بعملية التحقق من كود البايت، لضمان أمانها.
بعد حل مشروع Diem، أسس الفريق المؤسس مشاريع Aptos و Sui، واختاروا لغة Move كلغة أساسية للعقود الذكية. ورثت Aptos Diem Move (Core Move)، بينما قامت Sui بكتابة عقودها الذكية من خلال الإصدار المخصص الخاص بها، Sui Move.
في Move، كل عقد ذكي هو وحدة تتكون من تعريفات دوال وهياكل، حيث يتم تجسيد الهياكل داخل الدوال ويمكن تمريرها إلى وحدات أخرى من خلال استدعاءات الدوال. مقارنةً بـ Core Move، تعتمد Sui Move نموذج بيانات قائم على الكائنات، حيث توجد ثلاثة أنواع مختلفة من الكائنات في Sui، وهي كائنات المالك، وكائنات المشاركة، وكائنات غير القابلة للتغيير. استراتيجية التوازي في Sui مشابهة لتلك الموجودة في Solana، حيث تحتاج المعاملات أيضًا إلى تحديد الكائنات التي يتم التعامل معها، مما يجعل هذا التصميم Sui قادرًا على التعامل بكفاءة مع المعاملات المتزامنة، وتحقيق قدرة المعالجة المتوازية دون الحاجة إلى الترتيب العالمي المطلوب في سلاسل الكتل التقليدية.
تم تصميم المترجم والمحقق والآلة الافتراضية لـ Move من الصفر. يعتبر المحقق واحدًا من الآليات الأمنية الأساسية لـ Move، حيث يُستخدم للحفاظ على نموذج البرمجة المركزي للموارد في Move. المحقق في Move هو أداة تحليل ثابتة، تقوم بتحليل الشيفرة البايتية لـ Move وتحديد ما إذا كانت تمتثل للقواعد المطلوبة للأمان المتعلقة بالأنواع والذاكرة والموارد، ويجب أن تمر جميع الوحدات التي تُرفع إلى السلسلة عبر المحقق.
بالمقارنة مع لغات مثل Solidity، تعتبر Move لغة صديقة للتحقق الرسمي، حيث إنها لا تدعم ميزات مثل التعيين الديناميكي (dynamic dispatch)، مما يعني أنه يمكن تحديد جميع مسارات العقود في مرحلة الترجمة، بدلاً من تحديد الوظائف التي يجب تنفيذها أثناء تنفيذ العقد، مما يسمح بتحليل والتحقق بشكل كامل.
توجد أداة تحقق رسمية أخرى لعقود الذكية تُعرف باسم Move Prover. يحتاج المطورون إلى كتابة شروط التحقق لعقود الذكية (على شكل تأكيدات)، وستقوم Move Prover في الخلفية بتحويل هذه الشروط إلى صيغ SMT، ثم استخدام محللات SMT للتحقق منها.
العقود الذكية开发工具
بالنسبة لأولئك الذين يرغبون في دخول عالم Web3 أو تعلم تطوير العقود على Ethereum وغيرها من سلاسل الكتل المتوافقة مع EVM، فإن Solidity هو الخيار الأمثل. وبفضل شعبية Solidity، أصبحت أدوات التطوير أكثر نضجًا، ومن أبرزها:
Hardhat هو بيئة تطوير لتجميع ونشر واختبار وتصحيح تطبيقات الإيثيريوم. يساعد المطورين في إدارة وأتمتة المهام المتكررة الكامنة في بناء العقود الذكية وDApps، ويسهل إدخال المزيد من الميزات حول سير العمل هذا;
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
تسجيلات الإعجاب 12
أعجبني
12
3
مشاركة
تعليق
0/400
ApeWithNoFear
· منذ 19 س
العقود الذكية搞不定 这可咋混!
شاهد النسخة الأصليةرد0
ImpermanentLossFan
· منذ 19 س
العقود الذكية ثورp个毛...其实就是个代码块
شاهد النسخة الأصليةرد0
0xOverleveraged
· منذ 19 س
لا ألعب بالعملات الافتراضية، فقط أتداول العقود الآجلة، الرافعة المالية العالية هي ما يجعل الأمر مثيرًا.
دورة إلزامية لمطوري Web3: تحليل شامل للغة العقود الذكية
تنمية الذات لمطوري Web3 - لغة العقود الذكية
المقدمة الأساسية
العقود الذكية هي بروتوكولات تنفيذ تلقائي تعمل على منصات البلوكشين، مما يتيح للطرفين في العقد إجراء معاملات موثوقة مباشرة دون الحاجة إلى وسطاء أو طرف ثالث موثوق، وهذه المعاملات قابلة للتتبع وغير قابلة للعكس. تحتوي العقود الذكية على دوال برمجية، ويمكنها التفاعل مع عقود أخرى، وعندما يتم استيفاء الشروط المحددة مسبقًا، ستقوم العقود الذكية بتنفيذ دوال الكود المحددة في العقد تلقائيًا.
تم تقديم مفهوم العقود الذكية لأول مرة من قبل عالم الكمبيوتر نيك سزابو في التسعينيات، ولكن لم يبدأ استخدام العقود الذكية بشكل واسع حتى ظهور سلسلة الكتل إيثريوم. تم إطلاق إيثريوم في عام 2015، ويدعم نشر وتنفيذ العقود الذكية، وبخلاف بيتكوين التي تُستخدم بشكل رئيسي في المعاملات البسيطة للعملات المشفرة، يمكن استخدام لغة البرمجة القابلة للتعميم على منصة إيثريوم لبناء تطبيقات لامركزية، لذا يُطلق عليها لقب سلسلة الكتل من الجيل الثاني.
تعتبر لغة العقود الذكية لغة برمجة تُستخدم لكتابة العقود الذكية، حيث يتم تجميعها إلى كود بايت يتم تنفيذه على الآلة الافتراضية لمنصة العقود الذكية على البلوكشين، لتنفيذ الكود الذي يحقق المنطق المحدد. يجب أن تكون لغة العقود الذكية قادرة على تمكين المطورين من التعبير عن قواعد العقد بطريقة آمنة وفعالة، وعادةً ما توفر مجموعة من الأدوات والتجريدات للتعامل مع معاملات البلوكشين والحالة.
العقود الذكية
معظم مطوري العقود الذكية يقومون بالتطوير على الإيثيريوم وسلاسل الكتل المتوافقة مع EVM، بينما سولانا هي الأكثر عددًا من المطورين في نظام بيئي غير متوافق مع EVM، ومove تم بناؤه خصيصًا لتطوير العقود الذكية على البلوكشين بشكل آمن.
على الرغم من وجود العديد من سلاسل الكتل العامة الأخرى التي لديها لغات عقود ذكية متخصصة، مثل TON/FunC و Cardano/Plutus و ICP/Motoko و Flow/Cadence و Starknet/Cairo، إلا أنها مفرطة في التفتت.
لذلك ستقوم هذه المقالة بتصنيف وتقديم لغات العقود الذكية وفقًا لنظام EVM ونظام Solana ونظام Move.
نظام EVM
EVM هو جوهر الإيثيريوم، المسؤول عن تشغيل العقود الذكية ومعالجة المعاملات. يحدد بروتوكول الإيثيريوم نوعًا من بايت كود الذي يعمل على EVM، وتم بناء لغة وسيطة Yul و Yul+ فوقه، وتم بناء لغات عالية المستوى مثل Solidty/Vyper/Fe فوق اللغة الوسيطة، حيث تهدف اللغات عالية المستوى إلى تقليل صعوبة تطوير العقود الذكية للمستخدمين النهائيين. من فوائد اعتماد بنية متعددة المستويات أن اللغة الوسيطة مناسبة لترجمة إلى لغة الآلة، وكذلك مناسبة لتحسين البرنامج بالكامل، وسهلة الفحص اليدوي، وإجراء التحقق الرسمي وما إلى ذلك، ولكن كلما زادت المستويات، زادت تكلفة ضمان الموثوقية القابلة للإثبات، حيث يحتاج كل مستوى إلى إجراء التحقق المناسب، بالطبع، كلما كانت اللغة في المستوى الأدنى أبسط، كانت تكلفة التحقق منها أقل.
على شبكة الإيثيريوم وسلاسل الكتل المتوافقة مع EVM، يمكن للمطورين استخدام لغات برمجة عالية المستوى مختلفة، وأشهرها وأكثرها صيانة هي Solidity وVyper، بالإضافة إلى إمكانية اختيار Yul وYul+ وFe وHuff.
تم اقتراح Solidity لأول مرة من قبل Gavin Wood، CTO لشركة Ethereum، في عام 2014، ثم تولت فريق Ethereum بقيادة Christian Reitwiessner تطويره في وقت لاحق. تعتبر Solidity لغة برمجة موجهة للكائنات، متأثرة بشدة بـ C++ وPython وJavaScript، وقد تم تصميمها خصيصًا لـ EVM. من أجل إعادة استخدام الكود، يتم اعتبار العقود الذكية ككائنات فئة، مستفيدة من الوراثة المتعددة. بشكل خاص، تحدد Solidity معيار واجهة ثنائية التطبيق (ABI) للتفاعل مع عقودها. حاليًا، يُعتبر ABI الخاص بـ Solidity هو المعيار الفعلي لـ EVM DSL.
تم تطوير Vyper بواسطة فريق من أحد مؤسسي إيثريوم، فيتاليك بوترين، بهدف أن يكون بديلاً عن Solidity، وتم إطلاقه في عام 2017. Vyper هي لغة برمجة مشابهة لـ Python وموجهة نحو العقود، مصممة أيضًا لـ EVM. تم تحسين Vyper من أجل الأمان، وقابلية القراءة، وقدرة التدقيق وكفاءة الغاز. لا تعتمد Vyper على نمط البرمجة الكائنية، ولا يمكن استخدام التجميع المضمن.
Yul هي لغة تجميع ذات تدفق تحكم متقدم وكم كبير من التجريد، وهي جزء من مجموعة أدوات Solidity. معظم ميزات Yul مكشوفة في كتل التجميع المضمنة في Solidity، ويمكن استغلال الوظائف التي لا تدعمها Solidity، وتخصيص التخزين والذاكرة وcalldata. Yul+ هو امتداد لـ Yul ويمكن اعتباره ترقية تجريبية لـ Yul.
Fe هي لغة عالية المستوى مشابهة لـ Rust، تم إصدارها في يناير 2021. لا تستخدم Fe نمط البرمجة الكائنية، بل تعيد استخدام الشيفرة من خلال نظام قائم على الوحدات، حيث يمكن إعلان المتغيرات والأنواع والدوال داخل الوحدة، ويمكن استيرادها بطريقة مشابهة لـ Rust.
Huff هي لغة تجميع، تتميز بالتحكم اليدوي في المكدس وتجريد الحد الأدنى من مجموعة تعليمات EVM. من خلال توجيه «#include»، يمكن تحليل أي ملف Huff مضمن أثناء الترجمة، مما يتيح إعادة استخدام الشفرات.
على إيثريوم، تشكل العقود الذكية المطورة باستخدام Solidity الغالبية العظمى، حوالي 90%، وهي عشرة أضعاف الرقم الثاني Vyper، بينما Fee نظرًا لانطلاقه في وقت لاحق، نادرًا ما يستخدمه المطورون. يُعتبر Yul و Yul+ عادةً ككتل التجميع المضمنة لـ Solidity، مما يسمح بالوصول على مستوى منخفض إلى مجموعة تعليمات EVM، وغالبًا ما يُستخدم لتحسين الغاز. Huff أكثر انخفاضًا من Yul/Yul+، حيث يمكنه التعامل يدويًا مع المكدس واستدعاء تعليمات EVM، وغالبًا ما يُستخدم لتحسين حدود الغاز.
سلسلة سولانا
تشتهر سولانا بآلية PoH (إثبات التاريخ) الخاصة بها، بالإضافة إلى انخفاض زمن الانتقال وارتفاع معدل نقل البيانات، وهي واحدة من أبرز "قتلة الإيثريوم". سولانا أيضًا واحدة من أسرع سلاسل الكتل العامة نموًا من حيث القيمة السوقية وتطوير النظام البيئي في العام الماضي، مما أدى إلى نمو ملحوظ في مجتمع المطورين الخاص بها.
تُعرف Solana العقود الذكية باسم البرامج على السلسلة (Program)، وتستخدم بشكل رئيسي لغة Rust، ولكن على عكس سلاسل الكتل العامة الأخرى التي تستخدم لغة Rust، لا تستخدم Solana وقت تشغيل WASM، حيث تمتلك Solana آلة افتراضية فريدة من نوعها SVM وشفرة بايت SBF.
SVM هو وقت التشغيل الذي يعمل على شبكة Solana لتنفيذ العقود الذكية ومعالجة المعاملات، والمكون الرئيسي هو Sealevel. يتيح Sealevel تشغيل عدة عقود ذكية في وقت واحد دون التأثير على أداء بعضها البعض، مما يحقق المعالجة المتوازية في وقت تشغيل Solana. تحدد عقود Solana الذكية الحالة (الحسابات) التي سيتم قراءتها أو كتابتها أثناء وقت التشغيل، مما يسمح بتنفيذ المعاملات المتزامنة دون تضارب، مع ضمان اتساق البيانات.
SBF يعتمد على eBPF، والتي كانت تُعرف سابقاً باسم BPF (فلتر حزم بيركلي)، وكان الهدف منها هو فلترة حزم البيانات الشبكية بكفاءة، حيث يوفر eBPF مجموعة تعليمات أغنى، مما يسمح بالتدخل الديناميكي وتعديل سلوك نواة نظام التشغيل دون الحاجة لتغيير الشيفرة المصدرية، ويتميز بالأداء العالي والأمان وقابلية النقل. SBF مقارنةً بـ eBPF، يستخدم مُصدِقاً مخصصاً، يقوم بالتحقق ليس فقط من ضرورة إنهاء البرنامج خلال عدد معين من التعليمات (وهو ما يُعرف بمشكلة التوقف الشهيرة)، بل أيضاً يتحقق من صحة التعليمات وما إذا كانت هناك قفزات غير متجاوزة. بالإضافة إلى المُصدِق، يتم أيضاً حل بعض التفاصيل المتعلقة بـ eBPF التي قد تكون مشكلة قليلاً في تجميع العقود الذكية.
LLVM (آلة افتراضية منخفضة المستوى) هو هيكل وأدوات حديثة للتجميع، حيث يمكن للمجمع تحويل Rust إلى لغة وسيطة LLVM IR، ومن ثم يتم تحويل LLVM IR بواسطة الجانب الخلفي إلى eBPF للمنصة المستهدفة. من الناحية النظرية، يمكن كتابة العقود الذكية في Solana باستخدام أي لغة برمجة تدعم التحويل إلى LLVM IR، لكن في الواقع أجرت Solana Labs العديد من التغييرات على Rust و eBPF LLVM backend، وبعض هذه التغييرات ليست متاحة أساسًا في النسخة الرئيسية (Rust و LLVM). حاليًا، يدعم تطوير عقود Solana الذكية فقط Rust و Solang.
تقوم Mozilla بتطوير Rust، الذي تم إطلاقه في عام 2011، ويشبه في التركيب اللغوي C++، وهو لغة عامة تم تصميمها للأداء والأمان، وخاصة الأمان، وهي لغة ثابتة ومترجمة وليست محدودة فقط ببرامج العقود الذكية. مقارنةً بـ Solidity، تُعتبر Rust لغة برمجة منخفضة المستوى (low-level) ومتعددة النماذج، حيث تتميز بأداء عالٍ وأمان في الذاكرة. المترجم الرسمي لـ Rust هو rustc، حيث يقوم rustc بتحليل المصدر الخاص بـ Rust من خلال تحليل الكلمات، وتحليل التركيب، وتحليل الدلالة، وأخيرًا يقوم بتجميع الشيفرة إلى LLVM IR.
تم تطوير Solang بقيادة Hyperlege Labs وتم إطلاقه في عام 2023، وهو مُجمّع لـ Solidity قائم على بنية LLVM ل Solana و Polkadot، يدعم كتابة العقود الذكية باستخدام Solidity، لكن تم إجراء بعض التعديلات على بناء الجملة الفعلي لتوافقه مع بنية Solana و Polkadot. الهدف من Solang هو تبسيط انتقال المطورين إلى Solana أو Polkadot وتوسيع نطاق تطوير Solidity.
Rust هي اللغة الرئيسية المدعومة رسمياً من قبل سولانا، وتتميز بمزيد من الاستقرار؛ بينما تتمثل الميزة الرئيسية لـ Solang في توافقها مع لغة Solidity.
نظام Move
Move هي لغة برمجة جديدة للعقود الذكية، تم إطلاقها في عام 2019، وتم تطويرها في الأصل لمشروع دييم (Diem) التابع لمتا. تهدف Move إلى معالجة مسائل الأمان المتعلقة بالأصول والمعاملات، مما يسمح بتعريف الأصول والمعاملات بشكل صارم والتحكم فيها، وتتميز اللغة بـ:
حماية نوع الموارد من الدرجة الأولى (Frist Class Resources): نوع الموارد من الدرجة الأولى هو أولاً نوع من المتغيرات، ثم يتم تحديد متغيرات من هذا النوع: لا يمكن نسخه؛ لا يمكن تدميره بشكل ضمني؛ يمكن "نقله" فقط على عناوين برامج مختلفة؛
المرونة: يمكن تنفيذ bytecode Move مباشرة، أو يمكنه استدعاء كود Modules المنشور الآخر، ويمكن استدعاء برامج متعددة في صفقة واحدة، مما يتيح تنفيذ التحويلات المتعددة للأشخاص في صفقة واحدة بشكل مرن؛
الأمان، القابلية للتحقق: يوفر نظام ترميز Move حماية أمان مخصصة للموارد. لا يمكن نسخ موارد Move أو إعادة استخدامها أو تدميرها. يمكن فقط إنشاء أو تدمير نوع مورد من قبل الوحدة التي تعرف نوعه. ستقوم آلة Move الافتراضية بالتحقق من خلال كود بايت ثابت، وسترفض تشغيل البرامج التي لم تمر بعملية التحقق من كود البايت، لضمان أمانها.
بعد حل مشروع Diem، أسس الفريق المؤسس مشاريع Aptos و Sui، واختاروا لغة Move كلغة أساسية للعقود الذكية. ورثت Aptos Diem Move (Core Move)، بينما قامت Sui بكتابة عقودها الذكية من خلال الإصدار المخصص الخاص بها، Sui Move.
في Move، كل عقد ذكي هو وحدة تتكون من تعريفات دوال وهياكل، حيث يتم تجسيد الهياكل داخل الدوال ويمكن تمريرها إلى وحدات أخرى من خلال استدعاءات الدوال. مقارنةً بـ Core Move، تعتمد Sui Move نموذج بيانات قائم على الكائنات، حيث توجد ثلاثة أنواع مختلفة من الكائنات في Sui، وهي كائنات المالك، وكائنات المشاركة، وكائنات غير القابلة للتغيير. استراتيجية التوازي في Sui مشابهة لتلك الموجودة في Solana، حيث تحتاج المعاملات أيضًا إلى تحديد الكائنات التي يتم التعامل معها، مما يجعل هذا التصميم Sui قادرًا على التعامل بكفاءة مع المعاملات المتزامنة، وتحقيق قدرة المعالجة المتوازية دون الحاجة إلى الترتيب العالمي المطلوب في سلاسل الكتل التقليدية.
تم تصميم المترجم والمحقق والآلة الافتراضية لـ Move من الصفر. يعتبر المحقق واحدًا من الآليات الأمنية الأساسية لـ Move، حيث يُستخدم للحفاظ على نموذج البرمجة المركزي للموارد في Move. المحقق في Move هو أداة تحليل ثابتة، تقوم بتحليل الشيفرة البايتية لـ Move وتحديد ما إذا كانت تمتثل للقواعد المطلوبة للأمان المتعلقة بالأنواع والذاكرة والموارد، ويجب أن تمر جميع الوحدات التي تُرفع إلى السلسلة عبر المحقق.
بالمقارنة مع لغات مثل Solidity، تعتبر Move لغة صديقة للتحقق الرسمي، حيث إنها لا تدعم ميزات مثل التعيين الديناميكي (dynamic dispatch)، مما يعني أنه يمكن تحديد جميع مسارات العقود في مرحلة الترجمة، بدلاً من تحديد الوظائف التي يجب تنفيذها أثناء تنفيذ العقد، مما يسمح بتحليل والتحقق بشكل كامل.
توجد أداة تحقق رسمية أخرى لعقود الذكية تُعرف باسم Move Prover. يحتاج المطورون إلى كتابة شروط التحقق لعقود الذكية (على شكل تأكيدات)، وستقوم Move Prover في الخلفية بتحويل هذه الشروط إلى صيغ SMT، ثم استخدام محللات SMT للتحقق منها.
العقود الذكية开发工具
بالنسبة لأولئك الذين يرغبون في دخول عالم Web3 أو تعلم تطوير العقود على Ethereum وغيرها من سلاسل الكتل المتوافقة مع EVM، فإن Solidity هو الخيار الأمثل. وبفضل شعبية Solidity، أصبحت أدوات التطوير أكثر نضجًا، ومن أبرزها:
Hardhat هو بيئة تطوير لتجميع ونشر واختبار وتصحيح تطبيقات الإيثيريوم. يساعد المطورين في إدارة وأتمتة المهام المتكررة الكامنة في بناء العقود الذكية وDApps، ويسهل إدخال المزيد من الميزات حول سير العمل هذا;
تقدم OpenZeppelin مكتبات OpenZeppelin Contracts مفتوحة المصدر، مكتوبة بلغة Solidity، لبناء العقود الذكية الآمنة. تجعل OpenZeppelin Contracts