انواع داده و متغیر ها در سالیدیتی + سورس کد
سلام دوستان عزیز، در این مقاله قصد داریم تا انواع متغیر در سالیدیتی را بررسی کنیم. اگر قصد داری تا به جمع برنامه نویسان سالیدیتی بپیوندی و از این فرصت بکر برای درآمد زایی استفاده کنی حتما دوره آموزش جامع سالیدیتی رو ببین تا علاوه بر یادگیری سالیدیتی و دریافت مدرک معتبر، دوره کسب درآمد از سالیدیتی و برنامه نویسی بلاکچین رو هدیه بگیری . اگر هنوز مطمئن نیستی که این مسیر رو شروع کنی هم میتونی از مشاوران ما رایگان مشاوره بگیری و هم در بخش مجله سالیدیتی اطلاعات خوبی در مورد سالیدیتی گذاشتیم که میتونه راهنمای خوبی برات باشه. مثلا در مقاله درآمد سالیدیتی و برنامه نویسی بلاکچین با نمونه های واقعی درآمد یک برنامه نویس بلاکچین رو بررسی کردیم.
خب بریم سراغ موضوع مقاله یعنی انواع داده در سالیدیتی ( متغیر در solidity )
انواع داده ها و متغیر ها در زبان سالیدیتی
اگر اطلاعاتی در مورد سالیدیتی و قرارداد های هوشمند ندارید قبل از مطالعه این مقاله توصیه می کنیم مقاله قرارداد هوشمند چیست و مقاله سالیدیتی چیست را مطالعه کنید. در این دو مقاله سعی شده تا به سادگی تمامی مفاهیم بیان شود.
اما اگر با مفاهیم اولیه آشنایی دارید پس همراه ما باشید تا انواع متغیر در سالیدیتی را بررسی کنیم
متغیر ها در سالیدیتی :
قبل از اینکه انواع داده در سالیدیتی را بررسی کنیم باید با مفهوم متغیر یا variable آشنا شویم. متغیر در برنامه نویسی در واقع یک مکان در حافظه است . متغیر ها شامل یک نام نمادین یا شناسه و یک مقدار (عدد، متن ، زمان و . . . ) می باشند . اگر در برنامه نویسی تازه کار هستید و متوجه این مفاهیم نشدید نگران نباشید – تا انتهای مقاله را دنبال کنید
انواع متغیر در solidity
ما از متغیر ها برای ذخیره اطلاعات مختلف در برنامه استفاده می کنیم. انواع متغیر در سالیدیتی به شکل زیر است :
- Value Types
- Booleans
- Integers
- Fixed Point Numbers
- Addresses
- Contract Types
- Fixed-size Byte Arrays
- Dynamically-Sized Byte Array
- Rational and Integer Literals
- Enums
- Function Types
- Reference Types
- Data Location and Assignment Behavior
- Arrays
- Allocating Memory Arrays
- Array Literals
- Array Members
- Structs
- Mapping Types
- Operators Involving LValues
- delete
- Conversions Between Elementary Types
- Implicit Conversions
- Explicit Conversions
- Conversions Between Literals and Elementary Types
- Integer Types
- Fixed-Size Byte Arrays
برای درک بهتر متغیر ها و نحوه تعریف آنها به مثال زیر توجه کنید :
bool public myBool = true;
int public myInt = 1;
در مثال بالا myInt یا myBool نام متغیر، bool یا int نوع متغیر و مقداری که بعد از تساوی قرار گرفته است (1 یا true) مقدار متغیر است. در نظر داشته باشید که هر نوع متغیر برای ذخیره نوع خاصی از اطلاعات بکار می رود برای مثال متغیر از نوع unit فقط می تواند مقادیر اعداد صحیح غیرمنفی را در خود ذخیره کند و یا متغیر int می تواند اعداد مثبت یا منفی را در خود ذخیره کند.
در سالیدیتی، unit نامی مستعار برای unit256 است که به معنای یک عدد صحیح بدون علامت 256 بیتی می باشد. البته شما می توانید units را با بیت های کمتری همچون unit32 – unit16 – unit8 نیز تعریف کنید.
سه دسته کلی متغیرها در سالیدیتی
از انواع متغیر در سالیدیتی می توان در قراردادهای هوشمند استفاده کرد. ۳ دسته از انواع متغیر ها عبارتند از:
State Variable
Local Variable
Global Variable
State Variable در سالیدیتی
این دسته از متغیر ها به صورت سراسری تعریف می شوند از ویژگی های این دسته از متغیر ها می توان به موارد زیر اشاره کرد :
- در بلاکچین ذخیره می شوند
- خارج از تابع ذخیره می شوند
Loacal Variable در سالیدیتی
این نوع از متغیر ها موقتی هستند و دارای ویژگی های زیر می باشند :
- موقتی هستند
- در بلاکچین ذخیره نمی شوند
Global Variable در سالیدیتی
این دسته از متغیر ها همانطور که از اسم آنها مشخص است سراسری هستند مثل tx , msg, block که هرکدام از این متغیر ها در تمام توابع و قرارداد ها در دسترس هستند و از طریق آنها می توان اطلاعاتی همچون بلاک فعلی، تراکنش، فرستنده تراکنش و . . . را به دست آورد/
دسته آخر از متغیر ها در سالیدیتی نیز دارای ویژگی های خاصی هستند از جمله :
- همگانی هستند
- در تمام توابع قرارداد در دسترس هستند
- در تمام کتابخانه ها و قرارداد ها در دسترس هستند
متغیر Block در سالیدیتی
این متغیر تمام اطلاعات مرتبط با یک بلاک را برای ما فراهم می کند.با استفاده از این متغیر می توانیم به جزئیات بلوک فعلی که تراکنش فعلی در آن اجرا می شود را در دسترس داریم.
نمونه ای از متغیرهای Block به شرح زیر می باشد.
- coinbase
- difficulty
- gaslimit
- number
- timestamp
متغیر msg در سالیدیتی
متغیر msg یکی از پرکاربردترین متغیرها در سالیدیتی می باشد که اطلاعات مرتبط با فرستنده تراکنش و برخی داده های تراکنش را فراهم می کند.از مهم ترین نمونه های متغیر msg می توان به data – sender – value اشاره نمود.
متغیر tx در سالیدیتی
متغیر tx اطلاعات مرتبط با تراکنش را برای ما فراهم می کند.از مهم ترین نمونه های متغیر tx می توان به gasprice و origin (آدرس ارسال کننده) اشاره نمود.
انواع داده در سالیدیتی (Data Type) :
در برنامه نویسی سالیدیتی نیز همچون سایر زبان های برنامه نویسی، می توان داده ها را به دو گروه عمده تقسیم کرد، انواع داده در سالیدیتی به شکل زیر است:
1- تایپ های مرجع (Reference types)
2- تایپ های ارزشی (Value types)
داده های نوع ارزشی (Value types) در سالیدیتی :
داده های نوع ارزشی انواعی از داده ها هستند که می توانند اطلاعات و داده ها را مستقیما در حافظه ی متعلق به خود حفظ و ذخیره کنند. این نوع متغیرها همواره با value ارسال می شوند، بدین معنا که اگر زمانی به متغیر دیگری نسبت داده یا به تابعی مستقل انتقال داده شوند، همواره کپی خواهند شد.
تایپ هایی که در ادامه به آن اشاره خواهیم کرد، از انواع تایپ های ارزشی (Value types) هستند. این تایپ ها عبارتند از:
- بولین ها: (Booleans)
- اعداد صحیح: (Integers)
- اعداد صحیح بدون علامت: (Unsigned integers)
- آدرس ها: (Addresses)
- بایت های آرای (arrays) با اندازه ی ثابت ( از بایت 1 الی 32) :Fixed-siza byte arrays (bytes1 to bytes32)
- اعداد نقاط ثابت: (Fixed point numbers)
* البته اعداد نقاط ثابت هنوز به طور کامل در زبان سالیدیتی پشتیبانی نمی گردند. در ادامه به توضیح یک به یک این تایپ ها خواهیم پرداخت:
بولین ها (Booleans) در سالیدیتی :
بولین ها شامل دو مقدار درست (true) یا نادرست (false) هستند. سالیدیتی از تمام اپراتورهای معمول بولین ها همچون !, &&, == و غیره پشتیبانی می کند.
اعداد صحیح باعلامت و بدون علامت (Signed and unsigned integers) :
همانطور که اندکی پیش اشاره کردیم، اعداد صحیحی که همراه با علامت هستند با متغیر int تعریف می شوند. اعداد صحیح بدون علامت نیز با کلمه ی کلیدی unit تعریف می گردند؛ و نقطه ی اشتراک بین این دو متغیر این است که هر دوی آن ها به طور پیش فرض 32 بایت را اشفال می کنند. اگر مطمئن هستید که متغیر شما هرگز به این مقدار بایت اشغال نخواهد کرد، می توانید آن را صریحا مشخص کرده و تعداد بیت ها را کمتر تعیین کنید.
آدرس ها (Addresses) در سالیدیتی :
صحبت درباره ی آدرس ها کمی مشکل تر است. در برنامه نویسی با زبان سالیدیتی دو نوع آدرس وجود دارد:
- آدرس هایی که دارای مالکیت خارجی (EOA) هستند
- آدرس هایی که قراردادی اند
آدرس های EOA آدرس هایی به حساب اتریوم هستند. برای آن که کمی واضح تر بتوانید این مطلب را درک کنید، می توانیم آدرس های دارای مالکیت خارجی EOA را به صندوق ایمیل گوگل یا یاهو تشبیه کنیم که بخشی به نام صندوق ورودی ایمیل دارد. آدرس های EOA تا حد بسیاری شبیه صندوق ورودی ایمیل هاست. شما می توانید از این آدرس برای ارسال و یا دریافت وجه بهره ببرید.اما در خصوص آدرس های قراردادی چطور؟
مطالب ذکر شده در بالا لزوما درباره ی آدرس های قراردادی صدق نمی کنند. آدرس های قراردادی در واقع با یک قرارداد هوشمند مرتبط هستند که به منظور ارسال وجه به آن قرارداد یا دریافت وجه از آن استفاده می شود. وجه اشتراک این دو نوع آدرس این است که هردوی آن ها در قالب آدرسی هگزادسیمال ۴۲ کارکتری هستند. اما پرسش اینجاست که این آدرس ها از چه چیزی مشتق شده اند؟
اگر آدرسی از نوع آدرس دارای مالکیت خارجی (EOA) باشد، توسط 20 بایت اول کلیدی خویش کنترل می شود؛ اما اگر آدرس ما از نوع آدرس های قراردادی باشد، از 20 بایت اولی که قرارداد را اجرا می کند مشتق گشته است.
جمع بندی پایانی:
اگر به دنبال یادگیری سالیدیتی هستید قبل از هر گونه تصمیم پیشنهاد می کنیم ابتدا با مشاوران ما صحبت کنید تا بتوانید دید روشنی از آینده خودتان در این حرفه پیدا کنید شاید به دلیل شرایطی که دارید این حرفه مناسب شما نباشد و شاید بهترین تصمیم زندگی تان را بتوانید امروز بگیرید.
پاسخ به این ابهامات بعد از مشاوره با کارشناسان ما برای شما آسان خواهد بود.
ما را در اینستاگرام دنبال کنید
دیدگاهتان را بنویسید