توسعه دهندههای بلاکچین از سالیدیتی به منظور برنامه نویسی در دنیای قراردادهای هوشمند استفاده میکنند. زبان برنامه نویسی بلاکچین سالیدیتی به مانند هر زبان دیگری سری پیش نیاز دارد. در ادامه در خصوص اینکه سالیدیتی چیست و بهترین دوره آموزش سالیدیتی در وبسایت یودمی (Udemy) صحبت شده است.
سالیدیتی چیست به زبان ساده
تیم توسعه دهنده زبان برنامه نویسی سالیدیتی همان تیم سازنده اتریوم هستند البته سالیدیتی برای اولین بار در سال ۲۰۱۴ توسط گاوین وود (Gavin Wood) همبنیانگذار اتریوم معرفی شد و در مرحله بعد توسط تیم اصلی اتریوم توسعه داده شد.
سالیدیتی یک زبان برنامه نویسی پیشرفته شی گرا است. به این معنی که هدف از آن تسهیل برنامه نویسی قابل درک برای کامپیوتر توسط انسانها است. سالیدیتی به گونهای طراحی شده است که شباهت زیادی به دیگر برنامههای برنامه نویسی مانند پایتون داشته باشد.
از این رو، برای آن دسته از برنامه نویسان که آشنایی با زبانهای دیگر برنامه نویسی دارند، کار کردن با سالیدیتی نسبتاً آسانتر خواهد بود. سالیدیتی با ماشین مجازی اتریوم رابطه نزدیکی دارد.
توسعه دهندههای اتریوم استانداردهایی را تعریف کردهاند که نحوه استفاده از قراردادهای هوشمند در ساخت اپلیکیشنهای غیرمتمرکز (dApps) روی شبکه اتریوم کنترل میکند. به این استانداردها اغلب استاندارد توکنی هم گفته میشود که در زیر آمده است:
- ای آر سی ۲۰ (ERC-20): استاندارد توکنهای مثلی
- ای آر سی (ERC-721): استاندارد توکنهای غیرمثلی
- ای آر سی ۸۰۹ (ERC-809): ERC-809: به مفهوم کالاهای «رقیب» اشاره دارد؛ آیتمهایی که مصرف آن توسط یک فرد مانع از مصرف توسط فرد دیگر میشود. بهعنوان مثال، رانندگی با ماشین یک رقیب محسوب میشود زیرا دو نفر نمیتوانند همزمان با یک ماشین رانندگی کنند اما خیره شدن به غروب آفتاب اینطور نیست. این استاندارد توکن یک استاندارد اجارهای را برای ان اف تیهای رقیب تعریف میکند و به آنها اجازه میدهد آنها را به سایر کاربران اجاره دهند.
- ای آر سی ۸۶۴ (ERC-864): امکان مالکیت مشترک ان اف تیها را فراهم میکند.
- ای آر سی ۸۷۴ (ERC-874): توکنهای غیرمثلی وزنی که به یک دائو (DAO) اجازه میدهد قدرت رأیدهی بیشتری را به شرکتکنندگان خاص بدهد.
اصطلاحات مهم در سالیدیتی
اگر شروع به آموزش سالیدیتی کنید حتماً به یک سری اصطلاحات رایج برخورد خواهید داشت که در زیر مهمترین آنها آورده شدهاند.

اتریوم
اتریوم یک شبکه غیرمتمرکز یا بلاکچین است که قراردادهای هوشمند و اپلیکیشنها روی آن اجرا میشوند. اتریوم در حال حاضر یکی از بهترین ارزهای دیجیتال است. برای خرید اتریوم با بهترین قیمت و کمترین کارمزد به صرافی ارز دیجیتال تتانکس مراجعه کنید.
قرارداد هوشمند
قرارداد هوشمند یک پروتکل کامپیوتری به منظور تأیید، تسهیل یا اجرای نتایج مرتبط با قراردادها است. قراردادهای هوشمند امکان اجرای مطمئن تراکنشها بدون دخالت شخص ثالث را میدهند. نیک سابو ایده قراردادهای هوشمند را برای اولین بار در سال ۱۹۹۴ مطرح کرد. سابو یک رمزنگار و تئوریسین بود که نقش مهمی در آغاز دوران ارزهای دیجیتال داشته است.
قرارداد
یک قرارداد سالیدیتی در واقع مجموعهای از داده و کد است که روی بلاکچین اتریوم در یک آدرس مشخص سوار شدهاند.
پراگما
اولین خط در یک دستور پراگما (Pragma)، کد منبعی را نشان میدهد که برای استفاده در سالیدیتی نوشته شده است. از آنجایی که دستور پراگما تنها به فایل منبع (source) محدود است، شما میتوانید اقدام به بارگذاری یک فایل دیگر کنید و پراگمای فایل بارگذاری شده بلافاصله اجرا نخواهد شد.
ماشین مجازی اتریوم
ماشین مجازی اتریوم در واقع بستر معمول برای قراردادهای هوشمند است. ماشین مجازی اتریوم (EVM) روی فراهم سازی حفاظت و همچنین برقراری امکان اجرای کدهای نامطمئن توسط کامپیوترهای سرتاسر جهان متمرکز شده است.
ماشین مجازی اتریوم به منظور دور زدن حملات محروم سازی از سرویس (denial of service) و همچنین اطمینان از اینکه برنامهها به محیط یکدیگر دسترسی ندارند، سفارشی سازی شده است و از این طریق امکان ارتباط بدون هیچ گونه تداخلی را ممکن میسازد.

