صلابة

Solidity هي لغة برمجة لتنفيذ العقود الذكية [ 5 ] [ 6 ] على منصات البلوك تشين المختلفة ، وأبرزها إيثيريوم . [ 7 ] Solidity مرخصة بموجب رخصة جنو العمومية العامة الإصدار 3.0 . [ 8 ] صممها جافين وود [ 9 ] وطورها كريستيان ريتويسنر، وأليكس بيريجزازي، والعديد من المساهمين السابقين في نواة إيثيريوم. [ 10 ] تعمل البرامج المكتوبة بلغة Solidity على آلة إيثيريوم الافتراضية أو على آلات افتراضية متوافقة . [ 11 ]

تاريخ

تم اقتراح لغة Solidity في أغسطس 2014 بواسطة جافين وود [ 12 ] وتم تطوير اللغة لاحقًا بواسطة فريق Solidity التابع لمشروع Ethereum ، بقيادة كريستيان ريتويسنر.

تُعدّ لغة Solidity اللغة الأساسية المستخدمة لتطوير العقود الذكية لمنصة إيثيريوم وغيرها من سلاسل الكتل الخاصة ، مثل سلسلة كتل Hyperledger Fabric الموجهة للمؤسسات. وقد نشرت SWIFT نموذجًا تجريبيًا باستخدام Solidity يعمل على Hyperledger Fabric. [ 13 ] [ 14 ]

وصف

Solidity هي لغة برمجة ذات كتابة ثابتة مصممة لتطوير العقود الذكية التي تعمل على آلة إيثيريوم الافتراضية (EVM) أو الآلات الافتراضية المتوافقة. [ 15 ]

تستخدم لغة Solidity بنيةً شبيهةً بـ ECMAScript، مما يجعلها مألوفةً لمطوري الويب ؛ [ 16 ] إلا أنها، على عكس ECMAScript، تتميز بالكتابة الثابتة وأنواع الإرجاع المتغيرة . تختلف Solidity عن لغات EVM الأخرى، مثل Serpent و Mutan، في بعض الجوانب المهمة. فهي تدعم متغيرات الأعضاء المعقدة للعقود الذكية ، بما في ذلك التعيينات والهياكل الهرمية . كما تدعم عقود Solidity الذكية الوراثة ، بما في ذلك الوراثة المتعددة مع خطية C3. تُقدم Solidity واجهةً ثنائيةً للتطبيق (ABI) تُسهّل استخدام وظائف متعددة آمنة النوع ضمن عقد ذكي واحد (وقد دعمتها Serpent لاحقًا أيضًا). يتضمن اقتراح Solidity أيضًا "مواصفات اللغة الطبيعية"، وهو نظام توثيق لتحديد أوصاف مُركّزة على المستخدم لتداعيات استدعاءات الدوال . [ 17 ] [ 18 ]

مثال على برنامج Solidity: [ 19 ] [ 20 ]

// SPDX-License-Identifier: GPL-3.0 pragma solidity ^ 0.8.4 ;عقد عملة { // الكلمة المفتاحية "عام" تجعل المتغيرات // قابلة للوصول من عقود أخرى عنوان عام minter ؛ تعيين ( عنوان => عدد صحيح غير موجب ) أرصدة عامة ؛// تسمح الأحداث للعملاء بالتفاعل مع تغييرات محددة في العقد تقوم بتعريفها كحدث تم إرساله ( عنوان المرسل ، عنوان المستلم ، مبلغ غير صحيح // يتم تنفيذ كود المُنشئ فقط عند إنشاء العقد // constructor () { minter = msg.sender ; }// يرسل كمية من العملات المُنشأة حديثًا إلى عنوان // لا يمكن استدعاؤه إلا بواسطة مُنشئ العقد function mint ( address receiver , uint amount ) public { require ( msg.sender == minter ); balances [ receiver ] += amount ; }// تسمح لك الأخطاء بتوفير معلومات حول // سبب فشل العملية. يتم إرجاعها // إلى مستدعي الدالة. خطأ InsufficientBalance ( uint requested , uint available );// يرسل مبلغًا من العملات الموجودة // من أي مُستدعي إلى عنوان دالة الإرسال ( عنوان المُستقبِل ، عدد صحيح غير مُوقّع ) عامة { إذا ( المبلغ > الأرصدة [ رسالة.المُرسِل ]) التراجع رصيد غير كافٍ ({ المطلوب : المبلغ ، المتاح : الأرصدة [ رسالة.المُرسِل ] });balances [ msg.sender ] -= amount ; balances [ receiver ] += amount ; emit Sent ( msg.sender , receiver , amount ); } }

