return 合同中所有资金的最合适方式

Most appropriate way to return all funds in contract

假设有一个合约,其功能是 return 在某些修饰符有效后将资金返还给所有者地址。

pragma solidity ^0.6.1

contract example{
    uint64 public contractTime;

    constructor() public {
        owner = msg.sender;
        contractTime = uint64(block.timestamp) + 31556926;
    }

    receive() external payable {}

    fallback() external payable {}

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    modifier expiredContract {
        require(block.timestamp >= contractTime);
        _;
    }

    function returnToOwner() public payable onlyOwner expiredContract {
        owner.transfer(address(this).balance); // Is there a better way to do this?
    }
}

有没有更好的方法将合约资金清空到所有者地址?或者这是 "standard" 的做法?

经过更多挖掘后,您可以简单地使用 selfdestruct() 将所有资金返还给合约创建者。