مزایای سالیدیتی
از مهمترین مزایای سالیدیتی میتوان به چند مورد زیر اشاره کرد.
- سالیدیتی یک زبان برنامه نویسی شی گرا است که شامل ویژگیهای از دیگر زبانهای برنامه نویسی است.
- سالیدیتی برای آن دسته از قراردادهایی طراحی شده است که شامل چند متغیر هستند.
- توسعه سالیدیتی امکان برقراری یک فرایند مطمئن و امن را برای پلتفرمهای مختلف فراهم میکند.
- با توجه به شباهتهایی که با زبانهای برنامه نویسی شناخته شدهای مانند پایتون و جاوا اسکریپت دارد، یادگیری آن برای افراد آشنا به این زبانها سادهتر خواهد بود.
- علاوه بر کاربردهایی که سالیدیتی در اتریوم دارد، در برنامه نویسی قراردادهای هوشمند دیگر شبکهها هم استفاده میشود.
معایب سالیدیتی
زبان برنامه نویسی بلاکچین سالیدیتی در کنار همه مزایایی که دارد خالی از عیب و ایراد هم نیست. در ادامه به مهمترین معایب سالیدیتی اشاره شده است. اگر اطلاعات کمی در مورد برنامه نویسی بلاکچین دارید حتما مقاله «برنامه نویسی بلاکچین چیست» را مطاعه کنید.
در فضای سالیدیتی وقتی که یک قرارداد نوشته شد دیگر امکان تغییر آن وجود ندارد و برنامهنویسهای نمیتوانند توابع جدید را به آن اضافه کنند.
از آنجایی که سالیدیتی در مقایسه با زبانهایی مانند جاوا اسکریپت و پایتون، تاریخچه بسیار کمتری دارد و جدید قلمداد میشود، قطعاً دارای نقاط ضعفهای بیشتری است زیرا دیگر زبانهای برنامه نویسی تعداد بیشتری برنامهنویس از آنها استفاده میکنند و به مرور زبان اقدام به بهبود آن کردهاند.
در زبان سالیدیتی، دادهها صرفاً از طریق تراکنشها در دسترس هستند و منبع دیگری از داده وجود ندارد.
انواع داده در سالیدیتی
طراحی زبان برنامه نویسی سالیدیتی شباهت زیادی با زبانهای برنامه نویسی محبوب مانند پایتون و جاوا اسکریپت و سی پلاسی پلاس (C++) دارد. انواع داده در سالیدتی به عنوان یک زبان برنامه نویسی شی محور (object-oriented) با دیگر زبانهای برنامه نویسی شی محور یکسان است.
برخی از رایجترین انواع داده در زبانهای برنامه نویسی شی محور که در سالیدیتی کاربر دارند شامل بولینها (Boolean)، اعداد صحیح (Integer)، آرایها (Array) و استرینگ ها (String) میشود.
- بولینها – نوع داده بولی بسته به وضعیت شرط، زمانی که شرط درست باشد «۱» و زمانی که نادرست است باشد «۰» به دست میدهد.
- عدد صحیح – میتوانید مقادیر صحیح را در سالیدیتی علامتدار یا بدون علامت کنید. سالیدیتی همچنین از استثناهای زمان اجرا و کلمات کلیدی «uint8» و «uint256» پشتیبانی میکند.
- رشته – نقل قولهای تکی یا دوتایی ممکن است یک رشته را نشان دهند.
- اصلاحکننده – قبل از اجرای کد برای یک قرارداد هوشمند، یک اصلاحکننده اغلب منطقی بودن تمام شرایط را تأیید میکند.
- آرایه – سینتکس برنامهنویسی سالیدیتی مانند سایر زبانهای شی گرا است و از آرایههای تک بعدی و چند بعدی پشتیبانی میکند.