نقد

يصعب بطبيعتها فهم العديد من خصائص الأمان في العقود الذكية بشكل مباشر، كما أن اكتمال تورينج في لغة Solidity يعني استحالة أتمتة التحقق من أي خاصية بشكل قاطع . قد تغفل الحلول الآلية الحالية لتحليل أمان العقود الذكية عن انتهاكات حرجة، وتُنتج نتائج إيجابية خاطئة، وتفشل في تحقيق تغطية كافية للتعليمات البرمجية في العقود الواقعية. [ 21 ] وقد وُجهت اللائمة إلى Solidity في التنفيذ المُعرّض للأخطاء لعقود إيثيريوم الذكية نظرًا لطبيعتها غير البديهية، وافتقارها إلى بنيات للتعامل مع الجوانب الخاصة بمجال البلوك تشين، وعدم وجود توثيق مركزي للثغرات الأمنية المعروفة . [ 22 ]

في عام 2016، صرّح باحث من جامعة كورنيل بأن لغة Solidity تتحمل جزءًا من المسؤولية عن اختراق منظمة DAO الذي وقع في ذلك العام. وقال: "لم يكن هذا في الواقع خللًا أو ثغرة في عقد DAO نفسه؛ فمن الناحية التقنية، كانت آلة إيثيريوم الافتراضية (EVM) تعمل كما هو مُخطط لها، ولكن Solidity أدخلت ثغرات أمنية في العقود لم يلحظها المجتمع فحسب، بل غفل عنها أيضًا مصممو اللغة أنفسهم." [ 23 ]

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

