سالیدیتی (Solidity) زبانی برای توسعه قراردادهای هوشمند، به گزارش ریبیز Reybiz ،زبان سالیدیتی (Solidity) از زمانی که برای اولین بار در اوایل سال ۲۰۱۴ ارائه شد و سپس توسط تیم اتریوم توسعه یافت مسیر طولانیای را طی کرده است. صدها هزار توسعهدهنده وجود دارند که از این زبان برنامه نویسی برای ایجاد برنامههای کابردی مبتنی بر بلاک چین استفاده میکنند. این مقاله به بررسی زبان سالیدیتی (Solidity) در اکوسیستم اتریوم میپردازد. اگر علاقهمند هستید تا با شیوه کار این زبان برنامهنویسی مبتنی بر بلاک چین و کاربرد آن در توسعه قراردادهای هوشمند بیشتر آگاه شوید، این مقاله مناسب شماست.
سالیدیتی (Solidity) زبانی برای توسعه قراردادهای هوشمند
زبان سالیدیتی (Solidity) چیست؟
سالیدیتی (Solidity) یک زبان برنامه نویسی شیگرا (OOP) و سطح بالا است که از آن برای ایجاد قراردادهای هوشمندی که تراکنشها را روی بلاک چین خودکار می کنند استفاده میشود. این زبان پس از انتشار در سال ۲۰۱۴، توسط بنیانگذاران و برنامهنویسان پروژه اتریوم توسعه یافت. در ابتدا از زبان سالیدیتی برای ایجاد قراردادهای هوشمند در بلاک چین اتریوم استفاده شد و سپس بلاک چینهای دیگری شروع به استفاده از آن کردند.
سالیدیتی بسیار شبیه یکی از محبوبترین زبانهای برنامه نویسی یعنی جاوا اسکریپت است. میتوان آن را مانند گویشی از زبان جاوا اسکریپت تشبیه کرد. به زبان ساده اگر با جاوا اسکریپت آشنا هستید، می توانید از سالیدیتی نیز به راحتی استفاده کنید. همچنین، Solidity مشخصههای مشترکی با زبانهای برنامه نویسی پایتون و C++ دارد و به عنوان یک زبان سطح بالا، نیاز به کدنویسی به صورت یک و صفر را برطرف می کند.
بیشتر بخوانید: دوره رایگان تحلیل تکنیکال
نوشتن برنامهها با استفاده از ترکیبی از حروف و اعداد و به روشهایی که درک آنها سادهتر است، کار را برای انسانها بسیار آسان میکند. سالیدیتی یک زبان برنامهنویسی استاتیک تایپ است که از وراثت، کتابخانهها و انواع توابع پیچیده تعریف شده توسط کاربر پشتیبانی میکند. با این که Solidity استاتیک تایپ است اما کاربر میتواند هر متغیر را بسیار دقیق مشخص کند. نوع داده به کامپایلر اجازه میدهد تا استفاده صحیح از متغییرها را بررسی کند.
دادههای سالیدیتی معمولا به عنوان متغیرهای مقداری (Value Type) یا متغیرهای مرجع (Reference Type) طبقهبندی میشوند. تفاوت اصلی بین متغیرهای مقداری و متغیرهای مرجع را میتوان در نحوه تخصیص آنها به یک متغیر و شکل ذخیره آنها در ماشین مجازی اتریوم (EVM) یافت. در حالی که تغییر مقدار در یک متغیر بر مقدار متغیر دیگر تأثیر نمیگذارد، هر کسی که به مقادیر تغییر یافته در متغیرهای نوع مرجع اشاره می کند ممکن است مقادیر بهروزشده را دریافت کند.
سالیدیتی چگونه کار می کند؟
زیبایی اکوسیستم اتریوم این است که ارزهای دیجیتال و برنامههای غیرمتمرکز مختلفی میتوانند از آن استفاده کنند. قراردادهای هوشمند (Smart Contracts) برای انواع کسبوکارها و سازمانها امکان ساخت فناوری های منحصربهفرد بر روی بلاک چین اتریوم را فراهم می کند. هر سال جهان، میلیاردها دلار برای طراحی و توسعه راهحلهای بلاک چین خرج میکند و بسیاری از این راه حلها با استفاده از زبان سالیدیتی ایجاد میشوند.
قراردادهای هوشمند ساخته شده با استفاده از سالیدیتی را میتوان راهی برای خودکارسازی فرآیندهای تجاری و غیرتجاری بین افراد مختلف در نظر گرفت. این زبان برنامهنویسی تضمین میکند که خطراتی مانند تقلب یا مشکل دوبار خرج کردن در انجام تراکنهای ارز دیجیتال رخ ندهد. ماشین مجازی اتریوم (EVM) یکی از اجزای کلیدی است که اجرای کدهای Solidity را ممکن می کند. EVM یک رایانه مجازی روی بلاک چین است کدهایی برنامههای کاربردی را اجرا میکند.
در پشت پرده، سالیدیتی کدی در سطح ماشین ایجاد می کند که روی ماشین مجازی اتریوم اجرا می شود. یک کامپایلر برای شکستن کدهای سطح بالا استفاده میشود که به دستورالعمل هایی که پردازنده پردازش میکند تبدیل میشود. پلتفرمهای مختلف کامپایلر سالیدیتی را به صورت رایگان ارائه میکنند. از جمله کامپایلر آنلاین رمیکس (Remix) و یک کامپایلر شبیه به خط فرمان در رایانههای شخصی.
البته قراردادهای هوشمندی که روی EVM اجرا میشوند، محدودیتهایی دارند که باید برطرف شوند. یکی از مهمترین آنها دسترسی محدود به توابع مورد نیاز کتابخانهها برای تجزیه ساختارهای JSON یا محاسبات شناور است. توابع عمومی، مشابه APIهایی هستند که هر کسی در جهان ممکن است به آنها دسترسی داشته باشد. هر کسی می تواند آنها را در کد خود فراخوانی کند. توابع عمومی در بسیاری از موارد برای اجرای فرآیندهای مشترک در یک پلتفرم طراحی شدهاند که همه کاربران از آن استفاده میکنند.
به عنوان مثال
یک تابع عمومی میتواند ایجاد شود تا به همه کاربران یک پلتفرم اجازه دهد تا مانده حساب خود را بررسی کنند. یکی از رایجترین راههای بهرهبرداری از قراردادهای هوشمند، توابع عمومی است. در حالی که نوشتن قراردادهای هوشمند با زبان سالیدیتی آسان است، برقراری امنیت آنها اغلب کاری بسیار دشوار خواهد بود. برای مثال، اگر تابع برداشت در یک قرارداد هوشمند ایمن نباشد، مهاجم میتواند تابع آسیبپذیر را دستکاری کند تا داراییهای حساب را خالی کند.
مهاجم میتواند با استفاده از حلقهای که تابع برداشت را به طور مکرر تکرار میکند، از یک تابع برداشت برای ارسال پول به حساب دیگری استفاده کند. توابع خصوصی فقط از داخل قراردادها قابل فراخوانی هستند. آنها حاوی دستورالعملهایی هستند که تنها پس از فراخوانی توسط توابع دیگر، به صورت زنجیرهای قابل اجرا هستند. این کار دستکاری کد توسط عوامل مخرب را دشوارتر میکند.
استانداردها و منطق کدنویسی
استانداردهای مختلفی در حال ظهور هستند که تعیین میکنند چگونه از قراردادهای هوشمند سالیدیتی برای ساخت برنامههای کاربردی در بلاک چین اتریوم استفاده شود. این استانداردهای توکن با نام ERC یا Ethereum Request for Comments شناخته میشوند. استانداردها بر اساس اسنادی که حاوی دستورالعملهایی در مورد توابع مورد نیاز و محدودیتهایی در مورد نحوه رفتار کد است طراحی میشوند. استانداردهای ERC که متخص به شبکه اتریوم هستند که نحوه عملکرد زبان سالیدیتی را تعیین می کنند عبارتند از:
ERC20
ERC165
ERC721
ERC223
ERC621
ERC777
ERC827
ERC884
ERC865
ERC1155
روش های مختلفی وجود دارد که میتوان از آنها برای ایجاد تعامل قراردادهای هوشمند با یکدیگر استفاده کرد. زبان سالیدیتی میتواند برای ایجاد دستورالعمل های اختصاصی در مورد نحوه ذخیره داده ها در قرارداد هوشمند استفاده شود. منطق و دادهها در قراردادهای هوشمند را میتوان با استفاده از این زبان برنامهنویسی از هم جدا کرد. با استفاده از قراردادهای جایگزین، منطق یک قرارداد را میتوان تغییر داد تا امکان این جداسازی را فراهم کند.
تغییرناپذیری
تغییر کد قرارداد هوشمند پس از نوشتن و کامپایل غیرممکن است. این به این معنی است که هر خط کد باید طبق برنامه کار کند در غیر این صورت ممکن است خطرات جدی سوء استفاده از کد وجود داشته باشد. از آنجایی که بلاک چین اتریوم تغییرناپذیر است، تغییر داده ها و منطق نوشته شده روی آن غیرممکن است. راه دور زدن این موضوع، استفاده از یک پروکسی برای اشاره به قرارداد دیگری است که حاوی منطق تجاری واقعی است. این اجازه میدهد تا در حالی که نسخه جدیدی از قرارداد اجرا میشود، باگها رفع شوند.
هزینه گس
بهینه سازی گس به کاهش هزینه آن در هنگام اجرای کدهای سالیدیتی کمک میکند. برخی از محبوبترین روشهای بهینهسازی هزینه گس شامل استفاده از کتابخانه ها و استفاده از توابع کمتر است. کتابخانه ها اغلب برای ذخیره بایت کد استفاده می شوند.به جای اضافه کردن بایت کد غیر ضروری به قرارداد هوشمند، منطق را میتوان در کتابخانه ها قرار داد. این به کوچک نگه داشتن اندازه قرارداد هوشمند کمک میکند. با استفاده از توابع کمتر، بایت کد کمتری مورد نیاز است و دشواری بررسی کد نیز کاهش مییابد.
ویژگی های زبان برنامه نویسی سالیدیتی
۱-اصلاح کننده(FUNCTION MODIFIRE)
یک تابع زمانی که شرط آن برقرار شد شروع به اجرا می کند. اما اگر بخواهید در بین هزاران کد، شرط یک تابع را تغییر دهید، ویژگی اصلاح کننده می تواند به راحتی شرط تابع را برای شما تغییر دهد تا به واسطه این تغییر، رفتار تابع نیز تغییر کند.
۲-داده ی ایستا
در زبان برنامه نویسی سالیدیتی، نوع داده ها ایستا می باشد. بدین معنا که اگر شما یک متغیر در بین کدها تعریف کنید باید حتما قبل از آن نوع متغیر را تعیین کنید. در غیر این صورت در زمان اجرای کدها با خطا مواجه می شوید.
۳_رویداد(EVENT)
اگر بخواهید اطلاعات مربوط به قراردادهای هوشمند را روی لاگ های بلاک چین ذخیره کنید، می توانید از ویژگی رویداد استفاده کنید. رویداد نوعی تابع است و عملکردی مشابه با آن دارد.
۴_سطح دسترسی
در هر زبان برنامه نویسی بر اساس نوع کاربر، سطح دسترسی وجود دارد. برای مثال تیم توسعه دهنده می بایست به همه چی دسترسی داشته باشد. اما کاربران شبکه لزومی ندارد به همه چی دسترسی داشته باشند. با استفاده از ویژگی سطح دسترسی در زبان سالیدیتی می توان سطح های دسترسی تعریف کرد. مانند سطح دسترسی MORTAL و OWNED.
از دیگر ویژگی های زبان سالیدیتی می توان به: آرایه های داخل حافظه، کتابخانه و امکان ایمپورت کردن، اشاره کرد.
چگونه زبان Solidity در اتریوم استفاده میشود؟
از زبان برنامهنویسی سالیدیتی برای ایجاد قراردادهای هوشمند برای ساخت و انتشار توکنهای مثلی و توکنهای غیرمثلی (NFT) استفاده میشود. استانداردهای مختلفی برای ساخت این توکنهادر اکوسیستم اتریوم استفاده میشود. این موارد اجازه میدهد تا انواع مختلفی از شرایط استفاده برای افرادی که از بلاک چین استفاده میکنند ایجاد شود. سالیدیتی افراد را قادر میسازد تا از توکنهای مثلی و غیرمثلی روی بلاک چین اتریوم استفاده کنند. از ضرب NFTهای گرفته تا افزودن آنها به استخرهای فارمینگ برای بهرهمندی بیشتر، انواع مختلفی از استفاده از توکنها توسط اتریوم امکانپذیر است.
امکان ایجاد سازمانهای مستقل غیرمتمرکز (DAO) نیز توسط Solidity امکانپذیر شدهاند. دائو نوع جدیدی از ساختار سازمانی آنلاین است که در توسط زبان Solidity نوشته شده است. دائو به افراد مختلف اجازه می دهد تا به عنوان اعضای یک پلتفرم آنلاین گرد هم آیند و در آنجا به تصمیمات کلیدی رأی دهند. همچنین، امکان خودکارسازی فرآیندهای درون این سازمان را فراهم میکند. نمونههایی از اتوماسیون فرآیند در دائو شامل اخذ رأی برای تصمیمات کلیدی و تخصیص اعتبار به اعضای برای مشارکت آنها در گروه است.
آیا سالیدیتی ارزش یادگیری دارد؟
اگر به دنبال یادگیری سالیدیتی برای شغل خود هستید، پیش از یادگیری باید بدانید به چه مهارتهای دیگری نیاز دارید. بااینکه یاد گرفتن مهارتهای مربوط به بلاک چین بسیار ارزشمند است، احتمالا لازم باشد کسی که میخواهد به این حوزه وارد شود به یکی از زبانهای برنامهنویسی تسلط کامل داشته باشد. مثلا در یک آگهی شغلی در این زمینه عنوان شده است کسی را میخواهند که نهتنها با سالیدتی، بلکه به زباهای ترافل، نودجیاس و گولنگ هم آشنا باشد.
اگر حاضرید سالها وقت خود را صرف یادگیری سالیدیتی کنید، میتوانید امیدوار باشید که در سالهای آینده به شغلی مناسب نیز دست یابید.
در کنار سالیدیتی زبان برنامهنویسی دیگری با عنوان «سرپنت» (Serpent) نیز وجود دارد که بر پایه پایتون ساختهشده است. از آنجایی که پایتون زبانی ساده برای یادگیری است، اگر به دنبال چنین زبانی برای ایجاد قراردادهای هوشمند دارید میتوانید از سرپنت استفاده کنید. این مسئله را نیز به یاد داشته باشید که کدهای نگارش شده بهوسیله سالیدیتی و سرپنت را میتوانید بهراحتی برای اتریوم کلاسیک و RSK و دیگر پلتفرمهای قراردادهای هوشمند نیز ترجمه کنید.
در حال حاضر سالیدیتی پادشاه زبانهای برنامهنویسی مرتبط با قراردادهای هوشمند است و یادگیری آن میتواند به یادگیری دیگر زبانهای قراردادهای هوشمند نیز کمک کند.
تعریف استانداردهای بلاک چین
سالیدیتی خیلی بیشتر از یک زبان برنامهنویسی است و در حال تعیین استانداردهایی برای آینده فناوری بلاک چین است. به لطف تعدد توسعه دهندگان اوپن سورس که برای بهبود امنیت و عملکرد Solidity کار میکنند، هزاران برنامه در اکوسیستم اتریوم همچنان برای عملکرد برنامههای خود به این زبان برنامه نویسی وابسته هستند. با ایجاد استانداردهای جدید برای قراردادهای هوشمند در اتریوم، استفاده از این زبان امنتر خواهد شد. شما همراهان عزیز ارزتودی میتوانید دیدگاه وسوالات خودتان در مورد زبان برنامه نویسی Solidity را با ما در قسمت نظرات در میان بگذارید.
گفتار پایانی
با استفاده از زبان برنامهنویسی سالیدیتی، قراردادهای هوشمند در شبکه اتریوم نوشته میشوند. این زبان در دنیای بلاکچین از اهمیت زیادی برخوردار است و به دلیل یادگیری آسان و داشتن مزایای زیاد، به یکی از محبوبترین زبانهای برنامهنویسی بلاکچین تبدیل شده است.
اگر شما قصد دارید که از طریق برنامهنویسی بلاکچین کسب درآمد کنید، یادگیری زبان سالیدیتی اولین گام برای شروع خواهد بود. زیرا به مرور زمان این زبان به یک زبان برنامه برنامهنویسی تبدیل خواهد شد که توسط بسیاری از بلاکچینها پشتیبانی میشود.
در این مقاله سعی شده است بهصورت کلی و جامع به توضیح زبان برنامهنویسی سالیدیتی پرداخته شود. تجربۀ شما با این فناوری چیست و آیا آن را برای چند سال آینده مفید میبینید؟ چرا؟
برای اطلاع از تمامی اخبار دنیای دیجیتال به کانال تلگرامی ما به نشانی @reybiz_telegram بپیوندید.
نبع: Decrypt
هرگونه سوال و مشکلی نسبت به آموزش های داده شده داشتید با پشتیبانی سایت مطرح کنید.تیم ری بیز Reybiz بصورت ۲۴ ساعته جوابگوی سوالات شما است.
ممکن است به این مطالب نیز علاقهمند باشید
خیلی جامع و کامل بود توضیحاتتون و ممنون بابت پشتیبانیتون و منتظر پکیج سالیدیتی هستم
سلام آموزش سالیدیتی تون عالیه واقعا سالیدیتی رو استاد به زبان ساده توضیح میدن