سالیدیتی چیست؟ صفر تا صد سالیدیتی از زبان تریتکس
با رشد فناوری وب 3 و قدمگذاشتن به عصر جدیدی از دنیای اینترنت، توسعهدهندگان با زبانهای برنامهنویسی بیشتری مواجه شدهاند که هرکدام با مزایا و ویژگیهای متفاوت، بهدنبال نوشتن قراردادهای هوشمند به بهترین شکل ممکن هستند. هر یک از این زبانها با پشتیبانی از بلاک چینهای خاص، ماهیت و ویژگیهای مختلفی مانند سرعت، خوانایی یا امنیت دارند. سالیدیتی (Solidity) که به عنوان زبان توسعه قرارداد هوشمند برای بلاک چین اتریوم توسعه یافته است، یک زبان برنامهنویسی قدرتمند است. به زبان دیگر، سالیدیتی برای ایجاد برنامه غیرمتمرکز (dApps) برای بزرگترین اکوسیستم توسعهدهنده در صنعت بلاک چین استفاده می شود.
در این مقاله با آموزش کامل سالیدیتی در خدمت شما هستیم. بنابراین همراه با ما باشید تا بخوانیم سالیدیتی چیست، بازار کار سالیدیتی چگونه است و تاریخچه تولد آن در این دنیای نوین به چه زمانی باز میگردد. از شما دعوت میکنیم مطالعه این مطلب جامع و تخصصی را به هیچ عنوان از دست ندهید.
Solidity چیست؟ نگاهی به زبان برنامهنویسی بلاکچین اتریوم
پیش از آنکه به سراغ نحوه کار سالیدیتی برویم، بهتر است به یک سوال اصلی پاسخ دهیم؛ سالیدیتی چیست؟ در واقع سالیدیتی (Solidity) یک زبان برنامهنویسی پیشرفته و شیگرا است که برای اجرای قراردادهای هوشمند ارز دیجیتال مبتنی بر اتریوم استفاده میشود. این زبان شی گرا ماشین مجازی اتریوم (EVM) را هدف قرار می دهد.
همانطور که میدانید، ماشین مجازی اتریوم یا Ethereum Virtual Machine (EVM) یک کامپیوتر مجازی برای اجرای قراردادهای هوشمند بر بستر اتریوم است. بنابراین زبان برنامهنویسی سالیدیتی توسط توسعهدهندگان شبکه اتریوم به وجود آمد تا ابزاری برای ساخت کد قراردادهای هوشمند در سطح کامپیوتر و فرآیند کامپایلکردن آن در EVM باشد. منظور از سطح بالابودن زبان سالیدیتی آن است که توسعهدهندگان بدون نیاز به دستکاری اطلاعات سطح سیستم مانند حافظه یا بایت کد برای انجام محاسبات، قراردادهای هوشمند ایجاد میکنند.
قراردادهای هوشمند اتریوم را بیشتر بشناسید
اصطلاح قرارداد هوشمند برای اولین بار در سال 1994 به آن دسته از قراردادهایی اطلاق شد که در قالب کدهای کامپیوتری ایجاد میشدند. این روزها به زبان ساده، «قرارداد هوشمند اتریوم» برنامهای است که بر بلاک چین اتریوم اجرا می شود. یک قرارداد هوشمند یا همان Smart Contract مجموعهای از کدها، توابع آنها و دادهها است که در یک آدرس خاص از بلاک چین اتریوم ذخیره میشوند. هدف از ایجاد یک قرارداد هوشمند میتواند موارد مختلفی مانند تایید هویت کاربر، مدیریت زنجیره تامین و انجام تراکنشهای مالی باشد.
اگرچه قراردادهای هوشمند برنامههای قدرتمندی بهشمار میآیند، با این حال همچنان شدیدا به کد اصلی وابسته هستند. به این معنا که اگر زیربنای کد اصلی معیوب باشد، قرارداد هوشمند دچار مشکلات مختلفی خواهد شد. بنابراین توسعهدهندگان شبکه اتریوم زبان محبوب و درحال رشدِ سالیدیتی را بهوجود آوردند تا میزان خطا در این بلاکچین را به حداقل برسانند. اما بیایید در ادامه این مطلب بخوانیم زبان سالیدیتی چگونه به وجود آمد و پدیدآورندگان آن چه کسانی بودهاند.
تاریخچه زبان برنامهنویسی سالیدیتی (Solidity)
در سال 2014 مدیر ارشد فناوری اتریوم، گاوین وود (Gavin Wood)، سالیدیتی را بهعنوان زبانی برای از بین بردن نیاز اتریوم به یک زبان برنامهنویسی تورینگ کامل برای نوشتن قراردادهای هوشمند معرفی کرد.
در آن زمان بنیانگذار اتریوم، ویتالیک بوترین (Vitalik Buterin) اتریوم را بهعنوان پروتکلی پیشنهاد کرد که عملکرد بلاک چین را (که توسط بیت کوین پیشگام بود) با کارکردهای اضافهشده قراردادهای هوشمند، گسترش میداد. در چشمانداز او، اتریوم میتوانست شبکه پیچیدهای از قراردادهای هوشمند را اجرا کند که بهصورت مشروط، قطعات کدی را اجرا میکنند که روی یک شبکه جهانی از رایانهها، اجرا میشود. درواقع هدف او آن بود که قراردادهای هوشمند امکان ایجاد ارزهای دیجیتال، ساخت برنامه هایDeFi، خرید تتر ارزان و موارد دیگر را در اختیار توسعهدهندگان قرار دهند. تصوری که این روزها به واقعیت پیوسته است.
در آن زمان تیم پروژه Solidity توسط Christian Reitwiessner رهبری میشد که در نهایت این تیم توانست در ایجاد یک زبان برنامهنویسی کامل تورینگ و شیگرا برای اجرای قراردادهای هوشمند موفق شوند.
نحوه کار زبان سالیدیتی در شبکه اتریوم چگونه است؟
نحوه کار زبان سالیدیتی در بلاکچین اتریوم با بلاکچینهای دیگر مانند بیت کوین کمی متفاوت و البته پیشرفتهتر است. زبان برنامه بلاکچین بیت کوین فقط تراکنشهای این شبکه را پردازش میکند. این درحالی است که زبان برنامهنویسی سالیدیتی دستورالعملهای بینهایت را ترجمه کرده و به کمک EVM آنها را اجرا میکند. به زبان دیگر، ویژگی تورینگ کامل سالیدیتی این امکان را فراهم کرده که تا زمانی که دستورالعملهای صحیح، زمان کافی و قدرت پردازش به آن داده شود، از پس انجام هر عملی (البته در تئوری) برآید. بنابراین نحوه کار زبان سالیدیتی در تعامل با ماشین مجازی اتریوم به شرح زیر است:
وضعیت جهانی ماشین مجازی اتریوم (EVM)با اقداماتی مانند ضرب توکن، ارسال و دریافت توکن یا آزادسازی داراییها تغییر میکند. مجموعهای از عملیاتهای EVM که توسط سالیدیتی در ماشین مجازی اتریوم کدگذاری شدهاند، این تغییرات را در وضعیت جهانی آن ایجاد میکنند.
هر کد عملیاتی EVM به گونهای طراحی شده است که EVM را وادار کند تا نوع خاصی از تغییر حالت مانند ارسال توکنها از یک آدرس به آدرس دیگر، برش توکنها یا حتی از بین بردن قراردادهای هوشمند را انجام دهد. در مرحله آخر، EVM بایت کد قرارداد هوشمند را به کدهای EVM ترجمه میکند تا تغییرات لازم در بلاک چین ایجاد شود.
ویژگیهای Solidity چیست؟ به زبان ساده بیاموزید
تا این بخش از مقاله درباره مفهوم سالیدیتی، تاریخچه و نحوه کار آن در کنار هم آموختیم. حالا نوبت به آن رسیده که نگاهی به ویژگیهای زبان برنامهنویسی Solidity داشته باشیم. در ادامه ویژگیهای برجسته این زبان را به اختصار توضیح میدهیم اما پیشنهاد میکنیم برای یادگیری کامل این زبان تخصصی، به معرفی دوره برنامه نویسی سالیدیتی در انتهای همین مطلب مراجعه کنید.
- رویدادها (Events): رویدادها در سالیدیتی مانند یک تابع عمل کرده و پس از دریافت دیتا، آن را در محیط Blockchain Log رونویسی میکنند.
- مدل دادهای (Data Model): مدل دادهای در زبان برنامهنویسی سالیدیتی ایستا است.
- سطح دسترسی (Access Level): دو نوع سطح دسترسی اصلی در زبان برنامهنویسی سالیدیتی وجود دارد که به نامهای Own و Mortal شناخته میشوند.
- ساختار داده (Data Structure): زبان سالیدیتی قراردادمحور بوده و همهچیز در این محیط، براساس داده است.
- کتابخانه (Library): وجود کتابخانههای متعدد و سرشار از اطلاعات غنی برای زبان برنامهنویسی سالیدیتی یکی دیگر از ویژگیهای این زبان است.
- امکان Import: در محیط سالیدیتی، امکان واردکردن کدهای فایلهای مختلف و حتی تبدیل دادهای برای توسعهدهنده فراهم است.
- تغییر رفتار توابع (Function Modifier): وجود ویرایشگر Function Modifier در سالیدیتی، قابلیت تغییر اصلاح و بازنویسی تابعها برای برنامهنویس را فراهم میکند.
تمامی این ویژگیها بازگوکننده آن است که این زبان جذاب و محبوب، قابلیتهای زیادی را در اختیار یک برنامهنویس قرار میدهد. بنابراین توسعهدهنده بهراحتی میتواند با اندکی تلاش، نسبت به مدیریت و ایجاد قراردادهای هوشمند اقدام کند.
کاربرد سالیدیتی در شبکه بلاکچین اتریوم
همانطور که در سیر مطالب این مقاله گفته شد، سالیدیتی امکانات بینهایتی را در اختیار توسعهدهنده شبکه قرار میدهد. با این حال در ادامه با ما همراه باشید تا با سه کاربرد سالیدیتی در شبکه بهصورت موشکافانهتر آشنا شویم.
1. رایگیری در محیط شبکه بلاکچین
به نظر شما یک رایگیری منصفانه چه شرایطی دارد؟ یک فرآیند شفاف و ساده از پروسه رایگیری، میتواند شرایط را برای تمامی شرکتکنندگان منصفانه سازد. یک کاربرد سالیدیتی در اتریوم از بین بردن امکان شرکت هویتهای جعلی، تغییر در ماشینهای رایگیری و اشغالکردن شعب اخذ رای است.
2. مزایدههای محرمانه؛ دومین کاربرد Solidity
یکی از مشکلات مزایدهها یا حراجیهای آزاد، مشاهده پیشنهادات شرکتکنندگان، توسط سایر متقاضیان است. خوشبختانه سالیدیتی با طراحی حراجیها و مزایدههای سرپوشیده این مشکل را در بلاکچین اتریوم حل کرده است. بنابراین احتمال ایجاد اختلاف و تقلب در پروسه مزایدههای آنلاین در بلاکچین اتریوم نزدیک به صفر است.
3. تامین مالی جمعی؛ آخرین کاربرد سالیدیتی
کاهش هزینههای اضافی یکی دیگر از کاربردهای درخشان زبان برنامهنویسی سالیدیتی در شبکه بلاکچین اتریوم است. چرا که در تامین مالی جمعی قراردادهای هوشمند، دیگر مسائلی مانند کمیسیون شخص ثالث مطرح نیست.
آیا یادگیری زبان برنامهنویسی Solidity سخت است؟
زبان برنامه نویسی Solidity از زبانهای برنامهنویسی پایتون، جاوا اسکریپت و ++C الهام گرفته است. به این شکل که حروف سالیدیتی، شباهت زیادی با حروف بکاررفته در زبان جاوا دارد. همچنین تابع main در زبان برنامهنویسی C، همان Contract در زبان برنامهنویسی سالیدیتی است. بنابراین اگر کمی به زبانهای مختلف برنامهنویسی تسلط داشته باشید و تجربه کار کردن با آنها را در کارنامه خود به ثبت رسانده باشید، یادگیری سالیدیتی چندان هم سخت نخواهد بود.
پیشنیازهای یادگیری زبان سالیدیتی چیست؟
همانطور که گفته شد، سالیدیتی به شدت تحت تاثیر زبانهایی مانند جاوا اسکریپت، پایتون و ++C است. بنابراین توسعهدهندگانی که روی Solidity کار میکنند باید حداقل روی یکی از این زبانها، تسلط کافی داشته باشند. همچنین مهندسان Solidity باید اصول برنامهنویسی استاندارد مانند DRY و KISS و مدیریت پایگاه داده را بدانند.
از طرف دیگر، قراردادهای هوشمند اغلب شامل دادههای حساس و تراکنشهای پولی است. بنابراین توسعهدهندگان Solidity باید درمورد امنیت سایبری و جلوگیری از حملات سایبری به حد کافی بدانند.
فعالیت سالیدیتی روی شبکه بلاک چین است. به همین دلیل، اگر مایلید به این حوزه وارد شوید، علاوهبر تمامی این موارد باید درباره متاورس، پروتکلهای بلاک چین و الگوریتمهای ساخت توکنهایی مانند ERC721 و ERC20 به اندازه کافی مطالعه داشته باشید. علاوهبر این در بازار کار، آن دسته از مهندسانی که دانش زیرساختهای مالی غیرمتمرکز (DeFi) و dApps را میدانند، در اولویت برای استخدام هستند و درآمد سالیدیتی بهتری در انتظار آنها است. چرا که این موارد برای ایجاد قراردادهای بلاک چین پیشرفته مورد نیاز خواهند بود.
کلام پایانی؛ یک قدم تا یادگیری زبان برنامهنویسی سالیدیتی
آنچه در این مطلب از وبلاگ تریتکس در کنار هم خواندیم و آموختیم، شرح کاملی از زبان برنامهنویسی محبوب Solidity بود. به دلیل ظهور تازه این زبان، درآمد سالیدیتی در مقایسه با سایر زبانهای برنامهنویسی به میزان چشمگیری بالاتر است. بنابراین اگر مایلید حضور در این دنیای درآمدزا را با یک دوره برنامه نویسی سالیدیتی آغاز کنید، پیشنهاد ما به شما انتخاب از میان یکی از گزینههای زیر است.
- دوره یادگیری زبان سالیدتی Udemy
- دوره Learning Solidity لینکدین
- دوره قراردادهای هوشمند Coursera
- دوره Solidity Docs
در پایان از شما میخواهیم نظرات و سوالاتتان را درباره این زبان برنامهنویسی محبوب و محتوایی که درباره آن در این مقاله مطالعه کردید، با ما درمیان بگذارید.
ممنون از این مقاله کاربردی
سلام وقت بخیر. برای یادگیری زبان برنامه نویسی سالیدیتی باید زبان برنامه نویسی دیگری هم بلد باشیم؟
سلام دوست عزیز؛
برنامه نویسی سالیدیتی به شدت تحت تاثیر زبانهایی مانند جاوا اسکریپت، پایتون و ++C است. بنابراین توسعهدهندگانی که روی زبان سالیدیتی کار میکنند باید حداقل روی یکی از این زبانها، تسلط کافی داشته باشند.
سلام خسته نباشید ببخشید میخواستم بدونم مدل داده ای solidity چیست؟
سلام محمد عزیز؛
مدل دادهای در زبان برنامهنویسی سالیدیتی ایستا است.