آشنایی با زبان برنامهنویسی سالیدیتی (Solidity)
سالیدیتی (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
دیدگاهتان را بنویسید