سالیدیتی (Solidity) یک زبان برنامهنویسی است که مختص شبکه بلاکچین اتریوم طراحی شده است. در شبکه اتریوم با استفاده از این زبان برنامهنویسی برای انجام معاملات، قراردادهای هوشمند تنظیم میکنند. از سالیدیتی برای تنظیم قراردادهایی تجاری استفاده میکنند که در شبکه بلاکچین زنجیرهای از معاملات گذشته را در خود ذخیره میکند.
در واقع از این زبان برنامهنویسی به عنوان ابزاری برای تبدیل کدهای نوشته شده در پلتفرم هوش مصنوعی به کدهای مخصوص شبکه اتریوم استفاده میکنند. سالیدیتی شباهت زیادی به زبان ++C دارد. به همین خاطر یادگیری این زبان برای متخصصان این زمینه چندان دشوار نیست.
برای مثال کد main در ++C برابر با کد contract در سالیدیتی است. این زبان در سال 2014 ابداع شد و بعد از آن برنامهنویسهای بسیاری برای توسعه شبکه بلاکچین از آن بهره بردند.
مانند دیگر زبانهای برنامهنویسی، سالیدیتی هم شامل متغیرها، عملکردها و دستهبندیهای متفاوتی است که مستلزم یادگیری است. در ادامه روند توسعه این زبان برنامهنویسی را شرح دادهایم و توضیح مختصری هم درباره قراردادهای هوشمندی که با استفاده سالیدیتی در شبکه بلاکچین عقد میشود دادهایم.
روند توسعه زبان برنامهنویسی سالیدیتی
سالیدیتی زبان برنامهنویسی جدیدی است که با توجه به نیاز سرمایهگذاران در شبکه بلاکچین اتریوم در بازار ارزهای دیجیتال به سرعت در حال توسعه است. در واقع سالیدیتی در حال حاضر هسته مرکزی تشکیلدهنده شبکه اتریوم است و همین باعث شده است که دیگر شبکهها برای طراحی زبان برنامهنویسی مخصوص خودشان با این شبکه رقابت کنند اما تا کنون رقبا حتی به آن نزدیک هم نشدهاند!
پلتفرمهایی مانند Monax و Hyperledger زبانهایی پیشرفته و بر مبنای سالیدیتی برای پلتفرمهایشان طراحی کردهاند اما این زبانها با استقبال آنچنانی کاربران مواجه نشده است. سالیدیتی علاوه بر شباهت بسیاری که با زبان ++C دارد به زبان محبوب JavaScript هم نزدیک است. این یعنی اگر زبان JavaScript را میفهمید یادگیری سالیدیتی برایتان تا حد زیادی آسان خواهد بود.
ماشین مجازی اتریوم چیست؟
ماشین مجازی اتریوم که در دنیای ارزهای دیجیتال به Ethereum Virtual Machine یا EVM معروف است، در واقع محیطی برای تحلیل و بررسی قراردادهای هوشمندی است که در این شبکه منعقد میشود.
این محیط به شما کمک میکند تا برای اعتماد کردن به شرایط معاملهها و پایبند بودن طرفین به مفاد قرارداد به شخص سوم نیاز نداشته باشید؛ تمام مراحل معامله قابل رویت و پیگیری توسط همه کاربران شبکه است! در واقع شما به جای یک شاهد تودهای از کاربران را دارید هر یک بر معامله دیگری نظارت و برای اعتماد کردن به شرایط معامله با نگرانی کمتری دست و پنجه نرم میکنند.
در این شبکه کسی نمیتواند با توافقهای پشت پرده و مافیا گونه، معاملهای را به هم بزند یا بر خلاف وعدههایش عمل کند! البته برای تنظیم چنین قراردادهایی تنها از سالیدیتی استفاده نمیشود، زبانهای برنامهنویسی دیگری مانند Serpent، Mutan و LLL هم هستند که استفاده از آنها برای تنظیم قراردادهای هوشمند رایج است.
یکی از ویژگیهای اصلی شبکه اتریوم آن است که نرمافزارها و رمز ارزهای متفاوتی میتوانند از محیط آن استفاده کنند. این یعنی قراردادهای هوشمند برای بیشتر معاملات تجاری در دسترس است. سازمانها و افراد حقیقی ممکن است از ارزها و نرمافزارهای متفاوتی برای عقد قرارداد و انجام معاملههایشان استفاده کنند و شبکه اتریوم به خاطر انعطافپذیری که در این مورد دارد شرایط تنظیم قرارداد هوشمند را برای همه این کاربران مهیا کرده است.
حالا مردم و شرکتهای تجاری سالانه بیلیونها دلار در این شبکه معامله میکنند و با وجود قراردادهای هوشمند دیگر نگران کلاهبرداری و از دست رفتن سرمایهشان نیستند.
کارکردهای خصوصی و عمومی سالیدیتی
کارکردهای عمومی سالیدیتی با کارکرد دیگر زبانهای برنامهنویسی کاربردی، API یکسان است. هر برنامهنویسی میتواند از کدهای تعریف شده در زبان سالیدیتی استفاده کند و برای توسعه شبکه اتریوم برنامهای جدید طراحی کند.
برای مثال برنامهای که به کاربران اجازه میدهند تعادل سالیانه حسابهایشان در شبکه را بررسی کنند. بیشتر قراردادهای هوشمند بر مبنای همین کارکردهای عمومی منعقد میشود.
اما برخی قراردادهای نیازمند نوشتن کدهایی است که تنها مخصوص همان قرارداد است و طرفین معامله برای طراحی برنامهای خاص توافق کردهاند. این همان کارکرد خصوصی سالیدیتی است. هرچند نوشتن قراردادهای هوشمند خصوصی با سالیدیتی کار به نسبت آسانی به نظر میآید اما تأمین امنیت این قراردادها کار دشواری است.
برای مثال اگر بندهای استرداد قرارداد به خوبی ایمن نشده باشد یک هکر به راحتی میتواند با سوء استفاده از شبکه، موجودی بلوکه شده بر اساس قرارداد را تخلیه کند! او میتواند با استفاده از بند استرداد قرارداد، پول را به حساب دیگری منتقل و از آن برای انجام معاملات دیگر استفاده کند.
به همین خاطر برای عقد قراردادهای خصوصی زنجیرهای عمومی طراحی میکنند. در واقع برای فعال شدن بندهایی که در قراردادهای هوشمند خصوصی منعقد میشود ابتدا باید یک قرارداد عمومی که قابل رؤیت برای همه کاربران است طراحی و در صورت تأیید، بند خصوصی آن فعال شود.
این راه حل هم با آزمون و خطا و پس از سوء استفاده کردن هکرها از این نقطه ضعف به دست آمده است تا حالا با خیال راحت از قراردادهای هوشمند برای انجام معاملههای بینالمللیتان استفاده کنید.
*هشدار: قراردادهای هوشمند غیر قابل تصحیح است!
وقتی کدی را با زبان سالیدیتی در قراردادهای هوشمند خود منتقل میکنید، این کد هیچگاه قابل تصحیح نخواهد بود! این یعنی وقتی کدها را وارد میکنید دو حالت بیشتر وجود ندارد، یا خطی که وارد کردهاید به درستی کار میکند و یا هرآنچه نوشتهاید به ضررتان خواهد بود!
برای آنکه از درست نوشتن کدها در قرارداد هوشمندتان مطمئن شوید ابتدا قراردادی آزمایشی تنظیم کنید و سرمایهتان را وارد آن نکنید. اگر همه کدها همانگونه که برنامهریزی کرده بودید عمل کرد، حالا دستور نوشته شده خود را وارد قرارداد هوشمند اصلی کنید.
در این مطلب زبان برنامهنویسی سالیدیتی را به طور کلی معرفی کردیم و موارد استفاده از آن در شبکه بلاکچین اتریوم را شرح دادیم. در ادامه برخی شباهتهای سالیدیتی را با دیگر زبانهای برنامهنویسی بازگو کردیم، از کارکردهای عمومی و خصوصی این زبان صحبت کردیم و در نهایت در مورد غیر قابل تصحیح بودن قراردادهای هوشمند هشدار دادیم.
کلام آخر
اگر قصد مهاجرت به استرالیا را دارید، صرافی رزکپ بهترین انتخاب برای حواله دلار استرالیا و انجام حواله های شما است. همچنین اگر که در بازار ارزهای دیجیتال فعالیت میکنید میتوانید از دیگر خدمات رزکپ برای خرید و فروش تتر، تبدیل تتر به دلار استرالیا بهره ببرید. رزکپ سریعترین راه برای انجام حواله های شماست.