قرارداد هوشمند (Smart Contracts) نیاز به برنامهنویسی دارد، و سالیدیتی ( Solidity) ابزاری برای این کار است. سالیدیتی از سال ۲۰۱۴ معرفی شد. این ابزار راه طولانی را سپری کرده و بعدها توسط تیم سالیدیتی اتریوم توسعه یافته است. صدها هزار توسعه دهنده وجود دارد که از این زبان برای توليد خدمات مبتنی بر بلاک چین استفاده میکنند چرا که در این زمینه کاربردهای بسیاری دارد. در ادامه بیشتر میآموزید که زبان سالیدیتی چیست؟ تا انتهای مقاله با همرویش همراه باشید.
زبان سالیدیتی چیست ؟
solidity یک زبان برنامه نویسی سطح بالا و شی گراء است. سالیدیتی برای ساختن قراردادهای هوشمند که تراکنشهای روی بلاک چین را خودکار میکند، استفاده میشود. بعد از معرفی در سال ۲۰۱۴ این زبان توسط مشارکت کنندگان در پروژه اتریوم توسعه یافت. این زبان عمدتاً برای ساختن قراردادهای هوشمند روی بلاک چین اتریوم استفاده میشود.
سالیدیتی مشابه یکی از زبانهای برنامهنویسی مرسوم به نام جاوا اسکریپت است. این زبان از نظر نحوه نوشتاری دستورات نیز همانند جاوا اسکریپت میباشد. به این منظور که اگر جاوا اسکریپت را بلد باشید به راحتی سالیدیتی را یاد خواهید گرفت. همچنین ویژگیهای مشابه زیادی با پایتون و ++C دارد.
به عنوان یک زبان برنامه نویسی پیشرفته، سالیدیتی دیگر نیازی به نوشتن کدها به صورت یک و صفر ندارد. از این سو با استفاده از تلفیقی از اعداد و حروف، کار را برای برنامه نویسان آسان کرده که کدها به زبان انسان نزدیکتر و قابل درک باشد.
سالیدتی استاتیک تایپ (statically typed) است، که در آن ارثبری، کتابخانهها و تعریف نوع داده توسط کاربر (user-defined types) پشتیبانی میشود. از آنجایی که سالیدیتی استاتیک تایپ است، کاربر هر نوع متغیری را میتواند تعریف کند و کامپایلر بر اساس دیتا تایپ هر متغیر که هنگام ساخت آن مشخص شده کار خود را به درستی انجام میدهد. دیتاتایپهای سالیدیتی معمولا به دو دسته Reference Type و Value Type طبقه بندی میشوند.
هم رویش منتشر کرده است:
آموزش سریع جاوا اسکریپت در 3 ساعت (رایگان)
بزرگترین تفاوت بین Value Type و Reference Type ها در این است که چطور به یک متغیر اختصاص داده میشوند و در ماشین مجازی اتریوم EVM (Ethereum Virtual Machine) ذخیره شدهاند. زمانی که تغییری در مقدار یک متغیر از نوع Value Type انجام میدهید هیچ تغییری روی مقدار متغییر های دیگر ایجاد نمیشود اما با ایجاد تغییر در مقادیر Reference Types ممکن است مقادیر دیگر بروزرسانی شوند.
سالیدیتی چگونه کار میکند؟
زیبایی بستر اتریوم به این است که ارزهای دیجیتال و اپهای غیرمتمرکز زیادی میتوانند از آن استفاده کنند. قرارداد هوشمند این امکان را میسازد که از تکنولوژیهای پیشرفته در بستر اتریوم برای انواع زیادی از کسب و کارها و سازمانها استفاده شود.
هرساله در جهان میلیاردها دلار برای روشهای بلاک چین خرج میشود. خیلی از این روشها از سالیدیتی به دست میآیند. قراردادهای هوشمندی که با سالیدیتی نوشته شده یکی از راههای خودکار سازی تراکنشهای مابین کسب و کارها و همچنین بین مردم است.
برای افرادی که از طریق بلاک چین تراکنشهای مالی انجام میدهند، محیط مطمئنی برای در امان ماندن از شر کلاهبرداری و یا نتوانستن استفاده از یک واحد پولی مشابه ساخته است.
یکی از اجزا اصلی که باعث میشود سالیدیتی کار کند، EVM است. EVM یک کامپیوتر مجازی در بلاکچین است که ایدههای مردم را به کدهایی تبدیل میکند که باعث اجرای برنامهها در بلاکچین میشود.
سالیدیتی به صورت نامشخص همانند یک ماشین کد میسازد که روی EVM اجرا میشود. کامپایلر کدهای پیشرفته را به دستوالعملهایی تبدیل میکند که پردازنده بتواند آن را بخواند. پلتفرمهای مختلف، کامپایلر سالیدیتی را به صورت رایگان ارائه میکنند. از جمله کامپایلر آنلاین ریمیکس (Remix) و یک کامپایلر در محیط خط فرمان (command-line) برای کامپیوتر شخصی.
قراردادهای هوشمند EVM یک سری محدودیتهایی دارد که باید مورد ملاحظه قرار گیرد. یکی از محدودیتها دسترسی محدود به توابع مفید برای خواندن ساختارهای جیسون (JSON) یا محاسبات Floating-point (روش محاسباتی که به طور خودکار محل ممیز یا نقطهی اعشار را شناسایی میکند) است.
توابع عمومی (public) و خصوصی (private)
توابع عمومی مانند API ها میمانند که هر کسی در دنیا به آنها دسترسی دارد و هرکسی میتواند آن کدها را فراخوانی کنند. توابع عمومی طوری طراحی شدند که در بیشتر حالات برای فرایندهای مشترک در یک پلتفرم که همه کاربران از آن استفاده میکنند باشند.
برای مثال، یک تابع عمومی میتواند طوری طراحی شود که به همه کاربران این اجازه را بدهد که موجودی حساب خود را چک کنند. یکی از رایجترین راههای بهرهبرداری از قراردادهای هوشمند، توابع عمومی است.
در حالی که نوشتن قراردادهای هوشمند با سالیدیتی آسان است اغلب نوشتن ایمن آنها بسیار دشوار میباشد. برای مثال اگر تابع برداشت در یک قرارداد هوشمند ایمن نباشد، مهاجم میتواند تابع آسیب پذیر را دستکاری کند تا حساب را از پول خالی کند.
هم رویش منتشر کرده است:
آموزش برنامه نویسی از صفر --- چگونه برنامه نویس شویم؟ (بسته جامع)
مهاجم میتواند با استفاده از حلقهای که عملکرد برداشت را به طور مکرر تکرار میکند، از یک تابع برداشت برای ارسال پول به حساب دیگری فراخوانی کند.
توابع خصوصی فقط از داخل قراردادها قابل فراخوانی است. آنها حاوی دستوالعملهایی هستند که تنها پس از فراخوانی توسط توابع دیگر، به صورت زنجیرهای قابل اجرا هستند. این کار دستکاری کد توسط عوامل مخرب را دشوارتر میکند.
استانداردها و منطق کد
استانداردهای مختلفی در حال ظهور هستند که تعیین میکنند چگونه از قراردادهای هوشمند سالیدیتی برای ساخت برنامههای کاربردی در اتریوم استفاده شود. این استانداردها به عنوان استانداردهای ERC (Ethereum Request for Comments) شناخته می شوند. استانداردها بر اساس سندی است که حاوی دستورالعملهایی در مورد عملکردهای مورد نیاز و محدودیتهایی در مورد نحوه رفتار کد است.
استانداردهای ERC که نحوه عملکرد سالیدیتی را تعیین می کنند عبارتند از:
• ERC20
• ERC165
• ERC721
• ERC223
• ERC621
• ERC777
• ERC827
• ERC884
• ERC865
• ERC1155
روشهای مختلفی وجود دارد که از سالیدیتی میتوان برای ایجاد تعامل قراردادهای هوشمند با یکدیگر استفاده کرد. سالیدیتی همچنین میتواند برای ایجاد دستورالعملهای اختصاصی در مورد نحوه ذخیره دادهها در قرارداد هوشمند استفاده شود. منطق و دادهها در قراردادهای هوشمند را میتوان با استفاده از سالیدیتی از هم جدا کرد. با استفاده از قراردادهای جایگزین، منطق یک قرارداد را میتوان تغییر داد تا این امکان را فراهم کند.
تغییرناپذیری
تغییر کد قرارداد هوشمند پس از نوشتن و کامپایل غیرممکن است. این به این معنی است که هر خط کد باید طبق برنامه کار کند، در غیر این صورت ممکن است خطرات جدی سوء استفاده از کد وجود داشته باشد.
از آنجایی که بلاکچین اتریوم تغییرناپذیر است، تغییر دادهها و منطق نوشته شده روی آن غیرممکن است. برای دور زدن این موضوع میتوان از یک پروکسی برای اشاره به قرارداد دیگر استفاده کرد که حاوی منطق کسب و کار واقعی است. این باعث میشود تا باگها رفع شوند در حالی که نسخه جدیدی از قرارداد در حال اجرا است.
هزینه گس (Gas costs)
هزینههای اضافی برای استفاده از سالیدیتی در شبکه اصلی اتریوم پرداخت میشود. برخی از هزینههای اضافی مبتنی بر سیستم گس اتریوم است که برای ایمنسازی شبکه بلاکچین به ماینرها نیاز دارد تا کد بتواند با خیال راحت روی آن اجرا شود.
هنگام نوشتن قراردادهای هوشمند، همیشه به یاد داشته باشید که هزینههای گس میتواند تعیین کند که یک قرارداد هوشمند چقدر کارآمد است. از آنجایی که برای هر ذخیره سازی استفاده شده و اقدامات انجام شده با کد سالیدیتی هزینه گس را به همراه دارد، قرارداد هوشمندی که اجرای آن پرهزینه است بعید است در دراز مدت مورد استفاده قرار گیرد.
بهینهسازی گس به کاهش هزینه در هنگام اجرای کد سالیدیتی کمک میکند. برخی از محبوبترین روشهای بهینه سازی گس شامل استفاده از کتابخانهها و استفاده از توابع کمتر است. کتابخانهها اغلب برای ذخیره از بایتکد استفاده میکنند.
به جای اضافه کردن بایتکد غیر ضروری به قرارداد هوشمند، منطق را میتوان در کتابخانهها قرار داد. این به کوچک نگه داشتن اندازه قرارداد هوشمند کمک میکند. با استفاده از توابع کمتر، بایتکد کمتری مورد نیاز است و دشواری بازبینی کد نیز کاهش مییابد.
چگونه میتوان از سالیدیتی در اتریوم استفاده کرد؟
سالیدیتی برای ایجاد قراردادهای هوشمند برای توکنهای قابل تعویض (FT) و توکنهای غیرقابل تعویض (NFT) استفاده میکند. استانداردهای مختلفی برای ساخت توکنهای غیر قابل تعویض و توکنهای قابل تعویض در اکوسیستم اتریوم استفاده میشود.
این موارد اجازه میدهد تا انواع مختلفی از موارد استفاده برای افرادی که از بلاکچین استفاده می کنند ایجاد شود. سالیدیتی افراد را قادر میسازد تا از توکنهای قابل تعویض و توکنهای غیرقابل تعویض در اتریوم استفاده کنند. از ضرب توکنهای غیرقابل تعویض گرفته تا افزودن آنها به پولهای ییلد فارمینگ (yield farming) برای بهرهمندی بیشتر، انواع مختلفی از استفاده از توکنها توسط اتریوم امکانپذیر است.
سازمانهای خودمختار غیرمتمرکز (DAO) نیز توسط سالیدیتی امکانپذیر شدهاند. یک DAO، که نوع جدیدی از ساختار سازمانی آنلاین است، در درجه اول در سالیدیتی نوشته شده است. DAO به افراد مختلف اجازه میدهد تا به عنوان اعضای یک پلتفرم آنلاین گرد هم آیند و در آنجا به تصمیمات کلیدی DAO رأی دهند.
سالیدیتی امکان خودکارسازی فرآیندهای درون DAO را فراهم میکند. نمونههایی از اتوماسیون فرآیند در DAO شامل اخذ رأی برای تصمیمات کلیدی و تخصیص اعتبار به اعضای DAO برای مشارکت آنها در گروه است.
تعریف استانداردهای بلاکچین
سالیدیتی خیلی بیشتر از یک زبان برنامه نویسی است. در حال تعیین استانداردهایی برای آینده فناوری بلاک چین میباشد.
به لطف تعداد توسعه دهندگان منبع باز (open source) که برای بهبود امنیت و عملکرد سالیدیتی کار میکنند، هزاران برنامه در اکوسیستم اتریوم همچنان برای عملکرد برنامههای خود به آن وابسته هستند. با ایجاد استانداردهای جدید برای قراردادهای هوشمند در اتریوم، استفاده از این زبان امنتر خواهد شد.
+ پیشنهاد مطالعه:
5 دلیل که نشان میدهد برنامه نویسی پایتون برای بلاکچین مناسب است
کلیدواژگان
زبان سالیدیتی چیست | زبان solidity چیست | solidity چیست | زبان برنامه نویسی سالیدیتی چیست | زبان برنامه نویسی solidity چیست | زبان برنامه نویسی سالیدیتی | زبان سالیدیتی چیست
منبع
what-is-solidity
دوره های آموزشی مرتبط
-
آموزش GEP برای تابع یابی با هوش مصنوعی --- برنامه سازی بیان ژنی
امتیاز 4.86 از 5 امتیاز 7 مشتری۷۸,۰۰۰ تومان
-
آموزش شبکه عصبی مصنوعی -- از صفر به زبان ساده
امتیاز 4.92 از 5 امتیاز 25 مشتری۱۴۴,۰۰۰ تومان
3 دیدگاه برای “زبان سالیدیتی (solidity) چیست؟ چگونه برای توسعه قرارداد هوشمند به کار میرود؟ ”
استاد من همیشه شما رو میبینم برنامه نویسی را هم یاد گرفتم
سلام. از حسن توجه شما سپاسگذاریم. خوشحالیم که دوره های هم رویش برای شما مفید بوده است
ممنون از نویسنده محترم برای این مقاله مفید.