Solidity

selfdestruct() 出現錯誤的問題

  • November 26, 2019

呼叫我的二級合約的主合約函式

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?如果您使用的是 OpenZeppelin Ownable.sol,則不是payable.

你可以投它,但既然你已經required_owner等於owner,而前者 payable你應該簡單地寫

selfdestruct(_owner);

反而。

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