مراجع

  1. 1 2 "المساهمون في ethereum/solidity" . GitHub . تم الاطلاع عليه بتاريخ 30 مارس 2023 .
  2. "الإصدار 0.8.36" . 9 يوليو 2026. تم الاطلاع عليه في 10 يوليو 2026 .
  3. "بناء برامج أفضل، معًا" . جيت هاب . تم الاطلاع عليه في 30 مارس 2023 .
  4. "لغة البرمجة الموجهة نحو العقود في Solidity" ، GitHub ، إيثيريوم ، 30 مارس 2023 ، تم الاطلاع عليه في 30 مارس 2023
  5. أفشار، فالا (17 يوليو 2017). "الإيثيريوم ثاني أغلى عملة رقمية بعد البيتكوين" . هاف بوست . تم الاطلاع عليه بتاريخ 10 أبريل 2019 .
  6. "مؤتمر SOFE برلين: سويفت تكشف عن نموذج أولي لتقنية البلوك تشين" . فاينكسترا (أخبار). 24 نوفمبر 2016. تم الاطلاع عليه بتاريخ 24 نوفمبر 2016 .
  7. فينلي، كلينت (يونيو 2016). "شخص ما سرق 50 مليون دولار من أكبر مشروع تمويل جماعي على الإطلاق (لا يمكن الوثوق بالبشر)" . وايرد .
  8. لغة البرمجة الموجهة نحو العقود Solidity ، إيثيريوم، 30 مارس 2023 ، تم الاطلاع عليه في 30 مارس 2023
  9. وود، جافين (13 يناير 2015). "إنشاء Solidity" . ويكي إيثيريوم (أرشيف) . تم الاسترجاع في 23 مارس 2024 .
  10. "قائمة المساهمين" . GitHub .
  11. كلية، AMC (1 نوفمبر 2022). تقنية البلوك تشين والعملات المشفرة مع لغة Solidity المستوى 1. شركة Advanced Micro Systems Sdn Bhd.
  12. "غافين وود" . gavwood.com . مؤرشف من الأصل في 30 مارس 2023. تم الاطلاع عليه في 30 مارس 2023 .
  13. نيكوليتش، إيفيكا؛ كولوري، آشيش؛ سيرجي، إيليا؛ ساكسينا، براتيك؛ هوبور، أكويناس (14 مارس 2018). "إيجاد العقود الجشعة والمبذرة والانتحارية على نطاق واسع". arXiv : 1802.06038 [ cs.CR ]. تُترجم لغات المصدر المختلفة إلى دلالات EVM، وأبرزها لغة Solidity.
  14. «انضم بنك ويستباك إلى تجربة سويفت لتقنية البلوك تشين» . زد نت . تم الاطلاع عليه بتاريخ 13 يوليو 2022 .
  15. "دليل استخدام Hyperledger Fabric - إنشاء تطبيق بلوك تشين لنقاط الولاء" . مطورو IBM . تم الاطلاع عليه بتاريخ 10 أبريل 2019 .
  16. "تأثيرات اللغة - وثائق Solidity 0.8.17" . docs.soliditylang.org . تم الاطلاع عليه بتاريخ 30 مارس 2023 .
  17. ^ كابيتانيوس-2008-06-27 ، ص. 309. خطأ sfn: لا يوجد هدف: CITEREFKapetanios-2008-06-27 ( مساعدة )
  18. إيثيريوم. "تنسيق مواصفات إيثيريوم الطبيعي" . جيت هاب .
  19. "مقدمة إلى العقود الذكية - وثائق Solidity 0.8.19" . docs.soliditylang.org . تم الاطلاع عليه بتاريخ 30 مارس 2023 .
  20. شناير، كارتيكيان؛ شناير، أنطوان؛ بهارجافان، سيدريك؛ ديليجنات-لافود، أنيتا؛ فورنيه، جولامودي؛ شناير، بروس؛ راستوجي، نديم؛ سيبوت-بينوت، أسيم؛ راستوجي1، توماس؛ سوامي، نيخيل؛ زانيلا-بيجولين، سانتياغو (27 أغسطس 2016). "ورقة بحثية قصيرة: التحقق الرسمي من العقود الذكية" (ملف PDF) . مايكروسوفت للأبحاث، المعهد الفرنسي لأبحاث علوم الحاسوب والأتمتة، جامعة هارفارد . مؤرشفة (ملف PDF) من الأصل في 27 أغسطس 2016.{{cite journal}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  21. تسانكوف، بيتر؛ دان، أندريه؛ دراكسلر-كوهين، دانا؛ جيرفيه، آرثر؛ بونزلي، فلوريان؛ فيتشيف، مارتن (15 أكتوبر 2018). "Securify: تحليل أمني عملي للعقود الذكية". وقائع مؤتمر ACM SIGSAC لعام 2018 حول أمن الحاسوب والاتصالات . رابطة آلات الحوسبة. الصفحات 67-82 . arXiv : 1806.01143 . doi : 10.1145/3243734.3243780 . hdl : 10044/1/87935 . ISBN  978-1-4503-5693-0. S2CID 46936025 . 
  22. أتزي، نيكولا؛ بارتوليتي، م.؛ سيمولي، تيزيانا (2017). "دراسة استقصائية للهجمات على العقود الذكية في إيثيريوم (SoK)". مبادئ الأمن والثقة، المؤتمر الدولي السادس، 2017، وقائع المؤتمر . سلسلة محاضرات في علوم الحاسوب. ص 164-186 . doi : 10.1007/978-3-662-54455-6_8 . ISBN  978-3-662-54454-9. S2CID 15494854 . 
  23. فينلي، كلينت (18 يونيو 2016). "اختراق بقيمة 50 مليون دولار أظهر أن منظمة DAO كانت بشرية للغاية" . وايرد (أخبار) . تم الاطلاع عليه في 18 فبراير 2017 .