آنچه در این مقاله میخوانید [پنهانسازی]
در زبان سالیدیتی، توابع view و pure برای بهینهسازی قراردادهای هوشمند به کار میروند. این توابع به کمک توسعهدهندگان میآیند تا رفتار تابع را مشخص کرده و بهینهسازیهای لازم را اعمال کنند. در زیر به بررسی هر یک از این توابع و نقش توابع View و Pure در بهینهسازی قراردادهای هوشمند میپردازیم.
سرفصل های مقاله
۱. تابع View
تابع view به توابعی اطلاق میشود که اجازه دارند دادههای وضعیت قرارداد را بخوانند ولی نمیتوانند آنها را تغییر دهند. با استفاده از این نوع توابع میتوانیم بهینهسازیهای زیر را اعمال کنیم:
- عدم هزینههای گاز برای تغییر وضعیت: توابع view هیچ هزینه گازی برای عملیات نوشتن در بلاکچین ندارند. این بدان معناست که اگر فقط نیاز به خواندن داده داشته باشید، میتوانید از توابع view استفاده کنید و در نتیجه هزینههای تراکنش را کاهش دهید.
- بهبود کارایی: توابع view میتوانند بهسرعت اجرا شوند زیرا آنها به حالت بلاکچین نیاز ندارند و فقط به وضعیت داخلی قرارداد در بلاک چین دسترسی دارند.
مثال:
function getBalance() public view returns (uint) {
return balance;
}
۲. تابع Pure
توابع pure نسبت به توابع view محدودتر هستند. این توابع نه تنها نمیتوانند وضعیت قرارداد را تغییر دهند، بلکه به دادههای وضعیت نیز دسترسی ندارند. از مزایای توابع pure میتوان به موارد زیر اشاره کرد:
- بهینهسازی کارایی: توابع pure حتی سریعتر از توابع view هستند زیرا به صورت کامل از وضعیت قرارداد مستقل هستند. این عمل باعث میشود که تراکنشها با سرعت بیشتری انجام شوند و هزینه گاز نیز کاهش یابد.
- خوانایی کد: استفاده از توابع pure میتواند به خوانایی کد کمک کند و نشان دهد که تابع هیچگونه وابستگی به وضعیت قرارداد ندارد، که میتواند به فهم بهتر منطق کد کمک کند.
مثال:
function add(uint a, uint b) public pure returns (uint) {
return a + b;
}
نتیجه گیری
نقش توابع View و Pure در قراردادهای هوشمند سالیدیتی میتواند تأثیر قابل توجهی بر کارایی، هزینه گاز و خوانایی کد داشته باشد. با انتخاب درست بین این دو نوع توابع، توسعهدهندگان میتوانند تجربه بهتری برای کاربران خود فراهم کنند و هزینههای عملیاتی خود را کاهش دهند.
به طور کلی، اگر فقط به دادههای وضعیت نیاز دارید، از توابع view استفاده کنید. اگر به محاسبات ساده نیاز دارید که هیچ وابستگی به وضعیت قرارداد ندارند، از توابع pure بهره ببرید.