Solidity

如何正確地使經理無效?

  • December 21, 2020

MyContract中,我正在為manager. 但是一段時間後,出於某種原因,我想使manager. 以下是我的方法:

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

contract  MyContract{
   address manager;
   constructor(){
       manager = msg.sender;
   }
   
   function invalidate() public {
       require(msg.sender == manager); // Only manager can invalidate itself
       manager = address(0);
   }
}

這樣做是正確的方法還是有一些漏洞?

引用 0 地址行為

這會很好用!

invalidate()函式是公開的,這意味著任何人都可以呼叫它。如果你想限制誰可以呼叫那個地址,你應該添加一些 require 語句。

例如,如果您只希望經理能夠使自己無效,您可以編寫:

   function invalidate() public {
       require(msg.sender == manager);
       manager = address(0);
   }

引用自:https://ethereum.stackexchange.com/questions/91340