بهترین دوره آموزش سالیدیتی در سایت یودمی (Udemy) کدام است؟
تعداد زیادی دوره آموزشی زبان برنامه نویسی بلاکچین سالیدیتی در سطح اینترنت و صد البته وبسایت معرفی یودمی (Udemy) در دسترس هستند. در ادامه چند دوره معتبر که در سایت یودمی با هزینه بسیار کم در دسترس هستند معرفی شدهاند.
اتریوم و سالیدیتی در وبسایت یودمی
دوره آموزشی (Ethereum and Solidity) در سایت یودمی (Udemy) شامل آموزش نحوه استفاده از اتریوم، سالیدیتی و قراردادهای هوشمند است که پس از اتمام دوره، کاربران میتوانند اپلیکیشنهای مبتنی بر بلاکچین را تولید کنند.
دوره آموزشی اتریوم و زبان برنامه نویسی سالیدیتی سایت یودمی شامل بیش از ۲۴ ساعت ویدئوی آموزشی، ۳۳ مقاله و ۱۳۰ منبع آموزشی قابل دانلود است که در دسترس کاربران و افراد شرکت کننده در این دوره قرار میگیرد.
در پایان این دوره آموزشی، افراد شرکت کننده قادر خواهند بود تا قراردادهای هوشمند ایمن را طراحی و آزمایش کنند. این دوره یک دوره ۲۴ ساعته است که توسط استفان گریدر، متخصص در این حوزه، به افراد علاقهمندان به زبان برنامه نویسی سالیدیتی آموزش داده میشود.

