در این بخش، با اصول اولیه زبان سالیدیتی آشنا میشویم؛ از انواع دادهها و متغیرها گرفته تا عملگرها، دستورات شرطی و حلقهها. این مباحث پایه و اساس نوشتن قراردادهای هوشمند حرفهای را تشکیل میدهند.
سالیدیتی از انواع دادههای پایهای و پیچیده پشتیبانی میکند. در ادامه مهمترین آنها را بررسی میکنیم:
1. uint و int
uint (Unsigned Integer): عدد صحیح مثبت
مثال: uint age = 25;
int (Signed Integer): عدد صحیح با علامت (مثبت و منفی)
مثال: int temperature = -10;
سالیدیتی از انواع خاصتری مثل uint8, uint256, int128 نیز پشتیبانی میکند که نشاندهنده اندازه بیت هستند.
2. address
برای ذخیره آدرسهای کیف پول در بلاکچین استفاده میشود.
مثال:
address public owner = msg.sender;
3. bool
مقدار بولین (درست یا نادرست):
bool isActive = true;
4. string
برای ذخیره رشتههای متنی استفاده میشود.
مثال:
string public name = "Solidity";
5. bytes
برای دادههای باینری. bytes32 نوع رایج آن است و برای هشها یا دادههای رمزنگاریشده کاربرد دارد.
متغیرهایی هستند که در بلاکچین ذخیره میشوند و وضعیت قرارداد را نگه میدارند. این متغیرها در خارج از توابع تعریف میشوند و بخشی از "State" قرارداد هستند.
مثال:
contract Example {uint public count = 0;}
در داخل توابع تعریف میشوند و فقط در زمان اجرای تابع در حافظه موقتی وجود دارند. در بلاکچین ذخیره نمیشوند و مصرف gas کمتری دارند.
مثال:
function add(uint a, uint b) public pure returns (uint) {
uint sum = a + b;
return sum;
}
1. constant
مقداری که از ابتدا تعیین شده و هرگز تغییر نمیکند.
استفاده از constant باعث صرفهجویی در گس میشود.
مثال:
uint constant VERSION = 1;
2. immutable
فقط یکبار مقداردهی میشود، آن هم در constructor، و پس از آن قابل تغییر نیست.
مثال:
address immutable owner;constructor() {owner = msg.sender;}
عملگرهای ریاضی:
+ جمع
- تفریق
* ضرب
/ تقسیم
% باقیمانده
عملگرهای مقایسهای:
== مساوی
!= نامساوی
< کوچکتر
> بزرگتر
<= کوچکتر مساوی
>= بزرگتر مساوی
عملگرهای منطقی:
&& و
|| یا
! نقیض
ساختار شرطی:
function isAdult(uint age) public pure returns (bool) {if (age >= 18) {return true;} else {return false;}}
1. for loop:
برای تکرار با تعداد مشخص.
function sumToTen() public pure returns (uint) {uint sum = 0;for (uint i = 1; i <= 10; i++) {sum += i;}return sum;}
2. while loop:
تا زمانی که شرط برقرار است، اجرا میشود.
function countDown(uint start) public pure returns (uint) {uint count = 0;while (start > 0) {count++;start--;}return count;}
3. do-while loop:
حداقل یکبار اجرا میشود، حتی اگر شرط برقرار نباشد.
function doExample(uint x) public pure returns (uint) {uint sum = 0;do {sum += x;x--;} while (x > 0);return sum;}
نکته مهم : در سالیدیتی استفاده زیاد از حلقهها میتواند منجر به افزایش مصرف گس یا حتی شکست تراکنش شود. حتماً قبل از دیپلوی، پیچیدگی حلقهها را بررسی کنید.
در این آموزش با انواع دادههای پایه، تفاوت متغیرهای حالت و محلی، تعریف ثابتها و متغیرهای ایمیوتیبل، عملگرها و ساختارهای شرطی و حلقهها در سالیدیتی آشنا شدیم. این مفاهیم پایه برای ساخت قراردادهای هوشمند کاربردی و حرفهای حیاتی هستند.