سالیدیتی (Solidity) یک زبان برنامه نویسی سطح بالا است که برای کار با فناوری بلاکچین طراحی شده است. سالیدیتی به طور خاص برای توسعه قراردادهای هوشمند روی بلاک چین اتریوم استفاده می شود. بنابراین پیش از پرداختن به سالیدیتی توضیح مختصری درباره قراردادهای هوشمند می دهیم.
سالیدیتی و قراردادهای هوشمند
از نظر زبان برنامه نوسی سالیدیتی، یک قرارداد مجموعه ای از داده ها (شامل وضعیت ها) و یک قطعه کد (شامل توابع) است که داخل یک آدرس در شبکه اتریوم قرار گرفته است. داخل هر قرارداد می توانیم متغیر وضعیت، متد و یا رویداد (Event) تعریف کنیم. این قرارداد می تواند تراکنش ها را داخل بلاک ها در بلاک چین مدیریت کند. هر بلاک یک آدرس مشخص در قالب یک کلید رمزنگاری دارد. این آدرس نتیجه اعمال تابع هش روی آدرس بلاک قبلی است. این موضوع باعث ایجاد ارتباط بین بلاک های مجاور می شود؛ بنابراین ایجاد تغییر در بلاک ها و یا هک کردن به روش های دیگر به آسانی ممکن نخواهد بود.
سالیدیتی یکی از زبان های برنامه نویسی موجود برای توسعه برنامه روی ماشین مجازی اتریوم (EVM) است. کلاس ها و کتابخانه های زیادی در سالیدیتی وجود دارند که می توانند به توسعه یک قرارداد هوشمند توسط شما، بدون هیچ زحمتی کمک کنند. مهم ترین محیط های توسعه نرم افزار (IDE) برای برنامه نویسی به زبان سالیدیتی عبارتند از:
ویژگی های زبان سالیدیتی:
در این قسمت به تعدادی از ویژگی های پایه زبان سالیدیتی اشاره می کنیم. این ویژگی ها مشابه ویژگی های زبان های سطح بالایی مثل جاوا و C++ است.
نوع داده ای ایستا
هرچند که این زبان ساختاری شبیه جاوا اسکریپت را دارد، اما برخلاف جاوا اسکریپ نوع داده ای آن ایستا است. برای مثال شما در جاوا و C++ باید در زمان تعریف یک متغیر و پیش از استفاده از آن، نوع آن متغییر را تعیین کنید. در غیر این صورت در زمان کامپایل با خطا مواجه می شوید. زمان سالیدیتی نیز مانند جاوا و C++ می باشد.
قرارداد و رابط ها (Interfaces)
در زبان برنامه نویسی سالیدیتی یک قرارداد (Contract) یک ساختار داده (data structure) است و این امر کمک می کند تا بتوانیم قرارداد بسازیم و آن را مدیریت کنیم. قراردادها می توانند توسط قراردادهای فرزند به ارث برده شوند و از این طریق قردادهای پیچیده تر ایجاد شود.
اصلاح کننده توابع (Function Modifier)
این ویژگی مشابه امکان بازنویسی توابع در زبان های برنامه نویسی شیء گرا است. فرض کنید می خواهید در صورت برقراری یک شرط، یک تابع را به روشی متفاوت اجرا کنید. برای این منظور می توانید از این ویژگی استفاده کنید و رفتار تابع را تغییر دهید. اصلاح کننده توابع برای بازنویسی توابع در قراردادهای وارث نیز کاربرد دارد.
رویدادها (Events)
رویدادها برای نوشتن اطلاعات مربوط به قراردادها روی لاگ بلاک چین (Blockchain Log) استفاده می شوند. یک رویداد مشابه یک تابع است که یک داده را به عنوان ورودی دریافت کرده و آن را روی لاگ بلاک چین می نویسد.
تعیین سطح دسترسی
این ویژگی مشابه دسترسی های public و private در زبان های شیء گرا است. در زبان سالیدیتی نام و قوانین این دسترسی ها کمی تغییر کرده است. برای مثال در سالیدیتی دو سطح دسترسی owned و mortal داریم. سطح دسترسی های بیشتری هم برای برقراری امنیت بیشتر در این زبان برنامه نویسی وجود دارد.
تبدیل نوع داده ای به صورت صریح
شما با استفاده از سالیدیتی می توانید نوع داده ها را تغییر دهید. این تغییرها معمولا در زمان کامپایل برسی می شوند، البته استثناهایی هم وجود دارد.
آرایه های داخل حافظه
آرایه های داینامیک می توانند مستقیما داخل حافظه قرار بگیرند.
کتابخانه ها
شما می توانید از کتابخانه های متنوعی برای نوشتن قراردادهای خود استفاده کنید و از این طریق قرارداد خود را سفارشی سازی کنید.
امکان Import کردن
با استفاده از کلمه کلیدی import شما می توانید کدهای فایل های دیگر را به قرارداد خود اضافه کنید.