صفر تا صد اتریوم و زبان برنامه نویسی سالیدیتی در یودمی
این دوره، یک دوره آموزشی عالی در رابطه با زبان برنامه نویسی سالیدیتی و اتریوم است که برای افراد مبتدی در این حوزه ارائه میشود. کاربران با استفاده از این دوره، قادر خواهند بود قراردادهای هوشمند عملی شامل توکنها، عرضه اولیه، قرعهکشی، حراج و جذب سرمایه گروهی بسازند و آنها را اجرا کنند.
این دوره آموزشی درک عمیقی از این زبان برنامه نویسی شامل نحوه نگارش و مفاهیمی مانند متغیرهای حالت، ذخیره سازی و توابع را به دانشجوها اراهئه میدهد که در پایان دوره میتوانند یک توکن ERC20 را ایجاد کرده و یک عرضه اولیه (ICO) راه اندازی کنند.
دوره آموزشی بلاکچین اتریوم در سایت یودمی
این دوره آموزشی با تمرکز بر سالیدیتی، وب ۳، رمیکس و جاوا اسکریپت به شرکت کنندگان در جهت تبدیل شدن به توسعه دهنده بلاکچینها، کمک میکند. در این دوره کاربران تئوریها و عملیات مورد نیاز قراردادهای هوشمند را درک خواهند کرد و با عملکرد فناوری غیرمتمرکز و بلاکچین آشنا خواهند شد.
کتاب آموزشی مهارت در اتریوم
کتاب مهارت در اتریوم (Mastering Ethereum) که توسط گاوین وود تدوین شده است از منابع مهم آموزشی زبان برنامه نویسی سالیدیتی به شمار میرود.
در این کتاب، نویسندگان تمامی مفاهیم مورد نیاز برای ایجاد قراردادهای هوشمند و برنامههای غیرمتمرکز روی ماشین مجازی اتریوم و سایر ماشینهای مجازی بلاکچین را ارائه کردهاند.
مفاهیم دیگری که در این کتاب آموزش داده شده است، شامل راه اندازی یک کلاینت اتریوم، شروع تراکنشها در اتریوم، برنامه نویسی قراردادهای هوشمند، یادگیری مفاهیم پایه ارزهای دیجیتال، امضاهای دیجیتال، نحوه کارکرد کیف پولهای رمزنگاری، مدیریت فاند ها و قراردادهای هوشمند، ارتباط بین برنامهها و کتابخانههای جاوا اسکریپت، دیزاین پترنها با مثالهای از دنیای واقعی، ایجاد توکن، اشتراک گذاری توکن و رأی گیری و … است.
دوره آموزش سالیدیتی چه سرفصلهایی دارد؟
یک دوره آموزشی خوب به منظور یادگیری سالیدیتی باید شامل موضوعات و سرفصلهای زیر باشد.
- معرفی بلاکچین و قراردادهای هوشمند
- هزینههای شبکه
- وضعیت یا State
- تابع و انواع آن کیف پول متامسک
- کار با شبیهساز بلاکچین
- ساختار برنامه قرارداد هوشمند
- انواع متغیر از لحاظ محل ذخیرهسازی
- انواع متغیر از نظر سطح دسترسی
- انواع داده int و uint و متدها و عملگرهای آن
- آرایههای ثابت و متغیر
- ساختار (struct) و نگاشت (mapping)
- انواع تابع از لحاظ دسترسی به بلاکچین
- تابع سازنده
- متغیرهای درونی سالیدیتی
- کنترل خطا در برنامه
- شروع برنامه نویسی قرارداد هوشمند Wake Up
- نوع داده address و متدها و عملگرهای آن
- انواع داده bytesN و متدها و عملگرهای آن
- نوع داده bytes و متدها و عملگرهای آن
- نوع داده enum و متدها و عملگرهای آن
- نوع داده string و متدها و عملگرهای آن
- ساختار کنترلی if else ساختار کنترلی while
- ساختار کنترلی do while و ساختار کنترلی for
- متغیرهای درونی سالیدیتی
- ثابتهای مربوط به واحد پول شبکه
- ثابتهای مربوط به واحد زمان و ادامة پروژة عملی
- آشنایی با شبکههای تستی و دریافت اتر تستی
- کنترل اجرا
- بارگذاری تابع
- ارث بری، انواع آن و انواع روشهای صدازدن توابع موروثی
- استفاده از کتابخانهها
- ارتباط قرارداد هوشمند با جهان خارج: ورودی قرارداد هوشمند از طریق توابع، خروجی قرارداد هوشمند از طریق رویداد یا event
- استفاده از یک قرارداد در قرارداد دیگر
- اینترفیس
- پرداخت پول به قرارداد هوشمند
- تابع fallback
- معرفی استانداردهای ERC و بعضی از ERCهای معروف
- معرفی پروتکل ERC20 و نحوه کار روی شبکة اصلی و محدودیتهای آن تعیین فی مناسب برای شبکة اصلی
- معرفی کتابخانة Web3.js برای ارتباط وب با قرارداد هوشمند اتریوم
- کار با ادیتور مناسب
- آشنایی مقدماتی با HTML و Javascript
- ارتباط با توابع با متد call
- ارتباط با توابع با متد send
- استفاده از ایونتها و انتظار برای روی دادن آنها
برنامه نویس سالیدیتی کیست؟
با توجه به توسعه روز افزون وب ۳ و دنیای غیرمتمرکز علاقه به سمت برنامه نویسی بلاکچین سالیدیتی روز به روز در حال افزایش است.
مسئولیتهای یک برنامه نویس سالیدیتی
- توسعه و مدیریت قراردادهای هوشمند و اپلیکیشنهای غیرمتمرکز
- توسعه معماری شبکه و استانداردهای امنیتی
پیش نیازهای یک برنامه نویس سالیدیتی
- دانش خوب در مورد مهندسی کامپیوتر و فناوری اطلاعات (IT)
- دانش خوب در زمینه زبانهای برنامه نویسی مشابه مانند پایتون
مهارتهای مورد نیاز یک برنامه نویس سالیدیتی
- دانش بالا از سالیدیتی
- تجربه کار با پایتون و جاوا اسکریپت
- درک بالا از بلاکچین
حقوق یک برنامه نویس سالیدیتی
حقوق یک برنامه نویس سالیدیتی مانند هر موقعیت شغلی دیگر هم تا درجه زیادی به مهارت و سابقه کاری فرد بستگی دارد. به طور کلی حقوق یک برنامه نویس سالیدیتی در بازه ۸۳ هزار دلا تا ۲۲۰ هزار دلار سالیانه در کشورهای اروپایی قرار میگیرد.
خلاصه ای از انچه که درر مورد سالیدیتی گفته شد:
- سالیدیتی یکی از پرکاربردترین زبان های برنامه نویسی بلاکچین است.
- سالیدیتی یک زبان برنامه نویسی پیشرفته شی گرا است. به این معنی که هدف از آن تسهیل برنامه نویسی قابل درک برای کامپیوتر توسط انسانها است.
- سالیدیتی شباهت زیادی به زبان های برنانمه نویسی معروف مانند پایتون دارد.
- چندد دوره آموزشی ایده آل در سایت یودمی برای یادگیری سالیدیتی در دسترس هستند.
[…] سالیدیتی (Solidity) یک زبان برنامه نویسی برای بلاکچین شی گرا و استاتیک (Statical) است که به کاربران اجازه توسعه قراردادهای هوشمند در بلاکچین مد نظر را میدهد. […]