自毁合约
自毁函数: selfdestruct
的两个功能
- 删除合约
- 将合约剩余的 ETH 强制发送给接收者(如果接收者是一个合约,即使没有实现
receive()
或fallback()
方法,也会被强制接收主币)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
contract Kill {
function kill() external {
selfdestruct(payable(msg.sender));
}
// 测试自毁后,合约是否还能被继续调用
function testCall() external pure returns (uint) {
return 123;
}
}
contract Helper {
// 该合约没有实现 receive 和 fallback 测试Kill自毁后是否可以接收主币
function getBalance() external view returns(uint) {
return address(this).balance;
}
function kill(Kill _kill) external {
_kill.kill();
}
}