در این مقاله با مفهوم متغیرهای تغییر ناپذیر (Immutable Variables) در سالیدیتی آشنا میشویم و یاد میگیریم چگونه با تعریف صحیح آنها، امنیت و کارایی قراردادهای هوشمند را افزایش دهیم.
متغیرهای تغییر ناپذیر در سالیدیتی چیست؟
در سالیدیتی، متغیرهای تغییر ناپذیر با کلیدواژه immutable
تعریف میشوند و تنها یکبار مقداردهی میشوند، آنهم در زمان اجرای تابع سازنده (constructor). پس از مقداردهی اولیه، دیگر امکان تغییر مقدار آنها در هیچ بخش دیگری از قرارداد هوشمند وجود ندارد. این نوع متغیرها برای مواقعی مناسب هستند که میخواهید مقداری را فقط یکبار مشخص کنید، اما این مقدار در زمان کامپایل در دسترس نیست (بر خلاف متغیرهای constant
).
در صورت تلاش برای تغییر مقدار یک متغیر immutable پس از مقداردهی اولیه، کامپایلر سالیدیتی با خطا مواجه شده و از اجرای آن جلوگیری میکند. این ویژگی در طراحی قراردادهایی که به پایداری و تغییرناپذیری اطلاعات نیاز دارند بسیار مفید است.
آموزش متغیرهای تغییر ناپذیر در سالیدیتی
اگر قصد ندارید مقدار یک متغیر را در طول عمر قرارداد تغییر دهید، بهتر است این موضوع را بهطور صریح در کد مشخص کنید. سالیدیتی برای این منظور از کلیدواژه immutable
استفاده میکند.
1 2 3 4 5 6 7 8 |
contract ExampleContract { string immutable public name; constructor(string memory _name) { name = _name; } } |
immutable
تعریف کنید.
در این صورت، کامپایلر جلوی هرگونه تلاش برای تغییر مقدار آن را بعد از ساخت قرارداد خواهد گرفت.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
contract ExampleContract { string immutable public name; constructor(string memory _name) { name = _name; } // ERROR: Cannot compile function cannotChangeTheName(string calldata _newName) external { name = _newName; } } |
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۱۷ اردیبهشت ۱۴۰۴
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- دوره های تخصصی برنامه نویسی
- رپورتاژ
- فیلم های آموزشی
- ++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
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس