وبلاگ

انواع داده ها و متغیرها در زبان برنامه نویسی سالیدیتی

متغیر ها در سالیدیتی
سالیدیتی مقالات آموزشی

انواع داده ها و متغیرها در زبان برنامه نویسی سالیدیتی

شاید عبارت قراردادهای هوشمند به گوش تان آشنا باشد. این عبارت اصطلاحی است که به برنامه هایی اطلاق می شود که بر روی بلاک چین اتریوم قرار دارند. با بهره از این قراردادهای هوشمند می توان برنامه هایی غیرمتمرکز طراحی کرد که بدون نیاز به واسطه، کنترل انسانی و یا روی دادن وقفه ای در عملکرد اصلی اش، به فعالیت خود در بازه ی زمانی  نامحدود ادامه دهند. زبان برنامه نویسی سالیدیتی (solidity) نوعی زبان مخصوص برای اتریوم است که به منظور طراحی قراردادهای هوشمند می توان از آن بهره برد. در این مقاله می خواهیم به بررسی انواع داده و متغیرها در زبان برنامه نویسی سالیدیتی بپردازیم. با ما همراه شوید.

آشنایی با زبان برنامه نویسی سالیدیتی:

برای تثبیت و حفاظت از بلاک چین عمومی، کدهای طراحی شده برای شبکه باید دارای سطوحی بالا از ایمنی و امنیت باشند. در واقع زبان برنامه نویسی می تواند امنیت شبکه ی بلاک چین را تضمین کند. قراردادهای اتریوم نیز همچون سایر برنامه های کامپیوتری با یک زبان برنامه نویسی نوشته می شوند. این زبان برنامه نویسی برای اتریوم، سالیدیتی است؛ البته از یاد نبرید که سالیدیتی تنها انتخاب ما برای این کار نیست. مسلما برنامه های دیگری نیز وجود دارند که به واسطه ی آن ها می توان تمامی فعالیت های مدنظر برای ایجاد قراردادهای هوشمند در شبکه ی اتریوم را انجام داد، اما زبان برنامه نویسی سالیدیتی امروزه محبوب ترین انتخاب برنامه نویسان و فعالین این حوزه است. علت این امر در این نکته نهفته که زبان سالیدیتی به گونه ای طراحی شده است که یادگیری آن برای کسانی که از پیش با یک یا چند زبان برنامه نویسی آشنایی داشته اند، آسان تر است.

مفاهیم زبان برنامه نویسی سالیدیتی:

بسیاری از مفاهیم زبان سالیدیتی با با مفاهیم سایر زبان های برنامه نویسی مشترک یا دست کم مشابه است. از این مفاهیم می توان به توابع، کلاسها، رشته ها، عملیات های محاسباتی و متغیرها اشاره کرد. متغیرها، کلاس ها و عملکردهای سالیدیتی الهام گرفته از جاوا است. شایان ذکر است که تعریف دقیق هر یک از مفاهیم اشاره شده تا حدی دشوار است، اما اجازه بدهید با چند مثال به بررسی این مفاهیم بپردازیم تا درک مطلب برای شما تسهیل شود.

متغیرها در برنامه نویسی سالیدیتی:

تعریف متغیر در ویکی پدیا:در برنامه‌نویسی، یک متغیر (Variable) یک مکان در حافظه (آدرس حافظه) است که دارای یک نام نمادین با عنوان شناسه (به انگلیسی: Identifier) می‌باشد و می‌تواند حاوی اطلاعات یا یک مقدار معلوم یا مجهول که به آن ارزش (به انگلیسی: Value)گفته می‌شود باشد. به زبان دیگر، متغیر در برنامه‌نویسی به فضایی که برای ذخیره داده‌ها کنار گذاشته شده‌است می‌گویند.

مشاهده  کاربردهای برنامه نویسی سالیدیتی
متغیر ها در سالیدیتی
انواع متغیرها در زبان برنامه نویسی سالیدیتی

از متغیرها جهت ذخیره اطلاعاتی که در یک برنامه ارجاع داده می شود استفاده می کنیم و ساخت یک متغیر جدید به معنای رزرو بخشی از حافظه محسوب می شود.

متغیرهای سالیدیتی برای مدتی نامحدود در قراردادها ذخیره می شوند و این امر بدین معناست که این متغیرها در بلاکچین اتریوم به نگارش درآمده اند.

  1. Value Types
    1. Booleans
    2. Integers
    3. Fixed Point Numbers
    4. Addresses
    5. Contract Types
    6. Fixed-size Byte Arrays
    7. Dynamically-Sized Byte Array
    8. Rational and Integer Literals
    9. Enums
  2. Function Types
  3. Reference Types
    1. Data Location and Assignment Behavior
    2. Arrays
    3. Allocating Memory Arrays
    4. Array Literals
    5. Array Members
    6. Structs
  4. Mapping Types
  5. Operators Involving LValues
    1. delete
  6. Conversions Between Elementary Types
    1. Implicit Conversions
    2. Explicit Conversions
  7. Conversions Between Literals and Elementary Types
    1. Integer Types
    2. Fixed-Size Byte Arrays

به مثال زیر توجه کنید:

مثالی از تعیین متغیر در سالیدتی

unit=نوع متغیر

myCoin=نام متغیر

100=مقدار

در گام اول توجه داشته باشید که unit تنها برای اعداد صحیح غیرمنفی به کار برده می شود، زیرا نوع داده ی unit عدد صحیح بدون علامت است. در این قرارداد که به عنوان نمونه برای شما قرارداده شده است، یک unit تحت عنوان MyCoin تعبیه شده که برابر با 100 است. البته برای اعداد صحیح علامت دار نیز در زبان برنامه نویسی سالیدیتی نوعی داده تعبیه شده که int نامیده می شود.

