Solidity
如何通過更改一些導致所有功能恢復的內部狀態來禁用契約?
在 Solidity 的官方文件中,關於自毀指令是這樣寫的:
如果你想停用你的合約,你應該通過改變一些導致所有功能恢復的內部狀態來禁用它們。
有人可以解釋一下是什麼意思嗎?
是否足以並更正此程式碼以銷毀契約?:
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
所有函式呼叫,就會恢復。是的,您的自毀程式碼看起來不錯。