وبلاگ

اصلاح کننده توابع در سالیدیتی

اصلاح کننده توابع در سالیدیتی
سالیدیتی

اصلاح کننده توابع در سالیدیتی

توابع modifiers در سالیدیتی برای تغییر یا محدود کردن رفتار یک تابع در یک قرارداد هوشمند استفاده می شود.کاربرد اصلی اصلاح کننده توابع در سالیدیتی بررسی خودکار شرایط قبل از اجرای یک تابع در زبان برنامه نویسی سالیدیتی هست.بدین صورت که اگر شرط برقرار نباشد اجرای تابع متوقف می شود یعنی در صورتی که پیش نیاز ها برقرار باشد دروازه ورود به می توانید از یک اصلاح کننده یا modifiers برای بررسی خودکار یک شرط قبل از اجرای عملکرد استفاده کنید.Modifier ها توابعی هستند که بر روی سایر توابع اعمال می‌شوند و از آنها می‌توان برای چک‌کردن بعضی پیش‌نیازها مانند کنترل سطوح دسترسی قبل از اجرا شدن سایر توابع استفاده کرد.Function Modifiers برای تغییر رفتار یک تابع استفاده می شود. به عنوان مثال برای اضافه کردن یک پیش نیاز به یک تابع.

جهت دریافت اطلاعات بیشتر قبل از مطالعه مقاله اصلاح کننده توابع در سالیدیتی توصیه می کنیم مقالات و محتواهای آموزش زبان سالیدیتی را هم مطالعه نمایید.

  1. قرارداد هوشمند یا اسمارت کانترکت (Smart Contract) چیست؟
  2. کسب درآمد دلاری با قرارداد هوشمند
  3. توسعه قرارداد هوشمند در محیط ریمیکس
  4. مدیریت خطا در سالیدیتی
  5. وراثت در سالیدیتی
  6. دستورات شرطی در سالیدیتی
اصلاح کننده توابع در سالیدیتی
اصلاح کننده توابع در سالیدیتی

کاربرد اصلاح کننده توابع در سالیدیتی

از اصلاح کننده توابع در سالیدیتی می توان برای موارد زیر استفاده کرد:

  • محدود کرد دسترسی ها
  • اعتبار سنجی ورودی ها
  • جلوگیری و محافظت از هک ورود مجدد

اصلاح کننده ها به اجرای رفتار یک تابع کمک می کنند. رفتار یک تابع را می توان با استفاده از یک تغییر دهنده تابع تغییر داد، همچنین می توان آنها را قبل یا بعد از اجرای یک تابع فراخوانی کرد.به عنوان مثال، قبل از اجرای یک تابع، می‌توانید موجودی یک حساب را بررسی کنید، تأیید کنید که فرستنده مالک است، نیاز به دسترسی به یک حساب دارید، و غیره. اصلاح‌کننده‌ها بلوک‌های کد قابل استفاده مجدد هستند که می‌توانند به یک یا چند تابع در قرارداد شما متصل شوند.​

مشاهده  ساختار در برنامه نویسی سالیدیتی
اصلاح کننده توابع در سالیدیتی
کارکرد اصلاح کننده توابع در سالیدیتی

آموزش برنامه نویسی سالیدیتی

modifier isOwner() {
     require(msg.sender == owner);
     _;
}

function increment() public isOwner {
     count = count + 1;
}

همانطور که در قطعه کد بالا مشاهده می‌کنید، modifier ها دقیقا مشابه توابع تعریف می‎‌شوند. در تعریف isOwner، در مقاله مدیریت خطا در سالیدیتی در مورد تابع require توضیح دادیم.تابع require شرطی که درون پرانتز آن مشخص شده است بررسی می‌کند، اگر شرط برقرار نباشد یک exception اتفاق می‌افتد و اجراء قرارداد خاتمه می‌یابد. در غیر اینصورت کلمه کلیدی” _ ” به کامپایلر می‌گوید که “_” را با کد تابعی که modifier بر روی آن اعمال شده است، جایگزین کند.در تصویر زیر ساختار توابع modifiers در سالیدیتی برای شما آورده شده است.

ساختار توابع modifiers در سالیدیتی

مثالی از اصلاح کننده توابع در سالیدیتی

