بررسی رفتار توابع View و Pure در سالیدیتی(solidity)
View و Pure در سالیدیتی
توابع View و Pure و payable در سالیدیتی رفتار توابع را مشخص می کنند. اگر رفتار یک تابع به طور پیش فرض مشخص نشده باشد، این تابع می تواند وضعیت بلاکچین را بخواند و تغییر دهد. توابع مشاهده(view) تابع فقط خواندنی هستند و وضعیت بلاکچین را تغییر نمی دهند (مشاهده داده ها در بلاکچین). توابع خالص(pure) نمی خوانند و وضعیت بلاکچین را تغییر نمی دهند.
تمام دادههایی که در تابع pure استفاده می شوند، یا به تابع پاس داده می شوند و یا در محدوده توابع تعریف میشوند. توابع قابل پرداخت(payable) مکانیزمی برای دریافت وجوه در قرارداد شما فراهم می کند. توابع قابل پرداخت با کلمه کلیدیpayable تعریف می شوند.
1- توابع مشاهده(view)، توابع فقط خواندنی هستند و وضعیت بلاکچین را تغییر نمی دهند. به عبارت دیگر اگر می خواهید داده ها را از بلاکچین بخوانید می توانید از view استفاده کنید. متد دریافت کننده به طور پیش فرض توابع view هستند. این توابع در موارد زیر استفاده نمی شوند:
- برای نوشتن متغیرهای حالت- به روز رسانی بلاکچین
- انتشار eventها
- ایجاد یک قرارداد و یا تخریب آن(self destruct)
- ارسال اتر
pragma solidity ^0.7.0;
contract viewSample {
//view is specified and function reads data from block chain
function getBlock() public view returns (uint){
uint blocknumber = block.number;
return blocknumber;
}
}
2- توابع خالص(pure) محدودتر از توابع view هستند و حالت را تغییر نمی دهند و وضعیت بلاکچین را نمی خوانند. این توابع در موارد زیر استفاده نمی شوند:
- خواندن متغیرهای حالت – خواندن از بلاکچین
- دسترسی به موجودی ها
- توابع call نمی توانند از نوع pure باشند
pragma solidity ^0.7.0;
contract pureSample {
//pure is specified
//this functions is only concerned about the variables and arithmetic in this function
function getResult() public pure returns(uint sum){
uint a = 5;
uint b = 7;
sum = a + b;
}
}
مقایسه توابع pure و view
DEFAULT (NOT SPECIFIED IN FUNCTION) | VIEW | PURE | |
---|---|---|---|
Ideal For | تراکنش هایی که داده ها را در بلاکچین تغییر می دهند | توابع دریافت کننده برای مشاهده داده ها در بلاکچین | در محدوده عملکرد تعریف شده است و داده ها را در بلاکچین تغییر نمی دهد یا مشاهده نمی کند |
Data Access | read / write | read | None |
Transaction Type | Send | Call | Call |
در صورتی که تجربه خاصی در خصوص برنامهنویسی ندارید میتوانید از دورههای رایگان سایت ما “فرازمان“، استفاده کنید. همچنین اگر به دورههای پیشرفتهتری در این خصوص نیاز داشته باشید، ما با آموزش های حرفه ای که در سایتمان قرار دادیم می توانید به سطح دلخواهتان با تلاش و پشتکار برسید.
نقشه راه
راهنما آکادمی فرازمان
برای یادگیری برنامه نویسی بلاکچین…
در این باره بیشتر بخوانید
دیدگاهتان را بنویسید