توابع modifiers در سالیدیتی solidity
اصلاح کننده توابع در سالیدیتی Modifiers چیست؟
توابع modifiers در سالیدیتی یا solidity function modifiers نوعی از توابع هستند که برای ایجاد تغییر یا محدود کردن رفتار توابع دیگر به کار رفته در یک قرارداد هوشمند، کاربرد دارند. یکی از اصلیترین کاربردهای Modifier در solidity را میتوان استفاده از آن برای بررسی یک شرط یا شرایط اجرای توابع به صورت خودکار، قبل از اجرای آن تابع دانست. حال اگر شرط یا شرایط موردنظر برای اجرای تابع انجام نشود و پیشنیازهای انجام قرارداد برآورده نشود، اجرای تابع خودبهخود متوقف میشود.
مواردی مانند بررسی موجودی یک حساب، تایید هویت فرستنده، نیاز به دسترسی به یک حساب از جمله مواردی است که میتوانید به عنوان نمونه قبل از اجرای یک تابع توسط توابع modifiers در سالیدیتی انجام دهید.
قبل از مطالعه کامل مقاله “توابع modifiers در سالیدیتی solidity” پشنهاد میکنیم مقالات دیگر حوزه دوره آموزش سالیدیتی را هم مطالعه کنید.
Mapping در قرارداد هوشمند Solidity
تابع بازگشتی Fallback Function در سالیدیتی
توسعه قرارداد هوشمند در محیط ریمیکس Remix
حلقه های تکرار در سالیدیتی Solidity Loop
دستور Enums در برنامه نویسی سالیدیتی
رویدادها Events در برنامه نویسی Solidity
سالیدیتی زبانی برای توسعه قراردادهای هوشمند
زبان برنامهنویسی سالیدیتی Solidity نوعی از زبان برنامهنویسی شیگرا (OOP) است که در ایجاد قراردادهای هوشمند در بلاک چین اتریوم و به تدریج در سایر بلاک چینها از آن استفاده میشود. سالیدیتی شباهت زیادی به زبان برنامهنویسی شناخته شده و محبوب جاوا اسکریپت دارد و برای کسانی که با این زبان برنامهنویسی آشنا هستند، استفاده از سالیدیتی نیز بسیار راحت خواهد بود.
سالیدیتی یک زبان برنامهنویسی استاتیک تایپ است که از وراثت، کتابخانهها و انواعی از توابع که توسط کاربر تعریف میشود، پشتیبانی میکند. یکی از این توابع پیچیده را با نام اصلاح کننده توابع در سالیدیتی میشناسیم که در ادامه به معرفی بیشتر آن خواهیم پرداخت.
معرفی تابع Modifier در solidity
در واقع هدف از استفاده اصلاح کننده توابع در سالیدیتی تغییر دادن رفتار تابع اصلی است که به آن متصل است. توابع modifiers در سالیدیتی خود توابعی هستند که بر روی توابع دیگر اعمال میشوند و میتوان آنها را هم قبل و هم بعد از اجرای کدهای آن تابع اجرا کرد. به این صورت که ابتدا تابع اصلاح کننده و سپس تابع اصلی را اجرا کرد و یا ابتدا تابع اصلی و سپس تابع اصلاح کننده را اجرا کرد. کد ویژهای که فقط در تابع modifiers استفاده میشود به شکل “;_” است، این کد در واقع فرمان اجرای تابع اصلاح کننده را برای سالیدیتی صادر میکند و ادغام این کد با منبع تابع در “;_” اجرا شدن آن قبل یا بعد از تابع اصلی را نشان میدهد.
ساختار اصلی توابع modifiers در سالیدیتی solidity
اصلاح کننده توابع در سالیدیتی بسیار مفید و کاربردی هستند زیرا افزونگی کد را کاهش میدهند. اگر شرایط یکسانی را در قرارداد هوشمند خود بررسی میکنید، میتوانید از یک اصلاح کننده در چندین عملکرد مجدد استفاده کنید.
این توابع اصلاح کننده، بلوکهای کد با قابلیت چند بار استفاده و اتصال به یک یا بیشتر از یک تابع در یک قرارداد هوشمند مشخص هستند. تصویر زیر یک نمونه از کارکرد تابع اصلاح کننده همراه با ساختار پایه قرارداد هوشمند و قابلیت استفاده چندباره در آن را نشان میدهد.
کاربرد توابع اصلاح کننده
نماد ;_ در توابع modifiers در سالیدیتی
این نماد که علامت ادغام (merge wildcard) نامیده میشود کد ویژه تابع اصلاح کننده در سالیدیتی است که کد تابع را با کد اصلاح کننده ادغام میکند. به عبارت دیگر، بدنه تابع (که اصلاح کننده به آن متصل است) در جایی که نماد ویژه ;_ در تعریف اصلاح کننده ظاهر میشود، گنجانده خواهد شد. یک تابع اصلاح کننده باید نماد ;_ را به منظور اجرا در بدنه خود داشته باشد و این اجباری است.
چه زمانی از یک تابع اصلاح کننده در Solidity استفاده می کنیم؟
همانطور که در ابتدا هم گفتیم مهمترین و اصلیترین مورد استفاده یک تابع اصلاح کننده در بررسی خودکار یک شرط و آن هم قبل از اجرای یک تابع است. در این صورت اگر این تابع اصلی، شرایطی که در تابع اصلاح کننده خواسته شده است را برآورده نکند اجرای آن تابع متوقف خواهد شد. اما در موارد دیگری هم مانند ایجاد محدودیت برای دسترسیها، اعتبارسنجی دادههای ورودی و محافظت از reentrancy hack یا حمله ورود مجدد، که امنیت قرارداد هوشمند را به خطر میاندازد نیز میتوان از آنها استفاده کرد.
چگونه یک تابع Modifier در solidity ایجاد کنیم؟
توابع اصلاح کننده را میتوان به صورت زیر ایجاد یا اعلام کرد (declared):
1 2 3 |
modifier MyModifier { // modifier code goes here... } |
شما میتوانید یک تابع اصلاح کننده را با آرگومان یا بدون آرگومان بنویسید. اگر اصلاح کننده آرگومان ندارد، میتوانید پرانتز () را حذف کنید.
1 2 3 4 5 6 7 |
modifier ModifierWithArguments(uint a) { // ... }modifier ModifierWithoutArguments() { // ... }modifier ModifierWithoutArguments { // ... } |
سخن آخر
یکی از ویژگیهای زبان برنامهنویسی سالیدیتی، اصلاح کنندهها و یا کاملتر بگوئیم توابع اصلاح کننده (FUNCTION MODIFIRE) هستند. در واقع هر زمان که شرایط یک تابع برقرار شود آن تابع شروع به اجرا میکند اما تغییر شرط یا شروطی از یک تابع در بین چندهزار کد بر عهده توابع modifiers در سالیدیتی است. زبان برنامهنویسی سالیدیتی با این ویژگی اصلاح کننده خود میتواند شرط تابع را به راحتی تغییر دهد تا در نتیجه این تغییر، موجب تغییر رفتار تابع اصلی شود.
بیشترین استفاده زبان برنامهنویسی سالیدیتی در ایجاد قراردادهای هوشمند است که در دنیای کرپتوکارنسی استفاده میشود. امروزه با گسترش ارزهای دیجیتال و پیدایش پروژههای تازه در این دنیای بزرگ و پیچیده ارزهای دیجیتال، یادگیری و تسلط به زبان برنامهنویسی سالیدیتی بسیار ارزشمند است.
منابع معتبر مرتبط:
https://www.geeksforgeeks.org/solidity-function-modifiers
https://medium.com/coinmonks/solidity-tutorial-all-about-modifiers
مطالب زیر را حتما مطالعه کنید
بررسی رفتار توابع View و Pure در سالیدیتی Solidity
توابع Payable در قراردادهای هوشمند Solidity
سالیدیتی Solidity چیست؟
سطح دسترسی Visibility در سالیدیتی Solidity
توابع Function در سالیدیتی Solidity
انواع حافظه در قرارداد هوشمند سالیدیتی
7 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
خیلی محتوای خوبی بود مهندس
خیلی محتوای کامل و عالی بود
منابع این مطلب کجاست؟
شما پیج اینستا هم دارین؟
مقالاتتون عالین واقعا!
مطلبتون بسیار مفید بود
مثل همیشه عالی و کاربردی