sepisoltani
sepisoltani
خواندن ۳ دقیقه·۳ سال پیش

آموزش زبان Solidity (قسمت اول)

مقدمه

درست مثل برنامه‌ های کامپوتری، قرارداد های هوشمند اتریوم به یک زبان برنامه‌ نویسی نوشته می‌ شوند که solidity نام دارد. لازم به ذکر است که زبان‌های برنامه‌نویسی دیگری هم وجود دارند که می‌توان برای ایجاد قراردادهای هوشمند در شبکه اتریوم، از آنها استفاده کرد، اما این روزها انتخاب اکثر توسعه دهندگان این حوزه سالیدیتی است. در ادامه با هم این زبان را فرا می گیریم.

مفهوم contract چیست ؟

کد های solidity در contract ها گنجانده شده اند. یک contract بلوک اساسی برنامه های سالیدیتی است. همه متغیرها و فانکشن ها متعلق به یک contract هستند و تعریف contract نقطه شروع همه پروژه های شما خواهد بود. ( برای مثال در زبان جاوا همه چیز ابتدا در class تعریف می شود).

یک contract خالی با نام HelloWorld به این شکل است:

https://gist.github.com/d540a230f552f1032770f68ae8f54b33.git

مفهوم pragma چیست و چه کاربردی دارد ؟

به دلیل این که زبان solidity یک زبان کامپایلریست همیشه باید نسخه کامپایلر را در ابتدای contract ها مشخص کرد تا در آینده با معرفی نسخه های جدید کامپایر مشکلی برای اجرای کد شما ایجاد نشود و مشخص باشد که برنامه شما با چه نسخه ای از کامپایلر کار می کند.

به عنوان مثال در contract زیر تصمیم داریم کد ما نسخه های ۰.۵.۰ و بالاتر تا نسخه ۰.۶.۰ از کامپایلر را پشتیبانی کند ( خود نسخه ۰.۶.۰ را شامل نمی شود) . پس باید به صورت زیر آن را در ابتدای contract تعریف کنیم.

https://gist.github.com/sepisoltani/905ed4fd6ad20ae45aa8a73cad495a2b

مفهوم state variable چیست و چه کاربردی دارد ؟

همان متغیر در بقیه زبان های برنامه نویسی هستند با این تفاوت که وقتی مقداری را به آن اختصاص می دهیم آن مقدار برای همیشه داخل contract storage ذخیره می شود. (مثل ثبت اطلاعات داخل یک دیتابیس).

به مثال زیر توجه کنید. مقدار ۱۰۰ برای همیشه داخل متغیر myUnsignedInteger در بلاکچین ذخیره می شود. در واقع در این مثال ما یک state variable از نوع uint تعریف کرده ایم (با نام myUnsignedInteger) و مقدار ۱۰۰ را داخل آن ذخیره کرده ایم . توجه کنید که این مقدار برای همیشه داخل بلاکچین ذخیره می شود.

https://gist.github.com/sepisoltani/57c58175f827f605b01f10293fdf4a35

مفهوم unsigned integer یا uint چیست و چه کاربری دارد؟

یک data type است و فقط قابلیت نگه داری اعداد مثبت را دارد . برای نگه داری اعداد مثبت و منفی باید از int استفاده کرد.

نکته : در سالیدیتی وقتی uint تعریف می شود منظور همان uint256 هست. که قابلیت نگه داری یک عدد مثبت ۲۵۶ بیتی را دارد. uint های دیگری نیز می توان تعریف کرد. مانند uint8 و uint16 و uint32 که در موارد خاص استفاده می کنیم ولی به صورت کلی و برای سادگی از همان uint بیشتر استفاده می کنیم.

مفهوم string چیست و چه کاربری دارد ؟

برای نگه داری مقادیر رشته ای از دیتا تایپ string استفاده می کنیم.

مفهوم struct چیست و چه کاربری دارد ؟

گاهی مواقع لازم می شود که یک دیتا تایپ خاص را خودمان تعریف کنیم. بوسیله struct می توانیم یک دیتا تایپ تعریف کنیم که خود شامل property های دیگر باشد. برای مثال به struct زیر دقت کنید. در این جا یک struct با نام Person ساخته شده است که شامل دو مشخصه با نام های age و name است. age از نوع int و name از نوع string.

https://gist.github.com/sepisoltani/64627053d3a91be2bfa3de9de6437d5f

مفهوم math operations چیست و چه کاربری دارد ؟

مانند تمام زبان های برنامه نویسی سالیدی هم قابلیت انجام عملیات ریاضی را دارد.

عملیات جمع : x + y

عملیات منها : x - y

عملیات ضرب : x * y

عملیات تقسیم : x / y

عملیات باقیمانده تقسیم دو متغیر : x % y

عملیات به توان رسانی در متغیر : x ** y



در قسمت بعدی به مفاهیم آرایه ها و فانکشن ها در سالیدیتی می پردازم. حتما قسمت بعدی را دنبال کنید و مطالعه کنید. ممنون که همراهی کردید.

اگر دوست داشتید من را در لینکدین دنبال کنید.




سالیدیتیقرارداد هوشمندsolidityاتریوم
Senior backend developer
شاید از این پست‌ها خوشتان بیاید