Solidity

如何通過更改一些導致所有功能恢復的內部狀態來禁用契約?

  • April 6, 2020

在 Solidity 的官方文件中,關於自毀指令是這樣寫的:

如果你想停用你的合約,你應該通過改變一些導致所有功能恢復的內部狀態來禁用它們。

參考:https ://solidity.readthedocs.io/en/latest/introduction-to-smart-contracts.html#deactivate-and-self-destruct

有人可以解釋一下是什麼意思嗎?

是否足以並更正此程式碼以銷毀契約?:

function kill() public {
   if (msg.sender == owner)
   // only allow this action if the account sending the signal is the creator
       selfdestruct(owner);
       // kills this contract and sends remaining funds back to creator
}

非常感謝,學習了。。。

使用添加到每個函式的修飾符可能最容易完成。所以是這樣的:

pragma solidity 0.6.0;

contract Example {
   bool _isActive = true;

   modifier checkActive() {
       require (_isActive);
       _;
   }

   function do1() checkActive public {
       // do something
   }

   function do2() checkActive public {
       // do something else
   }

   function setActivity(bool isActive) public {
       // restrict access to this function
       _isActive = isActive;
   }
}

_isActive如果契約是,這裡一切正常true。但是,一旦具有適當訪問權限的人將其設置為false所有函式呼叫,就會恢復。

是的,您的自毀程式碼看起來不錯。

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