合同被杀但得到了以太

时间:2018-12-01 02:02:21

标签: blockchain ethereum solidity

我对功能 selfdestruct 的可靠性感到怀疑。我在下面有这份合同:

pragma solidity ^0.4.25;

 contract TestMetamask {

 string public name = "Joao";
 event EtherReceived();

 function changeName(string _name) public {
    name = _name;
 }

 function() public payable {
    emit EtherReceived();
 }

 function receiveEther() payable public {
    address(this).transfer(msg.value);
 }

 function balance() public view returns (uint256) {
    return address(this).balance;
 }

 function kill() public {
    selfdestruct(msg.sender);
 }
}

因此,该合同有效,但是当我执行功能kill()时,合同会继续在应付款 receiveEther 中接收以太币。 另一个函数不起作用,状态变量很干净,问题仅在于合同被破坏了接收以太。

这是rinkeby的合同地址: https://rinkeby.etherscan.io/address/0xe0491e86b972ae4b0f8359a6066b79256ea01274

有人遇到过同样的情况吗?

tks。

1 个答案:

答案 0 :(得分:1)

自毁之后,仍然可以将以太币发送到合同中,这将永远丢失。 也请参见以下stackexchange问​​题:https://ethereum.stackexchange.com/questions/46813/what-is-happening-after-a-self-destruct-is-called-for