سالیدیتی چیست؟ سالیدیتی یکی از معروفترین زبانهای برنامهنویسی بلاکچین است. جالب است بدانید که به دنبال رشد صنعت وب ۳، توسعهدهندگان و برنامهنویسان این حوزه هر روز با گزینههای بیشتری برای برنامه نویسی وب ۳ مواجه میشوند. هر کدام از این زبانها، مزایای خاص خود را در نوشتن قراردادهای هوشمند دارند اما ممکن است آنها از نظر خوانایی، امنیت، سرعت و یا پشتیبانی از یک بلاکچین خاص با هم متفاوت باشند. پیشنهاد میکنیم مقاله ” بلاکچین چیست؟ “را مطالعه نمایید.
زبان برنامهنویسی سالیدیتی که به عنوان زبان برنامهنویسی قراردادهای هوشمند بلاکچین اتریوم توسعه یافته است، زبانی قدرتمند میباشد که بزرگترین جامعه توسعهدهندگان صنعت بلاکچین، از آن برای ایجاد اپلیکیشنهای غیرمتمرکز (dApps) استفاده میکنند.
در این مقاله قصد داریم شما را به طور کامل با تاریخچه، ویژگیها و کاربرد سالیدیتی آشنا کنیم. اما قبل از آن مقدمه کوتاهی در مورد زبان برنامه نویسی خواهیم داشت. اگر شما هم به این موضوع علاقهمند هستید تا انتهای این مقاله همراه ما باشید و چنانچه بعد از پایان مقاله، همچنان پرسش یا ابهامی در این زمینه داشتید، میتوانید در بخش کامنتها، سؤالات خود را با ما مطرح نمایید.
در صورتی که تمایل دارید با زبان برنامه نویسی سالیدیتی بیشتر آشنا شوید، میتوانید وبینار زیر را تحت عنوان “کدنویسی در بلاکچین و نحوه ایجاد توکن شخصی ERC20” مشاهده کنید:
زبان برنامه نویسی چیست؟
زبان برنامهنویسی، زبان کامپیوتر است که برنامهنویسها و یا توسعهدهندگان از آن برای توسعه برنامههای نرمافزاری، اسکریپتها و یا هر دستورالعملی که کامپیوتر باید اجرا کند، استفاده میکنند. اگرچه اکثر زبانهای برنامهنویسی مشابه هم هستند اما هرکدام سینتکس منحصربهفرد خود را دارند. جالب است بدانید که سینتکس در زبانهای برنامهنویسی اشاره به گرامر و یا دستور زبان دارد. به عبارت دیگر، سینتکس به معنای نحوه استفاده از کاراکترهای مختلف است به صورتی که کامپیوتر امکان تفسیر آن را داشته باشد.
هنگامی که برنامهنویسان قواعد، ساختار و سینتکس یک زبان را آموزش میبینند، کدهای برنامه را در یک ویرایشگر متن و یا IDE مینویسند. سپس برنامهنویس کد را به زبان ماشین، کامپایل میکند تا کامپیوتر توانایی درک آن را داشته باشد. بهتر است بدانید که زبانهای اسکریپت که نیازی به کامپایلر ندارند از یک مفسر برای اجرای اسکریپت استفاده میکنند.
پس از آشنایی با مفهوم زبان برنامهنویسی و نحوه عملکرد آن، در ادامه به صورت تخصصی در رابطه با زبان برنامهنویسی سالیدیتی صحبت میکنیم.
سالیدیتی چیست؟
زبان برنامهنویسی سالیدیتی که در سال ۲۰۱۴ ارائه شد، یک زبان شئگرا و سطح بالا برای پیادهسازی قراردادهای هوشمندی است که بر روی ماشین مجازی اتریوم (EVM) اجرا میشوند. سالیدیتی به شدت متأثر از زبانهای برنامهنویسی C++ و جاوا اسکریپت است. بهطورکلی میتوان گفت که توسعهدهندگان این حوزه معتقدند که کار با سالیدیتی برای یادگیری توسعه وب۳ به شدت مفید است.
چه کسی سالیدیتی را ساخت؟
در سال ۲۰۱۴، گوین وود، مدیر ارشد فناوری اتریوم، سالیدیتی را به عنوان یک زبان تورینگ کامل که نیازهای اتریوم را برای نوشتن قراردادهای هوشمند برآورده میکرد، ارائه نمود.
بنیانگذار اتریوم، ویتالیک بوترین، اتریوم را به عنوان پروتکلی که با افزوده شدن قابلیت قراردادهای هوشمند میتواند کارکرد بلاکچین را توسعه دهد، معرفی کرد. در چشمانداز ویتالیک، اتریوم میبایست بتواند شبکه پیچیدهای از قراردادهای هوشمند را که روی یک شبکه توزیع شده و جهانی از کامپیوترها کار میکرد، اجرا کند. در واقع، قراردادهای هوشمند به توسعهدهندگان امکان ایجاد رمزارزهای جدید، ساخت اپلیکیشنهای دیفای و مواردی از این قبیل را میداد. به همین دلیل، تیم توسعهدهنده اتریوم به دنبال ساخت یک زبان برنامهنویسی منحصربهفرد برای خود بود.
تیم پروژه سالیدیتی، توسط کریستین رایتویسنر رهبری شد. این تیم در نهایت توانست یک زبان برنامهنویسی تورینگ کامل و شئگرا برای اجرای قراردادهای هوشمند ایجاد کند. سالیدیتی یک زبان سطح بالاست، به این معنا که توسعهدهنده برای انجام محاسبات نیازی به دستکاری اطلاعات سیستم مانند حافظه و بایتکد ندارد.
سالیدیتی بر اساس چه زبانی ایجاد شده است؟
سالیدیتی، درطول توسعه خود براساس زبانهای مختلفی که در آن زمان موجود بودند، رشد یافت. از جمله زبانهای برنامهنویسی که سالیدیتی از آنها تأثیر گرفته است، میتوان به C++، پایتون و جاوا اسکریپت اشاره کرد.
شباهت های سالیدیتی با C++
سالیدیتی، سینتکس مشابهی برای تعریف متغیرها و حلقهها با C++ دارد. علاوه برآن سالیدیتی نیز مشابه C++، از سربارگذاری توابع پشتیبانی میکند. در واقع، هنگامی که دو تابع، نام یکسانی دارند اما در پارامترهایی که قبول میکنند متفاوت هستند، به سربارگذاری توابع نیاز پیدا میشود.
آخرین نکته قابل ذکر تغییر نوع متغیرهاست که سالیدیتی همچون C++ از هر دو نوع ضمنی و صریح پشتیبانی میکند. به این معنا که هم توسعهدهنده میتواند صریحاً آن را تغییر دهد و هم اگر در محاسبات نیاز باشد به صورت اتوماتیک این تغییر انجام میشود.
شباهت های سالیدیتی با جاوا اسکریپت
سالیدیتی قبلاً به شدت تحت تأثیر جاوا اسکریپت بود اما امروزه شباهت اصلی قابل مشاهدهای که وجود دارد، استفاده از کلمه کلیدی function برای تعریف توابع است. علاوه بر نکات مطرح شده، solidity یک زبان ایستا است به این معنا که اجازه استفاده از کتابخانهها و همینطور اجازه ایجاد انواع پیچیدهای از آنها را به شما میدهد.
شباهت های سالیدیتی با پایتون
از نظر سینتکس، سالیدیتی شباهت های کمتری با پایتون دارد اما همانند پایتون، از خطیسازی C3 و وراثت چندگانه بهره میبرد و کلمه کلیدی super را نیز حفظ کرده است.
پیشنهاد ویژه: دوره آموزش برنامه نویسی سالیدیتی
سالیدیتی چگونه استفاده می شود؟
با توجه به خصوصیات ذاتی سالیدیتی به عنوان یک زبان برنامهنویسی بلاکچین، این زبان برای کامپایل شدن روی ماشین مجازی اتریوم به وجود آمده است. همچنین این زبان میتواند برای نوشتن قراردادهای هوشمند سازگار با اتریوم امن، برای هر بلاکچین سازگار با ماشین مجازی اتریوم استفاده شود. این سازگاری گسترده به همراه قابلیت درک راحت و عملکرد منعطف، سالیدیتی را به پرکاربردترین زبان توسعه بلاکچین در این صنعت تبدیل کرده است.
سالیدیتی چگونه کار می کند؟
زیبایی اکوسیستم اتریوم در این است که رمزارزها و اپلیکیشنهای غیرمتمرکز بسیار زیادی میتوانند از آن استفاده کنند. قراردادهای هوشمند این امکان را فراهم کردهاند که کسبوکارها و سازمانها بتوانند راهحلهای منحصربهفرد خود را بر روی اتریوم پیادهسازی کنند.
سالانه میلیونها دلار بر روی راهحلهای بلاکچینی در جهان هزینه میشود. جالب است بدانید که تعداد زیادی از این راهحلها توسط solidity پیادهسازی میشوند. در حال حاضر، ساخت قراردادهای هوشمند به یک گزینه رایج برای اتوماتیک کردن فرآیندهای تجاری و غیرتجاری بین افراد تبدیل شده است. انتخاب این گزینه به این معناست که افراد در برابر ریسک تقلب در فرآیندها محافظت میشوند و دیگر نیازی نیست نگران آن باشند.
یکی از اجزایی که اجرای کدهای سالیدیتی را امکانپذیر میکند، EVM است. EVM یا ماشین مجازی اتریوم را میتوان به صورت یک کامپیوتر مجازی بر روی بلاکچین توصیف کرد که ایدههای افراد را تبدیل به کدی میکند که اپلیکیشنها این کد را بر روی بلاکچین اجرا میکنند.
برنامهنویسان solidity، قراردادهای هوشمندی را مینویسند که برنامههایی قابل اجرا بر روی ماشین مجازی اتریوم هستند. توجه داشته باشید که قراردادهای هوشمند همانند کلاسها در زبانهای برنامهنویسی دیگر میتوانند توابع متعددی داشته باشند.
قراردادهای سالیدیتی برای آنکه با ماشین مجازی اتریوم خوانده شوند، به بایتکد کامپایل میشوند. پس از کامپایل شدن، دیگر تفاوتی بین قراردادهای solidity و قراردادهای هوشمند سایر زبانهای برنامهنویسی در ماشین مجازی اتریوم وجود ندارد.
همانند سایر ابزارهای توسعه نرمافزار، سالیدیتی نیز آپدیتهای معمولی را انجام میدهد. نکته مهم این است که با توجه به آنکه استقرار قراردادهای هوشمند بر روی شبکه بلاکچین فقط یکبار انجام میشود، بعد از آنکه قرارداد به بلاکچین ملحق شد، دیگر امکان تغییر آن وجود ندارد، لذا نسخه سالیدیتی فقط در زمان ایجاد یک قرارداد هوشمند اهمیت دارد.
چگونه سالیدیتی با ماشین مجازی اتریوم (EVM) تعامل دارد؟
مراحلی که در زیر آمده است خلاصهای از نحوه تغییر وضعیت ماشین مجازی اتریوم توسط solidity است:
- قرارداد هوشمند در سالیدیتی نوشته میشود.
- قراردادهای هوشمند سالیدیتی به بایتکد کامپایل میشوند.
- بایتکد به کدهای عملیاتی ماشین مجازی اتریوم تبدیل میشود.
- کدهای عملیاتی ماشین مجازی اتریوم وضعیت آن را تغییر میدهند.
ماشین مجازی اتریوم (EVM)، یک ماشین حالت مجازی و نگهدارنده رکوردها برای رایانه جهانی اتریوم است. به عبارت سادهتر، ماشین مجازی اتریوم، وضعیت کلی شبکه که شامل آدرسها، مانده حسابها و ذخایر توکن است را نگهداری میکند.
همانطور که گفته شد، قراردادهای هوشمند solidity برای ایجاد تغییر در وضعیت ماشین مجازی اتریوم نوشته میشوند و وضعیت ماشین مجازی اتریوم با فعالیتهایی از قبیل چاپ توکن، ارسال و دریافت توکن و یا با آزادسازی داراییها تغییر میکند.
بهطورکلی میتوان گفت که ماشین مجازی اتریوم، بایتکدهای قرارداد هوشمند را به کدهای عملیاتی ماشین مجازی اتریوم تبدیل میکند، کدهایی که تغییرات ضروری را بر روی بلاکچین ایجاد میکنند. جالب است بدانید که هر کد عملیاتی، با مقداری کارمزد شبکه همراه است که با اتریوم پرداخت میشود و این کارمزد برای جلوگیری از حملات مخرب به شبکه تعیین شده است.
کدام بلاکچین های سازگار با ماشین مجازی اتریوم، سالیدیتی را پشتیبانی می کنند؟
سالیدیتی قادر است که برای هر بلاکچین سازگار با ماشین مجازی اتریوم، از جمله لایه۲هایی مثل پالیگان، آربیتروم و آپتیمیزم، قرارداد هوشمند بنویسد. از آنجا که سالیدیتی یک زبان منعطف و ساده است، توسط تعداد زیادی از بلاکچینهای دیگر نیز پشتیبانی میشود. در ادامه به برخی از پروژههای بزرگی که از سالیدیتی پشتیبانی میکنند، اشاره میکنیم.
۱- پولکادات
بهطورکلی میتوان گفت که تمرکز پولکادات بر روی یکپارچهسازی چندین بلاکچین (پاراچینها) بر روی یک زنجیره است. در واقع، هدف پولکادات این است که پاراچینها، برای مقیاسپذیری و افزایش پهنای باند با یکدیگر قابلیت همکاری داشته باشند.
۲- آوالانچ
آوالانچ یکی از رقبای اتریوم است که از توسعه solidity پشتیبانی میکند. معماری آوالانچ بر اساس شبکهای از سه بلاکچین ایجاد شده است: یکی برای صدور و معامله داراییها (X Chain)، یکی برای هماهنگی ولیدیتورهای شبکه (P Chain) و دیگری برای ایجاد قراردادهای هوشمند (C Chain).
۳- BNB Chain
بایننس اسمارت چین به عنوان یک توکن ERC-20 روی اتریوم کار خود را آغاز کرد و سپس برای حمایت از اکوسیستم اپلیکیشنهای غیرمتمرکز خود، شبکه بایننس اسمارت چین را ایجاد نمود. در حال حاضر، بایننس اسمارت چین و توکنهایش در قراردادهای هوشمندشان از سالیدیتی استفاده میکنند. نکته جالب توجه این است که هم اکنون، بایننس اسمارت چین (BSC)، با نام BNB Chain شناخته میشود.
محبوبیت سالیدیتی تا چه اندازه است؟
زبان سالیدیتی محبوبترین زبان برنامهنویسی قراردادهای هوشمند در صنعت بلاکچین و زبان اصلی برنامهنویسی قراردادهای هوشمند سازگار با ماشین مجازی اتریوم است. حتی خارج از ماشین مجازی اتریوم، پروژههایی مثل Neon Labs’ Solana EVM نیز از ماشین مجازی اتریوم پشتیبانی میکنند.
پیشنهاد ویژه: تحلیل اتریوم
از آنجا که صنعت بلاکچین در حال توسعه است، ممکن است به نظر برسد که زبان برنامهنویسی سالیدیتی کمتر از زبانهای دیگر مورد استفاده قرار میگیرد. با این حال اگر به این صنعت نگاه کنیم، متوجه میشویم که solidity پرکاربردترین زبان قراردادهای هوشمند است و کاربردهای زیادی بر روی زنجیرههای دیگر و اکوسیستم در حال رشد اپلیکیشنهای غیرمتمرکز وب۳ دارد.
سالیدیتی چگونه در اتریوم استفاده میشود؟
مشاهده چند نمونه از کاربردهای سالیدیتی در اتریوم، به شما شناخت خوبی از سادگی کدهای سالیدیتی در ایجاد قراردادهای هوشمند منعطف خواهد داد. مثالی از یک کد ساده که برگرفته از مستندات رسمی solidity است را در ادامه مشاهده میکنید. کدی که یک ارز ساده را بر روی اتریوم ایجاد میکند. در صورت تمایل، نمونههای دیگری از این کدها را میتوانید در مستندات رسمی سالیدیتی مشاهده کنید.
جمعبندی
تا به امروز قطعاً نام زبانهای برنامهنویسی مختلفی را شنیدهاید. زبانهای قدرتمند و پرکاربردی که برای عاشقان برنامهنویسی بسیار وسوسهانگیز هستند. زبانهایی همچون پایتون، C، C++، جاوا، راست، گولنگ، پی اچ پی و … . اما قطعاً از زمانی که با دنیای بلاکچین و رمزارزها آشنا شدهاید نام یک زبان را بیش از پیش شنیدهاید و آن، زبان برنامهنویسی سالیدیتی است. احتمالاً تا به امروز بارها وسوسه شدهاید که به یادگیری این زبان بپردازید و شاید ایده چندین اپلیکیشن غیرمتمرکز و قرارداد هوشمند را در سر دارید که میخواهید بلافاصله پس از یادگیری دست به کار شوید و آنها را اجرا کنید. شاید هم تصمیم گرفتهاید رمزارز اختصاصی خودتان را ایجاد کنید!
اگر تا بحال برنامهنویسی نکردهاید باید بگوییم که یکی از لذتهای بزرگ را از دست دادهاید. هرچند که تبدیل شدن به یک برنامهنویس خبره solidity کاری سخت و دشوار است و شاید تمام علاقهمندان، نتوانند به آن دست پیدا کنند اما یادگیری یک زبان برنامهنویسی، خصوصاً سالیدیتی، کاری جذاب و سرگرمکننده است.
از طرف دیگر، بسیاری از فعالان بازار رمزارزها و سرمایهگذاران این حوزه دوست دارند با مفاهیم اولیه این زبان آشنا شوند، نه برای آنکه بتوانند قرارداد هوشمند بنویسند، بلکه برای این منظور که بتوانند پروژههای مورد علاقهشان برای سرمایهگذاری را عمیقتر مورد مطالعه قرار دهند و با اطمینان بیشتری سرمایهگذاری خود را شروع کنند.
به هر حال تفاوتی ندارد که به کدام دلیل میخواهید سالیدیتی بیاموزید: به دنبال یک فرصت شغلی جذاب هستید؟ ایده نوآورانه خودتان را برای پیادهسازی دارید؟ به عنوان سرگرمی به آن فکر میکنید؟ و یا یک سرمایهگذار حرفهای بازار هستید؟
از همین امروز منابع آموزشی لازم را بیابید و دست به کار شوید.