معرفی زبان برنامه ‌نویسی سالیدیتی

امتیاز 4.00 ( 1 رای )

سالیدیتی (Solidity) یک زبان برنامه نویسی سطح بالا محسوب می شود که هدف از طراحی آن کار با فناوری بلاک چین است . سالیدیتی به صورت ویژه‌ای جهت توسعه قراردادهای هوشمند بر بستر بلاک چین اتریوم مورد استفاده قرار می گیرد . بدین ترتیب قبل از آنکه وارد مبحث سالیدیتی شویم ، قصد داریم در خصوص قراردادهای هوشمند به طور مختصر توضیحی ارائه دهیم .

سالیدیتی و قراردادهای هوشمند

اگر بخواهیم سالیدیتی را از منظر زبان برنامه نویسی تعریف کنیم ، یک قرارداد مجموعه‌ای از داده‌ها (شامل وضعیت‌ها) و یک قطعه کد (شامل توابع) می باشد که در درون یک آدرس در شبکه اتریوم واقع شده است . در درون هر قرارداد این امکان را داریم که اقدام به تعریف متغیر وضعیت ، متد و یا رویداد (Event) نماییم . این قرارداد امکان مدیریت تراکنش‌ها را درون بلاک‌ها در بلاک چین دارد . هر بلاک دارای یک آدرس معین در قالب یک کلید رمزنگاری می باشد . این آدرس در نتیجه اعمال تابع هش روی آدرس بلاک قبلی ایجاد شده است . این مسئله موجب به وجود آمدن ارتباط میان بلاک‌های مجاور می‌گردد ؛ پس به وجود آوردن تغییر در بلاک‌ها و یا هک آن به سایر شیوه‌ها به راحتی امکان‌پذیر نخواهد بود .

سالیدیتی یکی از زبان‌های برنامه نویسی است که جهت توسعه برنامه ، بر روی ماشین مجازی اتریوم (EVM) ایجاد شده است . تعداد زیادی از کلاس‌ها و کتابخانه ها در سالیدیتی موجود است که امکان توسعه یک قرارداد هوشمند از جانب شما، بی آنکه متحمل زحمتی شوید را می دهد . از پراهمیت‌ترین فضاهای توسعه نرم افزار (IDE) به منظور برنامه نویسی به زبان سالیدیتی می توان به موارد زیر اشاره کرد :

  • ریمیکس Remix
  • ویژوال استدیو Visual Studio (با بهره‌گیری از پلاگین)
  • اتر اتم Ether atom (با بهره‌گیری از پلاگین)

خصوصیات زبان سالیدیتی

در این بخش قصد داریم به برخی از خصوصیات پایه زبان سالیدیتی بپردازیم . این خصوصیات شبیه خصوصیات زبان های سطح بالایی همچون جاوا و C++ می باشد .

  • نوع داده‌ای ایستا

اگرچه ساختار این زبان مشابه جاوا اسکریپت است ، ولی تفاوتی که دارد این است که نوع داده‌ای جاوا اسکریپت ، ایستا می باشد .

به عنوان مثال شما در جاوا و C++ می بایست در هنگام تعریف یک متغیر و قبل از آنکه آن را مورد استفاده قرار دهید ، نوع آن متغییر را مشخص نمایید و اگر اینکار را انجام ندهید در هنگام کامپایل با خطا روبه رو می‌شوید . زمان سالیدیتی نیز همانند جاوا و C++ است .

  •  قرارداد و رابط‌ها (Interfaces)

در زبان برنامه نویسی سالیدیتی ، یک قرارداد (Contract) یک ساختار داده (data structure) به حساب می آید و این موضوع امکان ساخت قرارداد را به ما می دهد و کمک می کند تا بتوانیم آن را مدیریت نماییم . این امکان وجود دارد که قراردادها از جانب قراردادهای فرزند به ارث برده شوند و بدین ترتیب قردادهای پیچیده‌تری به وجود آید .

  •  اصلاح کننده توابع (Function Modifier)

این خصوصیت شبیه امکان بازنویسی توابع در زبان های برنامه نویسی شیء گرا می باشد . تصور کنید تصمیم دارید اگر یک شرط انجام شود ، اقدام به اجرای یک تابع به شیوه‌ای  متفاوت نمایید . برای اینکار قادر به استفاده از این خصوصیت هستید و می توانید رفتار تابع را تغییر دهید . اصلاح کننده توابع جهت بازنویسی توابع در قراردادهای وارث نیز کاربردی می باشد .

  • رویدادها (Events)

رویدادها به منظور نوشتن اطلاعات مرتبط با قراردادها بر روی لاگ بلاک چین (Blockchain Log) مورد استفاده قرار می گیرند . یک رویداد شبیه یک تابع می باشد که یک داده را به عنوان ورودی می گیرد و آن را روی لاگ بلاک چین یادداشت می کند .

  • تعیین سطح دسترسی

این خصوصیت شبیه دسترسی های public و private در زبان های برنامه نویسی شیء‌گرا می باشد . در زبان سالیدیتی اسم و قوانین این دسترسی‌ها اندکی دستخوش تغییر شده است . به عنوان مثال در سالیدیتی دارای دو سطح دسترسی owned و mortal هستیم . سطح دسترسی های بیشتری نیز به منظور برقراری امنیت بیشتر در این زبان برنامه نویسی موجود است .

  • تبدیل کردن نوع داده‌ای به شکل صریح

شما با بهره‌گیری از سالیدیتی امکان تغییر نوع داده‌ها را دارید . این تغییرها اغلب در هنگام کامپایل مورد بررسی قرار می گیرند ، البته گفتنی است که استثناهایی نیز وجود دارد .

  • آرایه‌های درون حافظه

آرایه های داینامیک این امکان را دارند تا به طور مستقیم  درون حافظه واقع شوند .

  • کتابخانه‌ها

شما قادر به استفاده از کتابخانه‌های متنوعی به منظور نوشتن قراردادهای خود هستید و بدین وسیله می توانید اقدام به سفارشی‌سازی قرارداد خود کنید .

  • امکان Import کردن

با به کار بردن کلمه کلیدی import ، شما قادر به اضافه نمودن کدهای سایر فایل ها به قرارداد خود هستید .

منبع : itnext