سالیدیتی (Solidity)، یک زبان برنامهنویسی برای نوشتن قراردادهای هوشمند (smart contracts) است. از این زبان، برای پیاده کردن قراردادهای هوشمند در بلاک چینهای مختلف استفاده میشود؛ اما بیشترین استفاده از آن در رمزارز اتریوم است. قراردادهای هوشمند در بلاک چین اتریوم، همه با این زبان نوشته میشوند. کریستین ریتویسنر (Christian Reitwiessner)، الکس برگساسازی (Alex Beregszaszi) و چند نفر دیگر از اعضای اولیه تیم اتریوم، این زبان برنامهنویسی را برای اتریوم توسعه دادند. برنامههایی که از طریق Solidity ترجمه میشوند، بهراحتی در ماشین مجازی اتریوم (Ethereum Virtual Machine) قابل راهاندازی و اجرا هستند.
این زبان برنامهنویسی جوان، بهسرعت در حال پیشرفت است. مرتباً ویژگیهای جدیدی به این زبان در گیتهاب (Github) اضافه میشود که نشاندهنده تکامل و رشد سریع آن است. انعطافپذیری و قابلیت سفارشیسازی، از ویژگیهای این زبان محبوب است. همین انعطافپذیری، باعث شده در بلاک چینهای دیگری جز اتریوم نیز، از آن استفاده شود.
فهرست مطالب
- ۱ سالیدیتی محبوبترین زبان برنامهنویسی اتریوم
- ۲ ماشین مجازی اتریوم (EVM)
- ۳ ویژگیهای زبان Solidity
- ۴ مزایای زبان Solidity
- ۵ چرا سالیدیتی محبوبترین زبان برنامهنویسی قراردادهای هوشمند است؟
- ۶ کاربردهای سالیدیتی
- ۷ زبان برنامهنویسی سالیدیتی؛ راهی برای ورود به دنیای برنامهنویسی بلاک چین
- ۸ آموزش زبان برنامهنویسی سالیدیتی
سالیدیتی محبوبترین زبان برنامهنویسی اتریوم
این زبان سطح بالا، برای اعمال قراردادهای هوشمند (Smart Contracts) مورداستفاده قرار میگیرد. قراردادهای هوشمند برنامههایی هستند که رفتار کاربران را در شبکه اتریوم مدیریت میکنند. این زبان برنامهنویسی معروف، تحت تأثیر زبانهایی مانند C++، پایتون و جاوا اسکریپت است.
از دیگر ویژگیهای این زبان میتوان به پشتیبانی از وراثت و کتابخانهها (library) اشاره کرد. با استفاده از Solidity میتوان قراردادهایی برای کاربردهای مختلف ایجاد کرد. از جمله این کاربردها میتوان به رأیگیری، جمعآوری وجه و کیف پولهای چند امضایی اشاره کرد. برای پیادهسازی قراردادها، بهتر است از آخرین نسخه این زبان استفاده کرد؛ زیرا در آخرین نسخه، همیشه ویژگیهای جدیدی اضافه و مشکلات قبلی رفع میشوند.
ماشین مجازی اتریوم (EVM)
ماشین مجازی اتریوم (EVM) ، یک پلتفرم نرمافزاری مبتنی بر بلاک چین است. EVM به توسعهدهندهها اجازه ایجاد برنامههای غیرمتمرکز (Dapps) میدهد. برنامهنویسان به برنامههای غیرمتمرکز بسیار اهمیت میدهند؛ زیرا این برنامهها پیوسته کار میکنند و همه تغییرات ایجادشده را نگه میدارند. برای استفاده از ماشین مجازی اتریوم، نیازی به ماهر بودن در کدنویسی نیست.
EVM یک پشته (stack) مجازی تستی و بسیار قدرتمند است که داخل هر یک از نودهای کامل اتریوم مورداستفاده قرار گرفته است. این stack مسئول اجرای بایت کد (bytecode) قرارداد، است. هر یک از نودها در شبکه اتریوم، یک نمونه EVM را اجرا میکنند که به آنها اجازه میدهد در اجرای دستورالعملهای مشابه توافق کنند.
در محیط ماشین مجازی اتریوم، همه اکانتها و قراردادهای هوشمند اتریوم ساکن هستند. اتریوم در هر یک از بلاکهای زنجیره خود تنها یک وضعیت اصلی دارد. این EVM است که قوانین را برای محاسبه یک وضعیت معتبر جدید از بلاکی به بلاک دیگر تعریف میکند. هزاران کامپیوتر متصل، همزمان روی شبکه اتریوم در حال فعالیت هستند. EVM در ایجاد نظم بسیار مؤثر است.
ویژگیهای زبان Solidity
همانطور که گفته شد، سالیدیتی یک زبان سطح بالا و مبتنی بر قرارداد هوشمند با ساختاری بسیار مشابه جاوا اسکریپت است. این زبان محبوب یک زبان اسکریپتینگ (scripting language) از نوع استاتیک است.
کد Solidity، بسیار شبیه به کد زبانهایی مانند C++ و جاوا اسکریپت است. افرادی که قبلاً تجربه کدنویسی با این زبانها را دارند، قطعاً Solidity برای آنها آشنا خواهد بود.
مزایای زبان Solidity
سالیدیتی، زبان برنامهنویسی اتریوم، دومین ارز دیجیتال مطرح دنیا است. این زبان برنامهنویسی چه ویژگیهای مثبتی دارد که اتریوم تا این حد آن را قبول دارد؟ قابلیت حل محدودیتها از طریق استراتژیهای مختلف، یکی از ویژگیهای آن است. بهعنوانمثال، مشکل عدم کفایت داده را میتوان با استفاده از سیستمهای اوراکل (Oracle) حل کرد.
یکی از مزایای این زبان، فراهمکردن ویژگیهای وراثت (inheritance) در قراردادها است. برای نمونه، میتوان به ویژگیهای وراثتی چند سطحی اشاره کرد. قراردادهای هوشمند ایجادشده از طریق این زبان، بسیار قابلاعتماد و ایمن هستند و بهآسانی برای ایجاد توافق بین طرفین استفاده میشوند.
از دیگر ویژگیهای مثبت این زبان، میتوان به این نکته اشاره کرد که افراد با داشتن سابقه برنامهنویسی، بهراحتی میتوانند آن را یاد بگیرند و پیشرفت کنند. این شباهت به دیگر زبانهای برنامهنویسی، ویژگی مثبتی است. در زمان پیشآمدن مشکلات، افراد بیشتری برای کمک و مشاوره وجود خواهند داشت. دادههای موجود برای این زبان، تنها دادههای حاصل از تراکنشها هستند. همانطور که قبلاً اشاره شد، انعطافپذیری این زبان باعث شده که بتوان این محدودیت را با اضافهکردن اوراکل حل کرد. در کل، Solidity زبانی بسیار انعطافپذیر است و این ویژگی خود را در بلاکچینهای مختلف ثابت کرده است.
چرا سالیدیتی محبوبترین زبان برنامهنویسی قراردادهای هوشمند است؟
برای نوشتن قراردادهای هوشمند اتریوم، از زبان سالیدیتی استفاده میشود. Solidity به روشهای مختلف به قراردادهای هوشمند اجازه میدهد با همدیگر ارتباط داشته باشند. از قراردادهای هوشمند میتوان به شیوههای مختلفی استفاده کرد و تمام این کاربردها از طریق این زبان برنامهنویسی امکان دارد.
زمانی که یک قرارداد هوشمند شروع میشود، هیچکس قادر به تغییر کدهای آن نیست. این ویژگی به دلیل ماهیت غیرقابلتغییر بلاکچین است. سالیدیتی با روش خاصی این مشکل را حل میکند؛ با یک قرارداد دیگر یک پراکسی ایجاد میکند.
Solidity این قابلیت را دارد که از قراردادهای دیگر بهعنوان کتابخانه استفاده کند. این موضوع باعث کاهش هزینه توسعه قراردادها میشود. دیگر لازم نیست قرارداد موردنظر، همه کد را خودش بهتنهایی اجرا کند.

