سالیدیتی چیست؟ منابع زبان برنامه نویسی solidity + کاربردها و ویژگی ها
فهرست مطالب
- زبان برنامه نویسی سالیدیتی چیست؟
- ویژگیهای زبان سالیدیتی؟
- چه کسانی Solidity را خلق کردند؟
- کاربردهای سالیدیتی
- مزایا و معایب زبان Solidity
- مزایا زبان برنامه نویسی سالیدیتی
- معایب زبان برنامه نویسی سالیدیتی
- نحوه کسب درآمد از زبان برنامه نویسی سالیدیتی
- انواع زبان برنامه نویسی بلاکچین
- یک دمو کوتاه از نحوه راه اندازی محیط زبان سالیدیتی و چگونگی تعریف یک قرارداد هوشمند
- منابعی برای یادگیری زبان Solidity
زبان برنامه نویسی سالیدیتی از انواع زبانهای شیءگرا است که به صورت اختصاصی توسط تیم توسعه اتریوم خلق شده است. هدف از تعریف زبان سالیدیتی، طراحی و ساخت قراردادهای هوشمند برای کاربرد در انواع مختلف پلتفرمهای بلاکچین است. شبیه همه زبانهای برنامه نویسی همرده خود، سالیدیتی شامل متغیرها، توابع، کلاسها، عملگرهای حسابی، رشتهها و بسیاری مفاهیم و عملکردهای دیگر است.
در حال حاضر، زبان برنامه نویسی سالیدیتی زبان اصلی اتریوم و بسیاری دیگر از بلاکچینهای خصوصی است. در دنیای وب3، سالیدیتی محبوبترین زبان برنامه نویسی است، هرچند تعداد زیادی از زبانها با ویژگیها و عملکردهای اختصاصی دیگر معرفی شدهاند.
اما آنچه در ابتدا به عنوان زبان تعریف قراردادهای هوشمند طراحی شده بود، اکنون پایه طراحی dAppهاست، اپلیکیشنهای غیرمتمرکز که اکوسیستم بلاکچین را از حالت محض مالی آن به حالتی کاربردی و نافذتر متحول ساختند.
در این مقاله به تاریخچه Solidity، ایده ریشهای و کاربردهای آن میپردازیم. همچنین، منابع مفیدی برای کار با زبان برنامه نویسی سالیدیتی معرفی میکنیم تا مسیر برای تازه کارها و دوستداران دنیای بلاکچین هموار شود. دو مقاله زیر کمک شایانی به فهم بهتر و تکمیلی مقاله خواهند کرد.
بهترین زبانهای بلاکچین کدامند؟
زبان برنامه نویسی سالیدیتی چیست؟
زبان برنامه نویسی سالیدیتی در سال 2014 به دنیای برنامه نویسی معرفی شد. این زبان از انواع شیءگرا و سطح بالا است که برای اجرای قراردادهای هوشمند در بستر ماشین مجازی اتریوم (Ethereum Virtual Machine) طراحی شده است. الهام بخش Solidity، زبانهای قدرتمندی چون C++ و JavaScript هستند.
برای کسانی که در دنیای توسعه اپلیکیشنهای Web3 فعالیت دارند، این زبان انتخاب اول است. به یاد داشته باشید که بسیاری از اپلیکیشنهای غیرمتمرکز در بلاکچینِ منبع باز و غیرمتمرکز اتریوم تعریف شدهاند. بنابراین، حتی اگر یک پلتفرم با زبان برنامه نویسی دیگری هدف شما باشد، آشنایی با زبان اختصاصی اتریوم نه یک گزینه اختیاری، بلکه یک ضرورت برای تعامل با این بلاکچین و ماهیتهای نشأت گرفته از آن است.
پیشنهاد PCrypto: وب 3 چیست؟
زبان برنامه نویسی سالیدیتی این امکان را فراهم میکند که قراردادهای هوشمندی بسازید که در آن قواعد منطقی مرتبط با هر کسبوکار در کنار ایجاد زنجیرههای ثبت تراکنشها در سیستم بلاکچین اجرا شوند؛ به عبارتی، یک سیستم مالی در کنار یک سیستم خدماتی و در قالی یک اپلیکیشن برای شما ایجاد میکند.
ویژگیهای زبان سالیدیتی؟
ازجمله ویژگیهای شاخص Solidity میتوان به موارد زیر اشاره کرد:
- امکان تعریف متغیرهای پیچیدهای چون نگاشتها و ساختارهای سلسله مراتبی دلخواه برای قراردادهای متنوع
- پشتیبانی از قواعد وراثت، ازجمله وراثتهای متعدد با خطی سازی C3
- داشتن یک رابط باینری اپلیکیشن (ABI) برای تسهیل روند ایمن سازی چندگانه در قراردادها
- یک سیستم مستندسازی، مشخصات زبان طبیعی، برای تشخیص نوع توصیف و برداشت کاربر از پیامدهای فراخوانی
- پشتیبانی از متغیرهای حالت یا اشیاء، انواع دادهها و سایر توابع و ماهیتهای برنامه نویسی
چه کسانی Solidity را خلق کردند؟
قراردادهای هوشمند بطن اتریوم را تشکیل میدادند، آنها کدهای قابل اجرایی بودند که در سراسر شبکه توزیع میشدند و امکان مشارکت جمعی و تعریف اپلیکیشنهای پلتفرم را ممکن میساختند. طراحی اولیه زبان Solidity برگرفته از ایده Gavin Wood هم موسس و CTO اتریوم بود. وود با شروع از زبانهای شیءگرا دیگر مانند C++، به دنبال یک چهارچوب برای تسهیل شیوه طراحی قراردادهای درون اتریوم بود.
ایده وود در ادامه مورد موافقت تیم اتریوم قرار گرفت و پروژهای با رهبری Christian Reitwiessner برای توسعه این زبان تعریف شد. در ادامه، زبان سطح بالای قراردادهای هوشمند اتریوم تعریف شد، زبانی که فارغ از قدرت محاسباتی و نوع دستگاههای مجری آن، میتوانست در سراسر یک پلتفرم توزیع شده و توسط همه اعضاء آن به کار گرفته شود.
ویرایش عمومی آن برای اولین بار در نوامبر 2014 و بر روی صفحه یوتیوب اتریوم یعنی Devcon0 ارائه شد. الگوریتم و ساختارهای آن در ادامه و در 9 جولای 2015 کد شدند تا Solidity Version0.0.1. به دنیای بلاکچین معرفی گردد. داستان 5 سال اول معرفی و عملکرد زبان برنامه نویسی سالیدیتی را میتوانید از زبان طراحان آن و از طریق این لینک بخوانید.
کاربردهای سالیدیتی
زبان سالیدیتی به صورت اختصاصی برای ایجاد قراردادهای هوشمند تعریف شده است. درواقع کاربردهای سالیدیتی در پس کاربرد قراردادهای هوشمند در پلتفرمهای مختلف بلاکچین قرار دارد. هر کجا که یک قرارداد هوشمند تسهیلی ایجاد میکند، فعالیتی را به ثمر میرساند، یک روند را خودکار میکند و …، کاربردهای سالیدیتی را بالفعل کرده است.
با این توصیف، کاربردهای زبان برنامه نویسی سالیدیتی را میتوان در قالب چند مثال زیر بیشتر توضیح داد:
- رأی گیری: مهمترین فعالیت در یک پلتفرم مبتنی بر فناوری بلاکچین، رأی گیری برای انجام انواع فعالیتهای اصلی در شبکه است. از ساخت بلوکهای جدید تا درج اطلاعات تراکنشها یا تغییر قوانین اصلی پتلفرم در قالب رأی گیری و با استفاده از قراردادهای هوشمند ممکن میشود.
- حراجی یا مزایده کالاهای دیجیتال: انواع محصولات مانند توکنهای غیرقابل معاوضه یا NFT را میتوان بدون نیاز به هیچ احراز هوئیت و به صورتی کاملا منصفانه به مزایده گذاشت. به ویژه، از نقطه بارگذاری محصول برای فروش تا واگذاری و ثبت آن، به صورت یک کد و در چهارچوب یک قرارداد هوشمند سالیدیتی انجام میگیرد. (ان اف تی چیست را مطالعه کنید.)
- ایجاد استخرهای نقدینگی: نقدینگی مهمترین عنصر برای بازارهای مالی و بخصوص انواع ارز دیجیتال است. با استفاده از قراردادهای هوشمند میتوان فرایندهای مشارکت در این استخرها را تعریف کرد. پس از ایجاد استخرهای نقدینگی ارز دیجیتال، خدمات دیگری مانند وام دادن، اعتبار بخشیدن به فعالیتهای پلتفرم و غیره ممکن میگردد.
پیشنهاد مطالعه : استخر نقدینگی چیست؟
مزایا و معایب زبان Solidity
شبیه هر زبان برنامه نویسی یا چهارچوب دیجیتالی دیگر، زبان سالیدیتی مزایا و معایب خاص خود را دارد که در ادامه به برخی از مهمترین آنها اشاره میکنیم.
مزایا زبان برنامه نویسی سالیدیتی
- ایجاد الگوهای کدنویسی پایدار و منعطف، مختص قراردادهای هوشمند
- کاربر پسند بودن زبان سالیدیتی
- خطای پایین و اطمینان بالا؛ Solidity یک چهارچوب امن، قابل اعتماد و دقیق برای منابع مختلف و مبتنی بر قراردادهای هوشمند بین طرفین قرارداد ایجاد میکند
- استفاده از رابط باینر برنامه یا ABI: کاهش میزان خطاهای تایپی و عدم نیاز به دباگ زمانبر
معایب زبان برنامه نویسی سالیدیتی
- به محض ایجاد قرارداد هوشمند، دیگر نمیتوان تغییری در آن ایجاد کرد؛ حتی ویژگیهای جدید را نیز نمیتوان به قراردادهای از قبل تعریف شده اضافه کرد
- در بعضی قراردادهای پیچیده، اصول موضوعه و کدینگ لازم برای تعریف تمام قواعد وجود ندارد
- ناکارآمدی متناظر با نبود اسناد متمرکز و مرتبط با آسیبهای شناخته شده
نحوه کسب درآمد از زبان برنامه نویسی سالیدیتی
عبارت کسب درآمد از طریق زبان برنامه نویسی سالیدیتی به مشارکت شما به عنوان یک توسعه دهنده در اپلیکیشنهای غیرمتمرکز یا ایجاد و توسعه بلاکچین اشاره دارد. بخصوص، کسانی که به ساخت اپلیکیشن و بخصوص انواع مبتنی بر فناوری بلاکچین علاقه دارند، میتوانند با یادگیری این زبان دوره جدیدی در زندگی حرفهای خود را آغاز کنند.
به محض اینکه قدرت کدنویسی قراردادهای هوشمند را به دست آورید، مسیر برای مشارکت در ساخت یا خلق اپلیکیشنهای غیرمتمرکز برای شما باز میشود. در پلتفرمهای بلاکچین، توسعه دهندگان نبض فعالیتها را تشکیل میدهند و بابت این مشارکت خود سهمی از توکنها یا درآمدهای پلتفرم را دریافت میکنند.
توجه داشته باشید که بهترین شیوه کسب درآمد از طریق زبان برنامه نویسی سالیدیتی، استخدام شدن به عنوان توسعه دهنده یک شرکت و یک پروژه سرشناس است. با این حال، شما میتوانید در برخی پلتفرمها به عنوان فریلنسر، پروژههای کدنویسی آنها را بپذیرید.
پیشنهاد مطالعه : هاوینگ بیت کوین و تاثیر آن بر بازار کریپتو
انواع زبان برنامه نویسی بلاکچین
مطمئنا Solidity تنها زبان برنامه نویسی در دنیای بلاکچین نیست. انواع زبان برنامه نویسی بلاکچین وجود دارند که سالها قبل از زبان برنامه نویسی سالیدیتی ابداع و به کار گرفته شدهاند. اکثر این زبانها ویژگیهای مشترکی را از یکدیگر به ارث بردهاند و یا برگرفته از یک زبان کهن برنامه نویسی و تعمیم یافته به بلاکچین هستند.
در ادامه چند زبان برنامه نویسی بلاکچین دیگر را معرفی، مزایا و معایب آنها را عنوان میکنیم.
Python
برای کسانی که به تازگی وارد دنیای برنامه نویسی و بخصوص برنامه نویسی برای بلاکچین شدهاند، پایتون بهترین گزینه است. پایتون را در انواع مختلف پلتفرمها میتوانید به صورت رایگان یاد بگیرید و صدها کتابخانه، تابع و شبه کدهای آماده آن را در پروژههای خود به کارگیرید.
مزایا
- در پایتون دستورات به صورت خط به خط اجرا میشوند، بنابراین تشخیص خطا و برطرف کردن آن آسانتر است
- پایتون یک برنامه شیءگرا است و به برنامهنویس اجازه میدهد وقت بیشتری را صرف کد اختصاصی خود کند و کمتر نگران درک کتابخانهها و جزئیات خود زبان باشد
- تقریبا درباره هر موضوع و رشته کلی یک کتابخانه رایگان وجود دارد
- استفاده از پایتون شبیه حرف زدن به زبان انگلیسی است وقتی مخاطب کامپیوتر است
معایب
- در پردازشگرهای گوشی همراه عملکرد خوبی ندارد
- تعداد خطاهای تولیدی آن بیشتر از انواع دیگر مانند زبان برنامه نویسی سالیدیتی است
- در زمان اجرای یک کد حجم بالایی از حافظه را درگیر میکند
C++
یک جایگزین دیگر برای زبان سالیدیتی، زبان نام آشنای C++ است. این زبان سالها قبل از زبان برنامه نویسی سالیدیتی و در اواسط سال 1985 طراحی شده است. این زبان عملکرد فوق العاده خوبی در تناظر با کلان داده دارد و برای شبکههای بزرگ بسیار بهینه است.
مزایا
- شبیه زبان برنامه نویسی سالیدیتی، C++ نیز شیءگرا است
- سطح بالاتری از امنیت را برای دادههای کاربر به ارمغان میآورد
- کاربرپسند است و جامعه توسعهدهندگان از کار با آن لذت میبرند
- فوق العاده سریع، همهگیر و پرقدرت است
معایب
- از رویکرد تخصیص پویای حافظه پشتیبانی نمیکند
- با افزایش اندازه کد، میزان پیچیدگی کد نیز ارتقاء مییابد
- بیشتر برای اپلیکیشنهای پلتفرمی به کار گرفته میشود
Java
جاوا یکی از قدرتمندترین و پرکاربرترین زبانهای برنامه نویسی است که در سال 1995 توسط James Gosling معرفی گردید. جاوا زبان برنامه نویسی بلاکچین و مورد استفاده در پلتفرمهایی چون اتریوم، Hyperledger، IOTA، NEO و انواع دیگر است.
مزایا
- یکبار کد خود را در جاوا بنویسید، هرکجا که نیاز باشد اجرا کنید: جاوا پلتفرم محور و محدود به پلتفرم مرجع نیست
- سطح امنیتی فوق العاده بالایی دارد، حتی بیشتر از C++، شما حتی میتوانید برای کلاسهای مختلف قوانین اختصاصی تعریف کنید
- استفاده بهینهای از CPU میکند، زیرا همزمان میتوان چند رشته کد مجزا را اجرا کرد
معایب
- به میزان حافظه بسیار بیشتری نیاز دارد
- نسبت به زبان بومی خود یعنی C++، به مراتب کندتر است
- هیچ امکانی برای پشتیبان گیری فراهم نمیکند
یک دمو کوتاه از نحوه راه اندازی محیط زبان سالیدیتی و چگونگی تعریف یک قرارداد هوشمند
در این بخش به طور خلاصه و آیتم وار، نحوه تعامل با محیط برنامه نویسی Solidity و بندهای مختلف از یک کد متناظر با قرارداد هوشمند را توضیح میدهیم.
در اولین گام باید Node.js را بر روی سیستم خود نصب کنید. پس از نصب این برنامه، با دستور زیر میتوانید کامپایلر Solidity را نصب کنید:
Npm install -g solc
پس از طی کردن مراحل نصب سالیدیتی بر روی سیستم خود، میتوانید سفر پر هیجان خود در دنیای قراردادهای هوشمند را آغاز کنید. در زیر شبه کدی از یک قرارداد هوشمند را ارائه کردهایم
هر کدام از این خطوط یک مفهوم و عملکرد خاص دارد که در زیر به آنها پرداختهایم:
- خط یک: یک Pragma تعریف شده است. یک Pragma به کامپایلر میگوید که کدام ویرایش از Solidity قرار است در ادامه اجرا شود. در اینجا ویرایش 5.0 از این زبان مدنظر است. توجه کنید که با این انتخاب، امکان استفاده از قابلیتهای موجود در ویرایشهای جدیدتر و بعد از 5 وجود نخواهد داشت.
- خط 3: در این خط یک قرارداد هوشمند به وجود آوردهایم. منظور از Contract مجموعهای از توابع و دادهها است که بر طبق اصولی از پیش تعریف شده قرار است یک فرایند را شروع و به پایان برسانند.
- خط 4: یک متغیر message از نوع bytes32 تعریف شده است. این متغیر قرار است یک وضعیت خاص را تعریف کند.
- خط 5: یک سازنده یا Constructor برای قرارداد تعیین شده است.
- خط 8: از تابع getMessage() برای برگرداندن وضعیت (message) استفاده شده است.
این قطعه از برنامه، یک دمو بسیار کوتاه و چهارچوب اولیه برای قرارداد هوشمند است؛ شبیه برنامه اولیه و کوتاه Hello World در زبانهایی چون پایتون.
منابعی برای یادگیری زبان Solidity
در این بخش به صورت بسیار خلاصه و تیتروار مسیر یادگیری این زبان برنامه نویسی را معرفی میکنیم. فراموش نکنید، هر کدام از این منابع معرفی شده، تنها به مبانی و باید و نبایدهای این زبان میپردازند، آنچه شما را غرق در یادگیری Solidity میکند، کد نوشتن است.
- در اولین گام، سراغ یوتیوب بروید و دورههای آن را بررسی کنید؛ این دورههای رایگان هستند و حداقل شما را با محیط Solidity و واقعیات پیرامون آن آشنا میکنند
- پلتفرمهای رایگان مانند CryptoZambies را دنبال و از دورههای رایگان آن استفاده کنید. Coursera و Linkedin دورههای مشابه، گاها پولی، را ارائه میدهند.
- کتاب بخوانید
Mstering Blockchain
Blockchain Basics
Ethereum Smart Contract Development
Building Ethereum DApps - کد نویسی کنید: درنهایت، بهترین شیوه در یادگیری یک زبان برنامه نویسی، استفاده روزمره از محیط آن و کد نویسی پیوسته است
جمعبندی
در این مقاله به تعریف زبان سالیدیتی پرداختیم، آن را با زبانهای شاخص دیگر مقایسه کردیم و مثالی ساده از چگونگی راهاندازی و نوشتن یک قرارداد هوشمند ارائه دادیم. اما این تنها ذرهای از دریایی است که در پس این زبان برنامه نویسی وجود دارد. به بلاکچین و پتانسیل آن بنگرید، حال پتانسیل زبانی را درک کنید که به بلاکچین زندگی میبخشد.
برای یادگیری زبان برنامه نویسی سالیدیتی تنها چند خط تئوری درباره تاریخچه و عملکرد آن کافی نیست؛ بلکه به ساعتها زمان، کدنویسیهای هدفمند، دباگ کردن و … نیاز دارید تا این زبان را بهتر درک کنید و به یک توسعه دهنده بلاکچین بدل شوید.
فراموش نکنید که دنیای دیجیتال به سمت غیرمتمرکز شدن میرود و در کانون این هدف بلاکچینها قرار دارند؛ پایگاه دادههایی که مشارکت جمعی را به شیوهای توزیع شده تعریف میکنند و امکان خلق اتمسفرها، اپلیکیشنها، رمزارزها و بسیاری ماهیت مجازی دیگر را فراهم میکنند. بنابراین، اگر بلاکچین آینده دیجیتال جهان باشد، زبان سالیدیتی اکنون و آینده بلاکچین است.
سوالات متداول
زبان برنامه نویسی سالیدیتی بر اساس چه زبانهای برنامه نویسی دیگری طراحی شده است؟
زبان Solidity بیشترین تأثیر را از زبانهای C++، Python و JavaScript گرفته است.
آیا زبان برنامه نویسی سالیدیتی شبیه به جاوا است؟
جاوا و زبان برنامه نویسی سالیدیتی دو زبان برنامه نویسی با بالاترین محبوبیت در میان توسعه دهندگان بلاکچین و قراردادهای هوشمند هستند. Solidity را تیم اتریوم به وجود آوردند، اما Java یک زبان با گستره عملیاتی بیشتر است که سالها پیش طراحی شده و کاربردهای گستردهتری دارد.
آیا Solidity ارزش یادگیری دارد؟
اگر در حوزه تولید اپلیکیشنهای غیرمتمرکز و به طور کلی Web3 فعالیت دارید، حتما یادگیری Solidity برای شما ارزشمند خواهد بود. با این حال، زبان برنامه نویسی سالیدیتی در حال حاضر محدود به Web3 است و شما گزینههای زیادی خارج از این چهارچوب ندارید. بنابراین، دقیقا مشخص کنید که هدف شما از یادگیری این زبان برنامه نویسی چیست، بازار آن را بسنجید و بعد اقدام به یادگیری کنید.
آیا باید ابتدا پایتون را یاد گرفت بعد زبان برنامه نویسی سالیدیتی؟
اگر بخواهیم نگاهی فنی به موضوع توسعه اپلیکیشن در Web3 داشته باشیم، باید عنوان کنیم که بهترین گزینه برای ورود به دنیای برنامه نویسی Solidity، شروع با پایتون یا Javascript و بعد Solidity است. اگرچه ممکن است این رویکرد زمانبر باشد، اما در بلندمدت مطمئنا به نفع شما و آینده شغل برنامه نویسی شما خواهد بود.
درآمد یک برنامه نویس Solidity چقدر است؟
در کشورهایی که فعالیت قابل توجهی در زمینه توسعه اپلیکیشنهای غیرمتمرکز و پلتفرمهای بلاکچین دارند، زبان سالیدیتی تقاضای بسیار بالایی دارد. برای مثال، در کشور آمریکا درآمد سالانه یک Coder با تخصص این زبان در حدود 130 هزار تا 220 هزار دلار است. بسته به میزان تجربه و تخصص شما، نوع شرکت و اندازه آن، و بخصوص کشوری که قرار است در آن کار کنید، این اعداد متمایز خواهند بود.
درباره نویسنده
وریا وکیلی
ثبت نظر جدید