اگر فکر میکنید در صورت عقد یک قرارداد معمول، سنتی و قانونی با مفاد مشخص، دیگر هیچ خطری تهدیدتان نمیکند، سخت در اشتباهید!
یکی از ریسکهای موجود در قراردادهای سنتی، امکان فسخ یک طرفه آن است که نه تنها میتواند زیان مالی هنگفتی برای هر یک از طرفین قرارداد در پی داشته باشد، بلکه امکان ادامه روند اجرای مفاد قرارداد را نیز بیش از پیش دشوار مینماید.
قراردادهای هوشمند یا Smart Contracts با هدف به حداقل رساندن ریسکهای قراردادهای سنتی با بهرهگیری از فناوری بلاک چین و کدهای رمزنگاری شده کامپیوتری، طراحی و ایجاد شده اند.
حال آنکه برای توسعه قراردادهای هوشمند، نیاز به نوع بهخصوصی از زبان برنامه نویسی است که سالیدیتی (Solidity) نامیده میشود و غالبا بر بستر شبکه بلاک چین اتریوم اجرا میگردد.
در این مقاله قصد داریم زبان برنامه نویسی Solidity را بیشتر شناخته، کاربردهای رایج و روشهای ساده یادگیری آن را معرفی نماییم.
زبان برنامه نویسی سالیدیتی (Solidity) چیست؟
سالیدیتی (Solidity) نوعی زبان برنامهنویسی شی گرا (Object-Oriented) است که با الهام از زبانهای JavaScript، پایتون و ++C برای ایجاد و اجرای قراردادهای هوشمند (Smart Contracts) بر بستر شبکه بلاک چین و بطور خاص روی ماشین مجازی اتریوم (EVM) طراحی شده است.
قراردادهای هوشمند بهواسطه بهرهگیری از فناوری بلاک چین، قابل رهگیری، لازم الاجرا، برگشت ناپذیر و کاملا شفاف هستند که بیش از ۹۰ درصد این قراردادها با زبان برنامه نویسی سالیدیتی طراحی شده اند.
روند تکامل زبان سالیدیتی
زبان برنامهنویسی Solidity برای اولین بار در سال ۲۰۱۴ توسط مدیر ارشد فناوری اتریوم، گوین وود -Gavin Wood- که خود یک توسعه دهنده نرم افزار بود، معرفی شد.
هدف از معرفی سالیدیتی، تبدیل اتریوم به یک تورینگ کامل بود؛ این در حالی است که برخی دیگر از زبانهای برنامه نویسی مانند پکت (Pact)، تورینگ ناقص محسوب میشوند.
در بیان تورینگ کامل و ناقص میتوان توضیح زیر را بیان کرد:
بطور کلی و به نقل از آلن تورینگ، دستگاهی که بتواند هرگونه معمای پیچیده و مشکلی را حل کند یک ماشین تورینگ کامل (Turing Complete) محسوب میشود. از آنجایی که این اصطلاح بیشتر برای زبانهای برنامهنویسی استفاده میشود، میتوان زبانهای ++C، پایتون و غیره را Turing کامل دانست که با استفاده از آنها میتوان هر مسأله پیچیدهای را حل کرد.
حال اگر دستگاه یا زبان برنامهنویسی قادر به حل یک مشکل نباشد، به آن تورینگ ناقص (Turing Incomplete) گفته میشود.
در ادامه این روند، زبان برنامه نویسی سالیدیتی (Solidity) توسط تیم توسعه دهنده اتریوم به رهبری Christian Reitwiessner و هم تیمیهای وی تکامل پیدا کرد.
در ادامه به برخی از مهمترین خصوصیات سالیدیتی اشاره میکنیم.
ویژگی های منحصر به فرد Solidity
زبان برنامهنویسی سالیدیتی بهعنوان یک تورینگ کامل و زبان غالب طراحی قراردادهای هوشمند، دارای خصوصیات منحصر به فردی است که برخی از مهم ترین آنها عبارتند از:
- طراحی شده صرفا جهت استفاده در قراردادهای هوشمند
- شی گرا (قرارداد محور)
- الهام گرفته از زبانهای برنامهنویسی Python، جاوا اسکریپت و C
- دارای قابلیت تعریف کتابخانههای پیچیده توسط کاربر
- اصلی ترین زبان مورد استفاده در سیستمهای مبتنی بر بلاک چین اتریوم؛ مانند اپلیکیشنهای غیر متمرکز (DApps)
دیگر ویژگیهای سالیدیتی بیشتر جنبه تخصصی داشته و هنگام یادگیری و استفاده عملی از این زبان برنامه نویسی نمایان میشوند که از جمله این موارد میتوان به پشتیبانی سالیدیتی از تبدیل بین انواع String و Hash نام برد.
بیایید نگاهی به کاربردهای عملی Solidity در محیط پیرامون خود داشته باشیم.
کاربردهای زبان برنامه نویسی سالیدیتی
همانطور که پیشتر ذکر شد، سالیدیتی یک تورینگ کامل است که به تنهایی میتواند هرگونه معمای پیچیده و مشکلی را حل کند. همین امر باعث شده تا Solidity به یکی از کاربردی ترین زبانهای برنامهنویسی حال حاضر بدل شود.
اصلی ترین کاربرد زبان سالیدیتی در طراحی و ایجاد قراردادهای هوشمند مبتنی بر بلاکچین اتریوم است. بد نیست نگاهی به روند اجرای قراردادهای هوشمند بیاندازیم:
- ماشین مجازی اتریوم (EVM) یک محیط زمانی اجرا برای قرارداد هوشمند فراهم میکند.
- پیش از هر چیز و با استفاده از شبکهای بین المللی از گرههای عمومی، EVM به تضمین امنیت میپردازد.
- ماشین مجازی اتریوم از عدم دسترسی برنامهها به یکدیگر اطمینان حاصل کرده و ارتباط بدون تداخل آنها را برقرار میکند.
- قراردادهای هوشمند با استفاده از کدهای کامپیوتری پیشرفته پیش از ارسال به بلاک چین اتریوم، برای اجرا در EVM کامپایل میشوند.
از جمله زبانهای برنامهنویسی مورد استفاده در نگارش قراردادهای هوشمند عبارتند از Solidity، سرپنت و LLL که سالیدیتی پرکاربردترین میان سایرین است.
سایر کاربردهای زبان سالیدیتی عبارتند از:
- رأیگیری الکترونیکی
- جمع آوری مبالغ خرد از عموم مردم (تجمیع مالی)
- برگزاری مزایده
یادگیری زبان Solidity
بهواسطه کاربرد فزاینده قراردادهای هوشمند در زندگی روزمره امروزی، افراد بسیاری در صدد یادگیری مهارت طراحی و ساخت این قراردادها بر آمده اند و از آنجایی که اساس اسمارت کانترکت بر زبان Solidity استوار است، یادگیری این زبان برنامه نویسی به امری ضروری و مورد استقبال توسعه دهندگان نرم افزار بدل شده است.
طبق دادههای سایت Alchemy، توسعه دهندگان سالیدیتی بر اساس میزان تجربه خود میتوانند بین ۱۴۵,۰۰۰ تا ۵۰۰,۰۰۰ دلار درآمد سالیانه داشته باشند.
پیش نیازهای یادگیری زبان Solidity عبارتند از:
- درک اولیه از بلاک چین و فناوریهای مرتبط با آن
- دانش پایه از زبانهای برنامهنویسی و نحوه کدنویسی
- توانایی کار با ابزارهای تکنولوژی-محور
روش های یادگیری و آموزش سالیدیتی
پیش از ورود به حوزه برنامه نویسی قراردادهای هوشمند، حتما از دانش اولیه در زمینه فناوری بلاکچین اطمینان حاصل کنید؛ سپس با استفاده از روشهای زیر به کسب دانش تخصصی در حوزه زبان برنامه نویسی Solidity بپردازید:
- از طریق Bootcamp
- دورههای آموزشی آنلاین
- پکیجهای آموزشی
توصیه میکنیم اگر تمایل به یادگیری و کسب مهارتهای پیشرفته در حوزه سالیدیتی را دارید، حتما دورههای تخصصی مرتبط را گذرانده و با توسعه دهندگان حوزه بلاک چین مشورت نمایید.
آینده سالیدیتی چطور پیش بینی می شود؟
ریسکهای موجود در قراردادهای سنتی، کاربران را به سمت استفاده از قراردادهای هوشمند (Smart Contracts) مبتنی بر شبکه بلاک چین -بهطور خاص اتریوم- سوق داده و از آنجایی که برای طراحی این قراردادها، نیاز به توسعه دهندگان نرم افزار مسلط به زبان برنامهنویسی سالیدیتی (Solidity) است، میتوان پیش بینی کرد آینده درخشانی پیش روی برنامه نویسان حوزه سالیدیتی باشد.
توسعه دهندگان سالیدیتی در سال گذشته توانسته اند درآمد بیش از ۵۰۰ هزار دلاری را تجربه کنند که نرخ رشد کاربرد قراردادهای هوشمند، چندین برابر شدن این درآمد طی سالهای آتی را بیش از پیش متصور میسازد.