کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

دسترسی محدود در سالیدیتی

دسترسی محدود به قرارداد یک روش معمول است. به طور پیش فرض، یک حالت قرارداد فقط خواندنی (read-only)است مگر اینکه به عنوان عمومی (public)مشخص شود. ما می‌توانیم افرادی را که می‌توانند وضعیت قرارداد را تغییر دهند یا توابع قرارداد را با استفاده از اصلاح‌کننده‌ها(modifiers ) فراخوانی کنند، محدود کنیم. همانطور که در ادامه توضیح داده شده است، چندین اصلاح کننده (modifiers ) ایجاد و استفاده خواهیم کرد:

OnlyBy :

اگر یکبار از یک تابع استفاده شود، فقط صدا کننده Caller ذکر شده می تواند این تابع را فراخوانی کند.

OnlyAfter :

پس از استفاده از یک تابع، می توان آن تابع را پس از یک دوره زمانی خاص فراخوانی کرد.

Costs :

هنگامی که از یک تابع استفاده می شود، Caller یا صدا کننده فقط در صورت ارائه مقدار مشخصی می تواند این تابع را فراخوانی کند.

pragma solidity ^0.5.0;

contract Test {
   address public owner = msg.sender;
   uint public creationTime = now;

   modifier onlyBy(address _account) {
      require(
         msg.sender == _account,
         "Sender not authorized."
      );
      _;
   }
   function changeOwner(address _newOwner) public onlyBy(owner) {
      owner = _newOwner;
   }
   modifier onlyAfter(uint _time) {
      require(
         now >= _time,
         "Function called too early."
      );
      _;
   }
   function disown() public onlyBy(owner) onlyAfter(creationTime + 6 weeks) {
      delete owner;
   }
   modifier costs(uint _amount) {
      require(
         msg.value >= _amount,
         "Not enough Ether provided."
      );
      _;
      if (msg.value > _amount)
         msg.sender.transfer(msg.value - _amount);
   }
   function forceOwnerChange(address _newOwner) public payable costs(200 ether) {
      owner = _newOwner;
      if (uint(owner) & 0 == 1) return;        
   }
}
1402/01/21 782
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...