تقف الإيثيريوم وراء واحدة من أشهر العملات الرقمية – ومع ذلك فهي أكثر من ذلك بكثير. فبفضل الخوارزميات، يمكن إدارة العملة المشفرة بشكل مستقل تمامًا. ولكن كيف تعمل “العقود الذكية”، وإلى أي مدى وصلنا في هذا الطريق؟
كيف تعمل العقود الذكية في الإيثيريوم؟
لفهم مبدأ العقود الذكية في الإيثيريوم، نحتاج أولاً إلى القيام برحلة صغيرة في عالم لغات البرمجة. تنقسم لغات البرمجة الحالية بشكل أساسي إلى مجموعتين: اللغات المفسرة واللغات المترجمة. في المجموعة الأولى، تتم كتابة البرامج بلغة عالية المستوى ثم يتم تنفيذها بواسطة مترجم فوري. مثالان شائعان هما بايثون وجافا سكريبت. تعد اللغات المفسرة شائعة في العديد من مجالات التطبيق (مثل الويب) لأنها تسمح لك بالبدء مباشرةً. كما أنها عالمية جدًا ويمكن استخدامها على منصات مختلفة دون الحاجة إلى أدوات إضافية.
في المقابل، هناك لغات مجمّعة، حيث يقوم المحول البرمجي أولاً بتحويل نص البرنامج إلى لغة أخرى – غالبًا ما تكون شفرة آلة ثنائية. هذا الرمز الثنائي يعتمد على المنصة ويتم تنفيذه مباشرة على المعالج. يمكن للمترجم (وينبغي عليه) إنتاج كود مخصص لمجموعة تعليمات المعالج، على سبيل المثال لوحدات المعالجة المركزية المتوافقة مع ARM أو Intel. الممثلون المعروفون لهذا النوع هم C و Rust.
ومع ذلك، فإن الواقع، كما هو الحال دائمًا، أكثر تعقيدًا مما توحي به هذه الفئات البسيطة. منذ بعض الوقت، كانت هناك أشكال هجينة، مثل Java. لا يقوم مترجم جافا بترجمة كود جافا مباشرةً إلى كود آلة “حقيقي”، ولكن إلى تنسيق وسيط خاص. ثم يتم تنفيذ هذه الصيغة الوسيطة بدورها بواسطة مترجم فوري – آلة جافا الافتراضية – على البنية الملموسة للمعالج.
تعمل عقود الإيثيريوم الذكية أيضًا بطريقة مماثلة. فجميع العُقد التي تتحقق من صحة المعاملات وتستخرج عملة جديدة في الإيثيريوم تحتوي على مثيل لآلة الإيثيريوم الافتراضية (EVM). وتحدد الورقة الصفراء، وهي المواصفات الفنية للإيثيريوم، بالتفصيل التعليمات التي تدعم آلة EVM – وكيف ينبغي تنفيذها.
هذا تطوير خاص مع عدد من الميزات الخاصة:
التفاعل مع العالم الخارجي غير ممكن: يجب أن تكون جميع القرارات الخوارزمية ناتجة عن سلسلة الكتل ومعاملاتها.
يعتمد الحساب على قيم 256 بت لتسهيل التعامل مع عناوين ومبالغ أكبر.
يتم دمج العمليات الخاصة مثل دوال التجزئة لزيادة الأداء.
يتم تعيين دالة تكلفة (وقود) لجميع التعليمات، والتي تتوافق تقريبًا مع وقت التنفيذ المطلوب ومقدار الذاكرة المطلوبة. يشيع استخدام مصطلح القياس باللغة الإنجليزية.
البرمجة على EVM
كما هو الحال مع نظام جافا البيئي، هناك العديد من لغات البرمجة التي تتوفر لها مُجمِّعات EVM. اللغة الأكثر شيوعًا هي لغة Solidity، والتي تشبه ظاهريًا (نحويًا) لغة JavaScript. في نهاية عام 2020، تسرد وثائق الإيثيريوم لغتين إضافيتين: Vyper، التي تعتمد على لغة بايثون، و Yul Plus، وهي لغة مستقلة تمامًا.
ما تشترك فيه جميع هذه اللغات هو أنها لغات خاصة بالمجال، لأنها، على عكس اللغات ذات الأغراض العامة، تحتل مكانة خاصة بخصائص معينة، وعلى وجه الخصوص، محرك تنفيذ خاص: EVM. بالطبع، هذه اللغات الخاصة بالمجال (DSLs) هي في الأساس فكرة جيدة لتقليل تعقيد التطبيقات.
ولكن في حالة EVM، يبدو أن هذا غير منطقي. ففي نهاية المطاف، يمكنها – بغض النظر عن عدم القدرة على التفاعل مع العالم خارج سلسلة الكتل – تنفيذ خوارزميات عشوائية، لذا فهي (ببساطة) مكتملة من حيث تورينج.
لماذا لا تستخدم لغة وبيئة تنفيذ موجودة؟
إذا لزم الأمر، سيتعين إزالة بعض الوظائف، ولكن يمكننا الاستفادة من خبرة أطول وأدوات أكثر استقرارًا – والأهم من ذلك – قاعدة أوسع من المبرمجين. في الواقع، من المعروف أن شعبية لغة البرمجة اليوم لا تتحدد شعبيتها فقط بما إذا كانت موجزة أو آمنة من حيث النوع أو ديناميكية بشكل خاص، ولكن أيضًا بمدى سهولة الوصول إلى العديد من المكتبات والحزم الموجودة. أفضل مثال على هذا التغير في العصر هو جافا سكريبت، والتي غالبًا ما يتم انتقادها بسبب دلالاتها الفجة، ولكن يجب اعتبارها لغة البرمجة الأكثر شعبية على أحدث تقدير منذ حزمة NPM المليون.
Webassembly، لغة وسيطة عالمية
توصّل القائمون على مواصفات الإيثيريوم إلى استنتاج مفاده أنه يمكن حل بعض المشاكل من خلال التخلي عن التطوير المخصص لصالح لغة عالمية. كم هو مناسب أن التطوير جارٍ على الويب لإنشاء بديل للكلب الكبير JavaScript: Webassembly (WASM). هذه لغة وسيطة عالمية وصيغة ثنائية في آنٍ واحد، بالإضافة إلى مواصفات للمترجمين الفوريين. وكما يوحي اسمها، تم تصميم هذا المعيار المفتوح في الأصل للويب. في غضون ذلك، تم فحص مجالات تطبيق أخرى (مثل تطبيقات الهواتف الذكية).
ويقود تطوير لغة WASM عمالقة الصناعة مثل مايكروسوفت وجوجل وأبل. ومن السمات الرئيسية للغة أنها صُممت منذ البداية لتكون قابلة للنقل. يمكن ملاحظة ذلك من خلال حقيقة أن العديد من لغات البرمجة الحالية مثل Rust أو C++C أو Go يمكن تجميعها بالفعل لتجميع الويب.