کاربردهای سالیدیتی
رأیگیری، یکی از کاربردهای برجسته سالیدیتی است. در حال حاضر این کار با مشکلات زیادی مانند دستکاری داده، رأیدهندگان جعلی، تغییر دستگاههای رأیگیری و کلاهبرداریهای گوناگون روبرو است. با استفاده از قراردادهای هوشمند Solidity میتوان فرایند رأیگیری را شفاف و قابلاعتماد کرد. این قراردادها به ساده و مؤثر شدن این فرایند نیز کمک میکنند.
امروزه در حراجها و مزایدهها، کلاهبرداریها و اختلافهای زیادی وجود دارد. سالیدیتی در اینجا نیز قابلیت استفاده دارد. همه میتوانند قیمتهای خود را بهصورت شفاف مشاهده کنند. با استفاده از قراردادهای هوشمند Solidity میتوان حراجهایی را طراحی کرد که کاربران تا پایان کار نتوانند قیمت همدیگر را ببینند.
زبان برنامهنویسی سالیدیتی؛ راهی برای ورود به دنیای برنامهنویسی بلاک چین
ارزهای دیجیتال و شبکه بلاک چین، از موضوعات موردبحث در جهان امروز هستند. فناوری بلاک چین، زیربنای بسیاری از رمزارزها است. این شبکه به شیوههای مختلفی زندگی مردم جهان را بهبود میبخشد. این فناوری، هر روز درحالرشد و پیشرفت است. امروزه بسیاری از سرمایهگذاران وارد این دنیا شدهاند و قطعاً این رشد و پیشرفت نیازمند برنامهنویسان، توسعهدهندگان و مهندسان بیشتر در این حوزه است.
امروزه پول و موقعیتهای زیادی در حوزه بلاک چین وجود دارد. سوال اساسی این است، چگونه میتوان برنامهنویسی در حوزه بلاک چین را شروع کرد؟ در جواب باید گفت که راههای زیادی برای این کار وجود دارد. بدون شک زبان محبوب Solidity یکی از بهترین راهها برای ورود به دنیای شگفتانگیز برنامهنویسی بلاک چین است.
آموزش زبان برنامهنویسی سالیدیتی
سالیدیتی همه انواع داده عمومی را، مانند دیگر زبانهای برنامهنویسی شیءگرا پشتیبانی میکند. این انواع داده شامل موارد زیر هستند:
- بولین Booleans: این نوع داده ارزشهای ۱ را بهعنوان درست و ارزشهای ۰ را بهعنوان نادرست برمیگرداند که این بستگی به صحت یک شرط دارد. زمانی که اپراتورهای منطقی مورداستفاده قرار میگیرند، خروجی عموماً به سمت یک ارزش Boolean برمیگردد.
- اینجر Integers: زبان Solidity ارزشهای اینتجر تأییدشده و تأییدنشده را پشتیبانی میکند. کلماتی کلیدی مانند uint 8 و uint 256 را میتوان برای اختصاص اندازههای ذخیرهای از ۸ تا ۲۵۶ بیت مورداستفاده قرارداد. استثناهای زمان اجرا (runtime) نیز در اینجا پشتیبانی میشوند.
- استرینگ لیترالها (string literals): استرینگ لیترالها را میتوان با استفاده از نقلقولهای تکی و یا دوتایی نوشت. در اینجا لیترالها ذاتاً قابل تبدیل هستند و هم بهصورت بایت و هم بهصورت استرینگ ظاهر میشوند.
- مدیفایر (Modifier): از مدیفایرها قبل از اجرای کد یک قرارداد هوشمند، برای اطمینان یافتن از انسجام شرایط استفاده میشود.
ساختار نحوی آرایهها در سالیدیتی، مانند زبانهای برنامهنویسی عمومی است. سالیدیتی از هر دو آرایههای تکبعدی و چندبعدی پشتیبانی میکند. در شکل زیر نحوه کدگذاری در سالیدیتی را مشاهده میکنید:
اولین خط از کد بالا نشان میدهد که کد منبع برای این برنامه باید با Solidity 0.4.0 نوشته شود. این کد با انواع EVM که مطابق Solidity 0.4.0 یا بالاتر است، سازگاری دارد. اصطلاح Pragma به دستورالعملهایی اشاره دارد که به کامپایلر داده میشود تا کد را مرحلهبهمرحله اجرا کند.
کل این برنامه یک قرارداد هوشمند StorageBasic ایجاد میکند که دارای یک متغیر اینتجر تأیید نشده StoredValue و یک تابع عضو (set) است. این تابع ارزش تابع (Var) را بهعنوان آرگومان خود برمیگرداند. در داخل بدنه این تابع، StoredValue با ارزشی که تابع (get) برمیگرداند، تعیین میشود.
در ضمن باید توجه داشت که تابع (get) یک مقدار اینتجر تأییدنشده را برمیگرداند. در نهایت باید بگوییم که کل این کد مانند یک تابع برگشتی عمل میکند. این بهترین روش برای اعمال قرارداد هوشمند در یک بلاک چین است.
آیا سالیدیتی ارزش یادگیری دارد؟
اتریوم در حال انتقال به اتریوم ۲ است. بعضی گمان میکنند که دیگر سالیدیتی ارزش یادگیری ندارد. حقیقت این است که این انتقال زمان میبرد و بهسادگی صورت نمیگیرد. علاوه بر این، Solidity زبان اصلی شبکه مجازی اتریوم است. آشنایی با این زبان، به درک بسیاری از مفاهیم کمک خواهد کرد. سالیدیتی تنها یک زبان برنامهنویسی نیست؛ بلکه در ارتباط با نحوه کار در شبکه اتریوم نیز بسیار کمک میکند.
زبان Solidity در سالهای آینده پیشرفتهای بیشتری خواهد کرد. این زبان در ایجاد برنامههای غیرمتمرکز در شبکه اتریوم نقش اصلی را بازی میکند؛ بنابراین، همیشه ارزش یادگیری خواهد داشت. امروزه یادگیری اتریوم در فضای بلاک چین تبدیل به یک ضرورت شده است. هر توسعهدهندهای که میخواهد در این صنعت حرفی برای گفتن داشته باشد، لازم است از دانش عمیقی درباره اتریوم داشته باشد. با آموختن زبان Solidity موقعیتهای زیادی برای کار در فضای بلاک چین خواهید داشت.
نظر شما چیست؟
آیا یادگیری سالیدیتی را توصیه میکنید؟
شما چه تجاربی در زمینه یادگیری این زبان برنامهنویسی دارید؟ نظرات خود را با ما در میان بگذارید.