در سالیدیتی، unit نامی مستعار برای unit256 است که به معنای یک عدد صحیح بدون علامت 256 بیتی می باشد. البته شما می توانید units را با بیت های کمتری همچون unit32 – unit16 – unit8 نیز تعریف کنید.

انواع متغیرها در سالیدیتی

سالیدیتی از انواع متغیرها در قراردادهای هوشمند پشتیبانی می کند.3 نوع از انواع متغیر ها عبارتند از

  • State Variable
  • Local Variable
  • Global Variable

ویژگی های State Variable

  • سراسری تعریف می شوند.
  • پایا هستند
  • باعث تغییر و ضعیت قرارداد می شوند.
  • در بلاکچین ذخیره می شوند
  • خارج از تابع تعریف می شوند

ویژگی های Local Variable

  • موقتی هستند
  • در فضای بلاکچین ذخیره نمی شوند
  • در یک تابع اعلان می شوند
  • به طور موقت برای نگهداری مقادیر می باشد

ویژگی های Global Variable

  • همگانی هستند
  • در تمام توابع قرارداد در دسترس می باشد
  • در تمام قراردادها و کتابخانه ها درد تسرس
  • برای بازیابی اطلاعات مربوط به بلاکچین

در سالیدیتی برخی متغیرها و توابع سراسری وجود دارند همچون block , msg , tx که هرکدام از این متغیرها در تمام توابع قرارداد در دسترس هستند و با استفاده از این متغیرها هر اطلاعاتی مرتبط با بلاک فعلی،تراکنش،فرستنده تراکنش قابل دسترس هستند.این متغیرها و توابع در تمام قراردادها و کتابخانه های سالیدیتی قابل دسترس هستند.

مشاهده  ماشین مجازی اتریوم چیست؟

متغیر 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 تا حد بسیاری شبیه صندوق ورودی ایمیل هاست. شما می توانید از این آدرس برای ارسال و یا دریافت وجه بهره ببرید.اما در خصوص آدرس های قراردادی چطور؟

مطالب ذکر شده در بالا لزوما درباره ی آدرس های قراردادی صدق نمی کنند. آدرس های قراردادی در واقع با یک قرارداد هوشمند مرتبط هستند که به منظور ارسال وجه به آن قرارداد یا دریافت وجه از آن استفاده می شود. وجه اشتراک این دو نوع آدرس این است که هردوی آن ها در قالب آدرسی هگزادسیمال 42 کارکتری هستند. اما پرسش اینجاست که این آدرس ها از چه چیزی مشتق شده اند؟

اگر آدرسی از نوع آدرس دارای مالکیت خارجی (EOA) باشد، توسط 20 بایت اول کلیدی خویش کنترل می شود؛ اما اگر آدرس ما از نوع آدرس های قراردادی باشد، از 20 بایت اولی که قرارداد را اجرا می کند مشتق گشته است.

جمع بندی پایانی:

اگر به دنبال راهی برای یادگیری زبان سالیدیتی هستید، اول از همه بایستی نگاهی منطقی به پیشینه ی مهارتی خود داشته باشید. اگر در گذشته با زبان های برنامه نویسی دیگری کار کردید و با آن ها آشنایی نسبی دارید، یادگیری سالیدیتی برای شما به نسبت آسان تر خواهد بود. امروزه، دنیای رمزارزها و بلاک چین ها بیش از هر زمان دیگری درحال توسعه و گسترش روزافزون است و این امر حقیقتی غیرقابل انکار است. در دنیایی که از رمز ارزها و ارزهای دیجیتال گریزی نیست، بهتر است همگام با توسعه ی جهانی، خویشتن را نیز از اخبار روز جهان مطلع ساخت و در این دنیای سراسر شگفتی گام نهاد. هر زبان برنامه نویسی دارای مفاهیمی مشخص است که طبق چارچوب شکل گیری آن زبان قابل تعریف است. در این مقاله به تعریف دو مفهوم متغیرها (Variable) و دیتا تایپ ها (داده ها)  در زبان برنامه نویسی سالیدیتی پرداختیم.

منبع:راهنمای زبان برنامه نویسی سالیدیتی

دیدگاه خود را اینجا قرار دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

محبوب ترین دوره ها

برچسب های محبوب

Mapping Solidity Inheritance آموزش برنامه نویسی سالیدیتی آموزش سالیدیتی آموزش قرارداد هوشمند اجزای قرارداد هوشمند ارز دیجیتال اتریوم ارز دیجیتال یونی ارزهای متاورسی الگوریتم اثبات کار الگوریتم اجماع امنیت کیف پول اهمیت قرارداد هوشمند اپلیکیشن متمرکز برنامه نویس سالیدیتی برنامه نویسی اتریوم برنامه نویسی بلاکچین برنامه نویسی ریمیکس برنامه نویسی سالیدیتی برنامه نویسی شی‌ گرا برنامه نویسی قرارداد هوشمند بلاکچین بلاک چین اتریوم بهترین ارزهای دیجیتال ترون چیست توسعه دهنده سالیدیتی صرافی های ارزدیجیتال صرافی‌ غیرمتمرکز قرارداد هوشمند قیمت پولکادات متاورس مزایای قرارداد هوشمند نوشتن سیستم رای گیری با سالیدیتی نوشتن قرارداد هوشمند واقعیت مجازی متاورس ویژگی‌های اتریوم پلتفرم های ارزدیجیتال پیش نیاز قرارداد هوشمند کاربرد قرارداد هوشمند کد نویسی سالیدیتی کسب درآمد با قرارداد هوشمند کسب درآمد در متاورس کیف پول ارزدیجیتال کیف پول الکترونیکی کیف پول نرم‌افزاری