اگر مدتی است که در حوزه ارزهای دیجیتال فعالیت می کنید، حتما زبان برنامه نویسی سالیدیتی(Solidity) به گوش شما خورده است. همان طور که می دانید اکثر دستگاه ها و شبکه های اطراف ما در دنیای واقعی توسط کدها برنامه نویسی شده اند. ویژگی منحصر به فرد دستگاه های برنامه نویسی شده این است که می توانند تا مدت ها به طور کاملا خودکار به کار خود ادامه دهند. این دقیقا همان ویژگی است که در دنیای غیرمتمرکز ارزهای دیجیتال می تواند بسیار کاربردی باشد. هر سیستمی از زبان خاصی برای برنامه نویسی استفاده می کند، مثلا برای طراحی های مبتنی بر وب بیشتر از زبان ها PHP و جاوااسکریپت استفاده می شود. در دنیای ارزهای دیجیتال نیز از زبان برنامه نویسی سالیدیتی برای ایجاد قراردادهای هوشمند، برنامه های غیرمتمرکز و.... استفاده می شود. در ادامه به بررسی زبان برنامه نویسی سالیدیتی (Solidity)، ویژگی های آن و روش های یادگیری آن می پردازیم.
زبان برنامه نویسی سالیدیتی
زبان برنامه نویسی سالیدیتی در سال 2014 توسط گروهی از مهندسین، به عنوان زبانی انعطاف پذیر برای نوشتن قراردادهای هوشمند معرفی شد که شباهت زیادی به زبان های جاوااسکریپت و پایتون داشت. اما Solidity یک زبان برنامه نویسی قرارداد محور سطح بالا است که برای ساخت قراردادهای هوشمند استفاده می شود. Solidity برای هدف قرار دادن ماشین مجازی اتریوم طراحی شده است. کد Solidity در قراردادها موجود است. یک قرارداد، بلوک اصلی سازنده برنامه های اتریوم است. این شامل همه متغیرها و توابع است و به عنوان مرحله مقدماتی برای همه پروژه های شما عمل خواهد کرد.
در همان ابتدا به دلیل شفافیت و دقت بالا، سرعت، کارایی، امنیت، سازگاری با بلاک چین اتریوم و استفاده آسان، از این زبان برای نوشتن قراردادهای هوشمند و توسعه ماشین مجازی اتریوم(EVM) استفاده شد اما کاربرد های زبان سالیدیتی به اینجا ختم نمی شود. در واقع این زبان در پروژه های رای گیری، حراج، مزایده و کیف پول های چند امضایی نیز کاربرد بسیاری دارد. کاربرد این زبان به قدری زیاد است که حتی در بخش هایی از ارز دیجیتال ریپل نیز از این زبان استفاده شده است. پس اگر به زبان های برنامه نویسی از جمله(PHP)، (جاوااسکریپت) و زبان سالیدیتی تسلط پیدا کنید می توانید حتی به خلق یک ارز دیجیتال فکر کنید!
عمدتا زبان برنامه نویسی سالیدیتی برای نوشتن قراردادهای هوشمند استفاده می شود. در واقع برای نوشتن این قراردادها می شود از دیگر زبان ها نیز استفاده کرد اما چرا توسعه دهندگان سالیدیتی را انتخاب می کنند؟ در واقع این زبان برنامه نویسی شباهت زیادی به زبان های پایتون، زبان های C و حتی جاوااسکریپت دارد. به طوری که اگر شما قبلا با زبان های ++C یا #C کار کرده باشید، به سرعت می توانید زبان سالیدیتی را نیز یاد بگیرید اما در نظر داشته باشید که مفاهیم به کار برده شده در زبان سالیدیتی بسیار بیشتر و گسترده تر از زبان های C است. در تصویر زیر یک نمونه کدهای سالیدیتی را مشاهده می کنید:
قراردادهای هوشمند در واقع منطق تمامی پروژه ها و برنامه های غیرمتمرکز است. بیشترین کاربرد قراردادهای هوشمند در صرافی های غیرمتمرکز (DEX) است. این قراردادها وقتی در سیستم قرار می گیرند، به محض اینکه شروط خاصی برقرار شود، کار خاصی انجام می دهند. نکته قابل توجه در رابطه با قراردادهای هوشمند این است که این قراردادها را حتی خود سازنده نیز نمی تواند کنسل کند و یا تغییری در آن ها ایجاد کند. قراردادهای هوشمند تا همیشه به طور خودکار به کار خود ادامه می دهند.
سالیدیتی و اتریوم
با راه اندازی پلتفرم اتریوم، ایجاد برنامه های بلاک چین (به اصطلاح dapps) و نوشتن قراردادهای هوشمند (به طور خلاصه، قطعات کد موجود در بلاک چین) بسیار ساده تر شد. محبوب ترین راه برای انجام این کار از طریق Solidity است که یک زبان برنامه نویسی جدید بود که به طور خاص برای این منظور ایجاد شد. پس از پذیرش آن، مردم شروع به ایجاد صدها برنامه غیرمتمرکز کردند. بیشترین استفاده از زبان برنامه نویسی سالیدیتی در قراردادهای هوشمند اتریوم است. در واقع نحوه عملکرد این زبان به این صورت می باشد که، ابتدا با استفاده از آن متغیر رویداد(EVENT) برای قرارداد هوشمند تعریف می شود. (خود قرارداد هوشمند نیز از دو بخش داده و کد تشکیل شده است که در داخل یک آدرس در بلاک چین اتریوم وجود دارد.) سپس برای این قرارداد، تابع ها و متغیر های پیچیده و زیادی تعریف می کنند تا قرارداد بتواند به طور خودکار داده ها را دریافت کرده، تحلیل کند و متناسب با آن ها کاری را انجام دهد.
استفاده از زبان برنامه نویسی سالیدیتی موجب می شود تا کلید رمزنگاری شده روی یک بلاک، وابسته به بلاک قبل باشد، همین اتفاق ارتباط بین بلاک ها با یکدیگر را مانند زنجیر به هم وصل می کند. با توجه به چنین خاصیتی، احتمال هک نیز بسیار کاهش می یابد. یک قرارداد هوشمند که با زبان برنامه نویسی سالیدیتی نوشته شده است در بلاک چین اتریوم اجرا می شود و به طور خودکار تراکنش ها را کنترل می کند.
هر زبانی برای نوشته شدن نیاز به یک نرم افزار دارد، نرم افزار های زبان سالیدیتی عبارت اند از: ویژوال استدیو(Visual Studio)، ریمیکس(Remix)، اتر اتم(Ether atom)
متغیرها در Solidity
به طور عمده دو نوع متغیر در Solidity موجود است.
- متغیرهای محلی: متغیرهایی با مقادیری که تا تکمیل تابع باقی می مانند.
- متغیرهای حالت: متغیرهایی که مقادیر آنها به طور دائم در یک سیستم ذخیره سازی قرارداد نگهداری می شود.
اپراتورها در Solidity
اپراتورها در هر زبان برنامه نویسی مهم هستند، زیرا آنها زمینه را برای برنامه نویسی ایجاد می کنند. به طور مشابه، عملکرد Solidity نیز بدون استفاده از اپراتورها یا عملگراها ناقص است.
Solidity از انواع اپراتورهای زیر پشتیبانی می کند:
- اپراتورهای حسابی
- اپراتورهای رابطه ای
- اپراتورهای منطقی
- اپراتورهای بیتی
- اپراتورهای واگذاری
- اپراتورهای مشروط
ساختارها در solidity
همانطور که در زبان برنامه نویسی C، این معادل یک ساختار است. ساختارها برای تولید انواع داده های پیچیده با ویژگی های مختلف استفاده می شوند.
آرایه ها در Solidity
آرایه های زبان برنامه نویسی سالیدیتی دو نوع هستند:
- آرایه های استاتیک / آرایه های ثابت
- آرایه های پویا
آرایه های ثابت، همانطور که از نام آن پیداست، اندازه مشخصی دارند، اما آرایه های پویا اینطور نیستند.
می توانید ساختارها و آرایه ها را با هم ترکیب و مطابقت دهید. ابتدا یک ساختار و سپس یک آرایه از ساختارها بسازید. در پارادایم شی گرا، داشتن یک شی و داشتن آرایه ای از اشیا یکی هستند.
ویژگی های زبان برنامه نویسی سالیدیتی
1-اصلاح کننده(FUNCTION MODIFIRE)
یک تابع زمانی که شرط آن برقرار شد شروع به اجرا می کند. اما اگر بخواهید در بین هزاران کد، شرط یک تابع را تغییر دهید، ویژگی اصلاح کننده می تواند به راحتی شرط تابع را برای شما تغییر دهد تا به واسطه این تغییر، رفتار تابع نیز تغییر کند.
2-داده ی ایستا
در زبان برنامه نویسی سالیدیتی، نوع داده ها ایستا می باشد. بدین معنا که اگر شما یک متغیر در بین کدها تعریف کنید باید حتما قبل از آن نوع متغیر را تعیین کنید. در غیر این صورت در زمان اجرای کدها با خطا مواجه می شوید.
برای اینکه یک برنامه نویس بلاک چین شد، باید مهارت هایی کسب کرد. برای آشنایی با این مهارت ها، می توانید مقاله چگونه یک برنامه نویس بلاک چین شد را در وب سایت مطالعه کنید.
3_رویداد(EVENT)
اگر بخواهید اطلاعات مربوط به قراردادهای هوشمند را روی لاگ های بلاک چین ذخیره کنید، می توانید از ویژگی رویداد استفاده کنید. رویداد نوعی تابع است و عملکردی مشابه با آن دارد.
4_سطح دسترسی
در هر زبان برنامه نویسی بر اساس نوع کاربر، سطح دسترسی وجود دارد. برای مثال تیم توسعه دهنده می بایست به همه چی دسترسی داشته باشد. اما کاربران شبکه لزومی ندارد به همه چی دسترسی داشته باشند. با استفاده از ویژگی سطح دسترسی در زبان برنامه نویسی سالیدیتی می توان سطح های دسترسی تعریف کرد. مانند سطح دسترسی MORTAL و OWNED. از دیگر ویژگی های زبان سالیدیتی می توان به: آرایه های داخل حافظه، کتابخانه و امکان ایمپورت کردن، اشاره کرد.
یادگیری زبان برنامه نویسی سالیدیتی
اگر بخواهید زبان هایی مثل PHP یا پایتون را یاد بگیرید می توانید بدون پیش زمینه قبلی با مراجعه به سایت های آموزشی و مطالعه منابع معتبر، به یادگیری بپردازید. اما زبان برنامه نویسی سالیدیتی به این صورت نمی باشد. در واقع برای یادگیری این زبان باید حتما قبلا با زبان های مشابه آن کار کرده باشید و دوره های آموزشی زیادی را سپری کنید.
برای اینکه بتوانید با استفاده از زبان برنامه نویسی قرارداد هوشمند ایجاد کنید، می توانید بر روی کلمه لینک کلیک کنید.
منابع آموزشی زبان سالیدیتی به طور کلی محدود هستند چرا که مفاهیم این زبان بسیار پیچیده و تخصصی است. از طرفی منابع موجود هم به دلیل اینکه این زبان در ایران کاربرد کمی دارد، ترجمه شده نیست. همان طور که گفته شده عمده استفاده این زبان در نوشتن قراردادهای هوشمند می باشد.
قراردادهای هوشمند نیز در دنیای کریپتوکارنسی کاربرد دارد، اما حوزه ارزهای دیجیتال سال هاست در ایران با محدودیت مواجه است. پس اگر در ایران هستید و به یادگیری این زبان فکر میکنید، باید بدانید که با کمبود منابع آموزشی خوب رو به رو هستید.
مزیت زبان برنامه نویسی سالیدیتی
روز به روز دنیای ارزهای دیجیتال گسترده تر می شود و پروژه های قوی تری در دنیای غیرمتمرکز دیفای اجرا می شود. همین گسترش ارزهای دیجیتال موجب می شود تا کسانی که مسلط به زبان برنامه نویسی سالیدیتی هستند، ارزشمندتر شوند. پس حتی اگر تازه شروع به یادگیری این زبان کرده اید، مطمئن باشید در آینده زمینه های کاری زیادی برای شما وجود دارد.
اما فراموش نکنید که یادگیری این زبان به تنهایی کافی نیست. در واقع اکثر شرکت ها به دنبال افرادی می گردند که همراه با زبان برنامه نویسی سالیدیتی، زبان هایی مثل ترافل و نود جی اس را نیز بلد باشند. از طرفی یادگیری این زبان ها علاوه بر حوصله، زمان زیادی می طلبد. پس قبل از شروع، خود را برای حداقل 2 تا 3 سال یادگیری آماده کنید.
از دیگر زبان های برنامه نویسی، Vyper است. برای آشنایی با این زبان، می توانید مقاله زبان برنامه نویسی Vyper را در سایت مطالعه کنید.
جمع بندی: زبان برنامه نویسی سالیدیتی زبانی است که برای نوشتن قرارداد هوشمند ارزهای دیجیتال، استفاده می شود. به خاطر شباهت هایی که این زبان با PHP و جاوااسکریپت دارد، در صورتی که با این زبان ها کار کرده باشید، یادگیری زبان برنامه نویسی سالیدیتی برای شما بسیار راحت تر خواهد بود.
با استفاده از این زبان می توان برای قراردادهای هوشمند، رویداد تعریف کرد، متغیرها و شرط های پیچیده نیز قرار داد. از ویژگی های این زبان می توان به امنیت بالا، سرعت و سازگاری با ماشین مجازی اتریوم اشاره کرد. اگر به زبان انگلیسی تسلط دارید، برای یادگیری زبان سالیدیتی می توانید از منابع خارجی استفاده کنید، در غیر این صورت باید توجه داشته باشید که به دلیل تخصصی بودن این زبان، هنوز منابع آموزشی خوبی به زبان فارسی برای سالیدیتی وجود ندارد.