سالیدیتی (Solidity) یک زبان برنامه نویسی typed language است.
برخلاف زبان هایی مانند جاوااسکریپت (JavaScript) یا پایتون (Python) که در آنها میتوانید هر نوع دادهای مثل مقدار بولی (boolean)، رشته (string) یا عدد (number) را به یک متغیر اختصاص دهید، در سالیدیتی هر متغیر باید فقط یک نوع داده مشخص داشته باشد و این نوع نیز باید به طور صریح تعریف شود.
آموزش انواع داده با اندازه ثابت در سالیدیتی
این قاعده برای توابع نیز برقرار است؛ یعنی هنگام تعریف یک تابع، باید نوع آرگومانها و نوع مقدار بازگشتی را دقیقاً مشخص کنید.
در ادامه به مهمترین انواع داده در سالیدیتی میپردازیم:
-
عدد صحیح بدون علامت یا
uint256
-
متغیر بولی یا
bool
-
نوع
address
که برای نگهداری آدرس کیف پولهای اتریوم یا قراردادهای هوشمند به کار میرود
سالیدیتی همچنین از آرایهها (arrays)، رشتهها (strings)، ساختارها (structs) و انواع داده دیگری نیز پشتیبانی میکند که هرکدام نیازمند توضیحات جداگانه هستند و در ادامه به آنها خواهیم پرداخت.
اکنون بیایید سه تابع مختلف را بررسی کنیم که هر یک از این نوع دادهها را بازمیگردانند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
contract ExampleContract { function getANumber() public pure returns (uint256) { uint256 x = 1; return x; } function getABoolean() public pure returns (bool) { bool y = true; return y; } function getAnAddress() public pure returns (address) { // Vitalik Buterin's address address z = 0xd8da6bf26964af9d7eed9e03e53415d37aa96045; return z; } function getAnotherAddress() public pure returns (address) { // address of the USDC stablecoin address z2 = 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48; return z2; } } |
در مثالهای قبلی، ابتدا مقدار مورد نظر را به یک متغیر اختصاص دادیم و سپس آن را بازگرداندیم. البته در سالیدیتی این امکان وجود دارد که مقدار را مستقیماً بازگردانیم، مانند مثال زیر.
1 2 3 4 5 6 |
function getAddress() public pure returns (address) { return 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48; } |
توجه داشته باشید که تعریف تابع (Function Signature) باید دقیقاً با نوع دادهی بازگشتی (Return Type) مطابقت داشته باشد. در غیر این صورت، کامپایلر هنگام بررسی کد با خطا مواجه خواهد شد. مانند کد زیر:
1 2 3 4 5 6 |
function getAddressFail() public pure returns (bool) { return 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48; } |
Address (آدرس)
در سالیدیتی، نوع دادهی address
به صورت یک رشتهی هگزادسیمال (hexadecimal) با طول ۴۰ کاراکتر نمایش داده میشود که همیشه با پیشوند 0x
شروع میشود. رشتهی هگزادسیمال معتبر فقط میتواند شامل اعداد ۰ تا ۹ و حروف a تا f باشد.
هشدار: هنگام وارد کردن دستی آدرسها باید دقت زیادی داشته باشید. سالیدیتی مقدار 0x1
را به صورت خودکار به آدرسی تبدیل میکند که برابر است با 0x0000000000000000000000000000000000000001
. اگر آدرسی که وارد میکنید کمتر از ۴۰ کاراکتر داشته باشد، سالیدیتی بهطور خودکار با اضافه کردن صفرهای پیشوندی (leading zeros) آن را به ۴۰ کاراکتر میرساند.
در مقابل، اگر آدرسی با بیش از ۴۰ کاراکتر وارد کنید، کد شما به هیچ عنوان کامپایل نخواهد شد.
توجه داشته باشید که این ۴۰ کاراکتر فقط به بخش هگزادسیمال مربوط است و پیشوند 0x
جزو آن حساب نمیشود.
uint256 (عدد صحیح بدون علامت ۲۵۶ بیتی)
بیایید دوباره به نوع دادهی uint256
نگاه کنیم. دقیقاً چه مفهومی دارد؟
حرف u
در ابتدای uint
مخفف unsigned است، به این معنا که این نوع داده نمیتواند اعداد منفی را نمایش دهد. عدد 256
نشان میدهد که این متغیر میتواند عددی به بزرگی ۲۵۶ بیت را در خود ذخیره کند، یا به عبارت دیگر، مقادیری بین ۰ تا (2^256)-1 را پشتیبانی میکند.
برای اینکه ابعاد این عدد را بهتر درک کنیم، میتوانیم مقدار آن را در پایتون محاسبه کنیم و ببینیم چقدر بزرگ است.
1 2 |
>>> pow(2,256) - 1 115792089237316195423570985008687907853269984665640564039457584007913129639935 |
این عدد به قدری بزرگ است که تقریباً تمام نیازهای شما در بلاکچین را پوشش میدهد.
چنین عددی بدون مشکل در سالیدیتی کامپایل میشود.
1 2 3 4 5 6 |
function getBiggestNumber() public pure returns (uint256) { return 115792089237316195423570985008687907853269984665640564039457584007913129639935; } |
اما اگر عددی بزرگتر از این مقدار تعریف کنید، کد شما کامپایل نخواهد شد.
همانطور که میتوانید حدس بزنید، یک متغیر از نوع uint128
میتواند عددی بدون علامت (مثبت) تا حداکثر مقدار 2^128 – 1 را در خود ذخیره کند.
در بیشتر موارد، بهتر است تنها از uint256
استفاده کنید. استفاده از انواع کوچکتر مانند uint64
یا uint128
مربوط به مباحث پیشرفتهتر است. فعلاً توصیه میشود برای سادهتر بودن و جلوگیری از بروز مشکلات، فقط از uint256
استفاده کنید.
نوع داده بولی (Boolean) در سالیدیتی
این بخش کاملاً ساده و مشابه سایر زبانهای برنامه نویسی است.
یک متغیر بولی (bool) فقط میتواند یکی از دو مقدار true
(درست) یا false
(نادرست) را در خود نگهداری کند. اگر درباره آموزش انواع داده با اندازه ثابت در برنامه نویسی سالیدیتی سوالی داشتید می توانید در بخش نظرات مطرح نمایید.
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۸ اردیبهشت ۱۴۰۴
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- دوره های تخصصی برنامه نویسی
- رپورتاژ
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره آموزش Go
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس