در این بخش می خوانید:
موارد استفاده و کاربرد سالیدیتی
آیا باید ++C را قبل از Solidity یاد بگیریم؟
سالیدیتی (Solidity) چیست؟
Solidity یک زبان شی گرا، قرارداد محور و سطح بالا برای توسعه dApps (برنامه های غیرمتمرکز) در بلاک چین اتریوم و نوشتن قراردادهای هوشمند است.
با استفاده از Solidity، توسعهدهندگان میتوانند برنامههایی بنویسند که نیاز به منطق تجاری خوداجرایی اضافه شده در قراردادهای هوشمند دارند. از آنجایی که solidity بر اساس نحو جاوا اسکریپت طراحی شده است، درک و پیاده سازی آن برای توسعه دهندگان وب آسان تر است.
ویژگی های زبان سالیدیتی
Solidity یک زبان برنامه نویسی کاملاً جدید است که توسط اتریوم ایجاد شده است که دومین بازار بزرگ ارزهای دیجیتال با سرمایه گذاری است که در سال 2015 به رهبری کریستین ریتویسنر منتشر شد. برخی از ویژگی های کلیدی سالیدیتی در زیر ذکر شده است:
- Solidity یک زبان برنامه نویسی سطح بالا است که برای اجرای قراردادهای هوشمند طراحی شده است.
- این زبان شی گرا (قرارداد گرا) با تایپ ایستا است.
- Solidity به شدت تحت تأثیر پایتون، ++ Cو جاوا اسکریپت است که روی ماشین مجازی اتریوم (EVM) اجرا می شود.
- Solidity از برنامه نویسی پیچیده تعریف شده توسط کاربر، کتابخانه ها و وراثت پشتیبانی می کند.
- Solidity زبان اصلی برای بلاک چین پلتفرم های در حال اجرا است.
- از Solidity می توان برای ایجاد قراردادهایی مانند رای دادن، تامین مالی جمعی، کیف پول های چند امضایی و غیره استفاده کرد.
موارد استفاده و کاربرد سالیدیتی
رای گیری
در حال حاضر، رای گیری با مسائل متعددی از جمله دستکاری داده ها، رای دهندگان جعلی، تغییر در ماشین های رای گیری و گرفتن غرفه سروکار دارد. مخاطبین هوشمند Solidity می توانند ایجاد و مستقر شوند تا فرآیند رای گیری شفاف و ساده شود.
مزایده کور
در یک مزایده آزاد، افراد می توانند پیشنهاد یکدیگر را مشاهده کنند که منجر به اختلاف و تقلب می شود. با استفاده از قراردادهای هوشمند Solidity، مزایده کور را می توان در جایی طراحی کرد که کاربران تا زمانی که به پایان برسد نتوانند ببینند چه چیزی پیشنهاد داده است.
تامین مالی جمعی
تامین مالی جمعی که از طریق قراردادهای هوشمند انجام میشود، میتواند مسائلی مانند کمیسیون شخص ثالث و مدیریت دادهها را حل کند. قراردادهای هوشمند Solidity برای تامین مالی جمعی نیازی به سیستم های متمرکز برای ایجاد اعتماد ندارند و در نتیجه هزینه های اضافی را کاهش می دهند.
قراردادهای هوشمند با Solidity
Solidity یک زبان برنامه نویسی شی گرا و ایستا تایپ است که به توسعه دهندگان اجازه می دهد تا قراردادهای هوشمند ایجاد کنند. Solidity بر اساس زبانهای برنامهنویسی موجود مانند C++، Python و JavaScript طراحی شده است، بنابراین از ساختارهای زبانی مشابهی که در این زبانها یافت میشود، استفاده میکند که به احتمال زیاد این کار را برای توسعهدهندگان آسان میکند.
در اینجا نمونه ای از قرارداد هوشمند با Solidity آورده شده است:
pragma solidity ^0.8.7;
contract MyContract {
constructor() public{
value = "My value";
}
string public value;
function get() public view returns (string memory){
return value;
}
function set(string memory _value) public{
value = _value;
}
}
اگر یک توسعه دهنده جاوا اسکریپت یا سی پلاس پلاس هستید، این برای شما آشنا به نظر می رسد. Solidity که اولین زبان برنامه نویسی قرارداد هوشمند است، در بازار گسترده ای پذیرفته شده است و برای ساخت بسیاری از برنامه های غیرمتمرکز استفاده می شود. این برنامه برای نوشتن قراردادهای هوشمند بر روی اتریوم توسعه یافته است، و درست مانند جاوا و ماشین مجازی جاوا (JVM)، Solidity روی ماشین مجازی اتریوم (EVM) اجرا می شود.
مزایای برنامه نویسی قراردادهای هوشمند با Solidity
- Solidity یک جامعه بزرگ و در دسترس دارد. از آنجایی که Solidity اولین زبان برنامه نویسی قراردادهای هوشمند بود و صرفاً برای برنامه نویسی قراردادهای هوشمند در شبکه اتریوم توسعه یافته بود، پشتیبانی گسترده ای از جامعه را به دست آورده است و به توسعه دهندگان جدید کمک می کند در صورت گیرکردن، کمک دریافت کنند.
- Solidity کاملاً تورینگ است، بنابراین فقط به اجرای چند الگوریتم محدود نمی شود - می توان از آن برای محاسبه همه توابع قابل محاسبه استفاده کرد.
- Solidity مفاهیمی را ارائه می دهد که در اکثر زبان های برنامه نویسی مدرن موجود است. دارای توابع، دستکاری رشته ها، کلاس ها، متغیرها، عملیات حسابی و غیره است. علاوه بر این، Solidity از ساختارهای داده نگاشت، که به عنوان جداول هش عمل می کنند و از انواع جفت های کلید-مقدار تشکیل شده است، پشتیبانی می کند.
- اگر میدانید چگونه با زبانهای برنامهنویسی محبوب مانند پایتون، سی پلاس پلاس و جاوا اسکریپت برنامهنویسی کنید، Solidity منحنی یادگیری تند ندارد، زیرا بیشتر سینتکس آن از این زبانها به عاریت گرفته شده است.
معایب برنامه نویسی قراردادهای هوشمند با سالیدیتی
- Solidity یک زبان جدیدتر است و حتی اگر جامعه به توسعه کتابخانه و ابزارهای آن کمک کرده است، هنوز کارهای زیادی برای انجام دادن در این زبان وجود دارد که باید خودتان آن را به طور کامل پیاده سازی کنید.
نمونههایی از بلاک چینهایی که از Solidity استفاده میکنند عبارتند از:
- Tendermint،
- Binance Smart Chain
- Ethereum Classic
- Tron
- Avalanche
- CounterParty
- Hedera
سالیدیتی در بلاک چین
سالیدیتی که توسط مشارکت کنندگان اصلی پلتفرم بلاک چین اتریوم توسعه یافته است، برای طراحی و پیاده سازی قراردادهای هوشمند در ماشین مجازی اتریوم و دیگر پلتفرم های توسعه بلاک چین استفاده می شود.
بلاک چین یک شبکه همتا به همتا از کامپیوترها به نام گره است که تمام داده ها و کدهای موجود در شبکه را به اشتراک می گذارد. بنابراین، اگر شما یک دستگاه متصل به بلاک چین هستید، یک گره در شبکه هستید و با تمام گرههای کامپیوتری دیگر در شبکه صحبت میکنید.
برخلاف سایر زبانهای مبتنی بر ماشین مجازی اتریوم، Solidity شامل ویژگیهای زیر است:
- از وراثت های متعدد با خطی سازی C3 پشتیبانی می کند.
- پشتیبانی از اشیا یا متغیرهای حالت، انواع داده ها و بسیاری از توابع برنامه نویسی دیگر.
- متغیرهای عضو پیچیده برای قراردادهای حاوی ساختارها و نگاشت های سلسله مراتبی دلخواه.
- Application Binary Interface چندین عملکرد ایمن نوع را در یک قرارداد تسهیل می کند.
- بسیاری از پلتفرم های بلاک چین از جمله اتریوم، Tendermint، Ethereum Classic، Counterparty و ErisDB از Solidity پشتیبانی می کنند.
Solidity Development از انواع داده های زیر پشتیبانی می کند:
- String Literals: را می توان با گیومه های دوتایی یا تکی نشان داد.
- Integers: سالیدیتی می تواند هر دو دامنه اعداد صحیح بدون علامت و با علامت را پشتیبانی کند. به عنوان مثال، کلمات کلیدی مانند "uint256" را می توان برای تخصیص اندازه های 256 بیتی استفاده کرد و از استثناهای زمان اجرا نیز پشتیبانی می کند.
- Modifier: برای شناسایی سازگاری شرایط قبل از اجرای کد قرارداد هوشمند استفاده می شوند.
- Booleans: نوع داده Boolean مقدار "0" را به صورت false و "1" را به عنوان true، بسته به دقت یک شرط برمی گرداند. هنگام استفاده از عملگرهای منطقی، خروجی معمولاً به صورت یک مقدار Boolean تولید می شود.
علاوه بر این، Solidity برای تشکیل یک ساختار داده به نام « mappings»، enumها، عملگرها، آرایهها و مقادیر هش را ارائه میکند که برای برگرداندن مقادیر مرتبط با مکانهای ذخیرهسازی استفاده میشود. از آنجایی که نحو آن مانند هر زبان برنامه نویسی عمومی است، می تواند از آرایه های تک بعدی و چند بعدی پشتیبانی کند.
ابزارهایی که می توانند توسط توسعه دهندگان Solidity برای ساخت قراردادهای هوشمند مبتنی بر Solidity استفاده شوند:
- Solgraph: برای تولید یک نمودار DOT استفاده می شود که جریان کنترل تابع قرارداد Solidity را تجسم می کند و آسیب پذیری های امنیتی را بیان می کند.
- Solidity REPL: Solidity REPL برای نوشتن کدهای خط فرمان روی Solidity Console استفاده می شود.
- EVM Lab: این یک بسته ابزار غنی است که با قابلیت تعامل با ماشین مجازی اتریوم (EVM) همراه است. این شامل Etherchain API، trace-viewer و VM است.
- Evmdis: Evmdis مخفف EVM Disassembler است که می تواند تجزیه و تحلیل استاتیک را روی بایت کد انجام دهد تا سطح بالاتری از انتزاع را در مقایسه با عملیات EVM خام ارائه دهد.
آیا باید ++C را قبل از Solidity یاد بگیریم؟
اکثر برنامه نویسان حرفه ای امروزی از یک یا چند زبان برنامه نویسی محبوب مدرن استفاده می کنند. چند نمونه از این موارد عبارتند از C (و C++،#C، و غیره)، پایتون، جاوا (و جاوا اسکریپت)، پرل، یا چند مورد دیگر. Solidity به گونه ای طراحی شده است که برای برنامه نویسانی که قبلاً با یک یا چند زبان برنامه نویسی مدرن آشنا هستند، یادگیری آن آسان باشد.
اگر چیزی مانند ویژوال بیسیک را در دوران دبیرستان یاد گرفتید، ممکن است در انتخاب Solidity با مشکل مواجه شوید. در حالی که اگر زبانی مانند پایتون یا سی را بلد باشید، Solidity نسبتاً برایتان آشنا خواهد بود.
Solidity از تعداد زیادی مفاهیم برنامه نویسی استفاده می کند که در زبان های دیگر وجود دارد. برای مثال Solidity دارای متغیرها، توابع، کلاس ها، عملیات حسابی، دستکاری رشته ها و غیره است. در حالی که در زبانی مانند C، برنامه نویس احتمالاً نوعی از یک تابع "اصلی" مانند "int main(arg1, arg2) { //code } را ایجاد می کند، Solidity با یک "قرارداد" کار می کند که در یک روش مشابه ایجاد می شود.
همانطور که می بینید، کد Solidity به طور شگفت انگیزی شبیه به C++، سی شارپ یا JavaScript است. توسعه دهندگان پایتون متوجه خواهند شد که در Solidity، متغیرها باید نوع خود را در میان تفاوت های دیگر به صراحت اعلام کنند.
آموزش Solidity
به طور معمول، اگر کسی بخواهد یک زبان برنامه نویسی جدید یاد بگیرد، می تواند یکی از کتاب های متعدد موجود در این زمینه را بخرد. برای مثال، اگر میخواهید جاوا اسکریپت را یاد بگیرید، دهها یا صدها کتاب در دسترس هستند که میتوانند آموزشهای لازم را برای خود هدایت کنند. از آنجایی که Solidity هنوز کاملاً جدید است، تنها تعداد انگشت شماری کتاب آموزش Solidity در دسترس است.
Solidity اسناد بسیار گسترده ای را برای نحوه عملکرد کد ارائه می دهد. با این حال، برای کسی که کاملاً در این زبان تازه کار است، و قبلاً یک برنامه نویس حرفه ای نیست، غواصی مستقیم در مستندات می تواند بسیار دلهره آور باشد، اگر نه یک کار تقریباً غیرممکن برای اکثر افراد می باشد.
در حالت ایدهآل، اسناد باید بیشتر به عنوان مرجع استفاده شوند، به همان صورتی که از فرهنگ لغت برای جستجوی یک کلمه استفاده میشود. اما در تلاش برای یادگیری یک زبان گفتاری، فرهنگ لغت را نمی توان خواند.
اگر به یادگیری Solidity برای شغل خود فکر می کنید، ممکن است بخواهید مهارت های دیگری را نیز در نظر بگیرید. در حالی که یادگیری مهارت های مرتبط با بلاک چین می تواند بسیار ارزشمند باشد، احتمالاً باید ابتدا حداقل در یک زبان برنامه نویسی دیگر متخصص شود.