در قسمت زیر یک نمونه مقال و کد از توابع modifiers در سالیدیتی ابتدا آورده شده و توضیحات مربوط به کدهای نوشته شده در ادامه به شما ارائه خواهد شد.

آموزش برنامه نویسی قرارداد هوشمند


pragma solidity ^0.5.12;

contract FuncModifier {
    // We will use these variables to demonstrate how to use
    // modifiers.
    address public Host;
    uint public x = 10;
    bool public locked;

     constructor()public {
        // Set the transaction sender as the Host of the contract.
        Host = msg.sender;
    }

    modifier onlyHost() {
        require(msg.sender == Host, "Not Host");
        
        _;
    }

   //Inputs can be passed to a modiier
    modifier validAddress(address _addr) {
        require(_addr != address(0), "Not valid address");
        _;
    }

    function changeHost(address _newHost) public onlyHost validAddress(_newHost) {
        Host = _newHost;
    }

    // Modifiers can be called before and / or after a function.
    // This modifier prevents a function from being called while
    // it is still executing.
    modifier noReentrancy() {
        require(!locked, "No reentrancy");

        locked = true;
        _;
        locked = false;
    }

    function decrement(uint i) public noReentrancy {
        x -= i;

        if (i > 1) {
            decrement(i - 1);
        }
    }
}

توضیحات مربوط به کد اصلاح کننده توابع در سالیدیتی

خط 4: ما یک قرارداد FuncModifier ایجاد می کنیم.

مشاهده  ماشین مجازی اتریوم چیست؟

خطوط 7 تا 9: چند متغیر ایجاد می کنیم و از آنها برای نشان دادن نحوه استفاده از اصلاح کننده ها استفاده می کنیم.

خطوط 11 تا 14: فرستنده تراکنش را به عنوان میزبان قرارداد تعیین می کنیم.

خط 17: ما از اصلاح کننده در تابع onlyhost استفاده می کنیم تا بررسی کنیم که تماس گیرنده میزبان قرارداد است.

خط 19: ما زیرخط را می بینیم، زیرخط یک کاراکتر خاص است که فقط در یک تغییر دهنده تابع استفاده می شود و به Solidity می گوید که بقیه کد را اجرا کند.

خط 24: این اصلاح کننده بررسی می کند که آدرس ارسال شده آدرس صفر نباشد.

خط 36: این اصلاح کننده از فراخوانی یک تابع در حالی که هنوز در حال اجرا است جلوگیری می کند. به عنوان اصلاح کننده ها را می توان قبل و/یا بعد از یک تابع فراخوانی کرد.

منابع مقاله اصلاح کننده توابع در سالیدیتی

وب سایت: educative.iocryptomarketpool.com

دیدگاه خود را اینجا قرار دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

محبوب ترین دوره ها

برچسب های محبوب

Liquidity Pool Solidity Inheritance آموزش برنامه نویسی سالیدیتی آموزش سالیدیتی آموزش قرارداد هوشمند اجزای قرارداد هوشمند ارزدیجیتال Polkadot ارز دیجیتال اتریوم ارزهای متاورسی الگوریتم اثبات کار الگوریتم اجماع امنیت کیف پول اهمیت قرارداد هوشمند اپلیکیشن متمرکز ایردراپ برنامه نویس سالیدیتی برنامه نویسی اتریوم برنامه نویسی بلاکچین برنامه نویسی ریمیکس برنامه نویسی سالیدیتی برنامه نویسی قرارداد هوشمند بلاکچین بلاک چین اتریوم بهترین ارزهای دیجیتال توسعه دهنده سالیدیتی خطا در سالیدیتی صرافی های ارزدیجیتال صرافی‌ غیرمتمرکز قرارداد هوشمند متاورس مزایای قرارداد هوشمند نوشتن سیستم رای گیری با سالیدیتی نوشتن قرارداد هوشمند واقعیت مجازی متاورس ویژگی‌های اتریوم پلتفرم های ارزدیجیتال پیش نیاز قرارداد هوشمند کاربرد قرارداد هوشمند کد نویسی سالیدیتی کسب درآمد با قرارداد هوشمند کسب درآمد در متاورس کلاهبرداری ایردراپ کیف پول ارزدیجیتال کیف پول الکترونیکی کیف پول نرم‌افزاری