Solidity
selfdestruct() 出現錯誤的問題
呼叫我的二級合約的主合約函式
function gameOver(uint _matchId)public payable onlyOwner returns(bool) { Match my_match = Match(matchTracker[_matchId]); bool success = my_match.destroy(msg.sender); if(success == true) delete matchTracker[_matchId]; return success; }
這裡 matchTracker 儲存了每個 Match 合約的地址
匹配合約銷毀功能
function destroy (address payable _owner)external returns(bool) { require(_owner == owner); selfdestruct(owner); return true; }
任何人都可以辨識出什麼問題嗎?使用的solidity版本是0.5.13
selfdestruct 需要一個類型為 的參數
address payable
。您的程式碼中的類型是什麼
owner
?如果您使用的是 OpenZeppelinOwnable.sol
,則不是payable
.你可以投它,但既然你已經
require
d_owner
等於owner
,而前者是payable
你應該簡單地寫
selfdestruct(_owner);
反而。