سبد خرید شما

icon
سبد خرید خالی است.

Solidity

زبان Solidity چیست؟

سالیدیتی یک زبان برنامه نویسی برای نوشتن قراردادهای هوشمند روی شبکه بلاکچین اتریوم می‌باشد. این زبان یک ساختار قرارداد محور دارد، که یعنی قراردادهای هوشمند مسئولیت ذخیره‌سازی تمامی منطق برنامه نویسی شده را با تراکنش‌های بلاکچین دارند. این زبان یک زبان برنامه نویسی high-level است که شباهت بسیاری به زبانی‌هایی مانند جاوا اسکریپت، پایتون و ++C دارد. این زبان یک هدف اصلی را دنبال می‌کند و آن هم پیاده‌سازی روی ماشین مجازی اتریوم یا Ethereum Virtual Machine است که به صورت EVM خلاصه می‌شود. این ماشین مجازی روی نود (Node) های اتریوم هاست شده و از این طریق به شبکه بلاکچین اتریوم وصل می‌شود.

این زبان به صورت استاتیک نوشته شده و قابلیت‌هایی مثل موروثی بودن (inheritance)، کتابخانه‌ها و موارد دیگر را شامل می‌شود. به طور خلاصه تمامی قابلیت‌ها و ظرفیت‌های مورد نیاز برای یک نرم افزار بلاکچینی را دارد.

سالیدیتی (Solidity) یک زبان برنامه نویسی سطح بالا است که برای کار با فناوری بلاکچین طراحی شده است. سالیدیتی به طور خاص برای توسعه قراردادهای هوشمند روی بلاک چین اتریوم استفاده می‌شود.

 

 

مزایای زبان برنامه نویسی Solidity

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

 

با زبان برنامه نویسی Solidity چه کارهایی می‌توانید انجام دهید؟

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

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

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

 

فرصت‌های شغلی زبان Solidity

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

در حال حاضر سالیدیتی پادشاه زبان‌های برنامه‌نویسی مرتبط با قراردادهای هوشمند است و یادگیری آن می‌تواند به یادگیری دیگر زبان‌های قراردادهای هوشمند نیز کمک کند.

زبان سالیدیتی زبان برنامه نویسی جدیدی است و منابع برای یادگیری آن در مقایسه با سایر زبان‌ها کمتر است. این زبان شباهت بسیار زیادی به جاوا اسکریپت دارد. لذا یادگیری Javascript کمک زیادی در یادگیری سالیدیتی خواهد کرد. اما پیش از یادگیری زبان برنامه نویسی سالیدیتی، باید بلاکچین و نحوه کار آن را بشناسید. بدون شناخت بلاک چین و ارزهای دیجیتال، یادگیری زبان برنامه نویسی بلاکچین کاربرد زیادی نخواهد داشت. هم‌چنین بسیاری از شرکت‌هایی که به دنبال استخدام برنامه نویس بلاکچین هستند، علاوه بر تسلط بر سالیدیتی، NodeJS، GoLang و AngularJS را نیز طلب می‌کنند.

 

آمارهای زبان Solidity

آمارهای زیر برگرفته از بلاگ سالیدیتی در سال 2020 می‌باشد.

از جامعه آماری مورد بررسی در رابطه با زبان مورد علاقه آن‌ها سوال شده که نتایج در نمودار زیر قابل مشاهده است. زبان سالیدیتی پس از جاوااسکریپت با 40 و پایتون با 33، رتبه سوم را با رقم 30 از آن خود کرده است.

میزان استفاده از سالیدیتی به شرح زیر است: 41.1% به صورت روزانه، 31.4% به صورت هفتگی، 17.8% ماهانه و 9.4% کمتر از این میزان از سالیدیتی استفاده می‌کنند.

میزان استفاده از زبان‌های برنامه نویسی مطابق نمودار زیر است که سالیدیتی با عدد 41 پس از جاوااسکریپت در رتبه دوم جای گرفته است.

در آخر در رابطه با میزان استفاده از ورژن‌های مختلف سالیدیتی سوال شده بود که پاسخ‌ها به شرح زیر است:

بیشتر بخوانید

Zharfa Academy-Zharfa Mag-ربات کوری (Kuri Robots)مجله علمی آکادمی ژرفا-
موضوع: ربات کوری (Kuri Robots)
نویسنده: متین باغ‌عنبری
تاریخ: 1400/04/16
Zharfa Academy-Zharfa Mag-ربات موفلین (Moflin Robot)مجله علمی آکادمی ژرفا-
موضوع: ربات موفلین (Moflin Robot)
نویسنده: متین باغ‌عنبری
تاریخ: 1400/04/14
Zharfa Academy-Zharfa Mag-ربات اسپات (Spot Robot)مجله علمی آکادمی ژرفا-
موضوع: ربات اسپات (Spot Robot)
نویسنده: متین باغ‌عنبری
تاریخ: 1400/04/14
Zharfa Academy-Zharfa Mag-ربات Sphero BOLTمجله علمی آکادمی ژرفا-
موضوع: ربات Sphero BOLT
نویسنده: متین باغ‌عنبری
تاریخ: 1400/04/22
Zharfa Academy-Zharfa Mag-دوره‌های زمستانه آکادمی ژرفامجله علمی آکادمی ژرفا-
موضوع: دوره‌های زمستانه آکادمی ژرفا
نویسنده: المیرا افلاکی
تاریخ: 1400/10/23
Zharfa Academy-Zharfa Mag-مهاجرت برنامه‌نویسانمجله علمی آکادمی ژرفا-
موضوع: مهاجرت برنامه‌نویسان
نویسنده: المیرا افلاکی
تاریخ: 1400/03/12
Zharfa Academy-Zharfa Mag-IOT اینترنت اشیاء و IIOTمجله علمی آکادمی ژرفا-
موضوع: IOT اینترنت اشیاء و IIOT
نویسنده: المیرا افلاکی
تاریخ: 1400/03/15
Zharfa Academy-Zharfa Mag-بک لینک چیست؟مجله علمی آکادمی ژرفا-
موضوع: بک لینک چیست؟
نویسنده: المیرا افلاکی
تاریخ: 1400/03/18