即使我的代码中没有构造函数,但我收到错误消息,如果您发送值,则应该支付构造函数的费用

时间:2018-08-24 11:44:49

标签: solidity

这是我在Solidity中的代码

pragma solidity ^0.4.17;
contract WithdrawalContract {
   mapping(address => uint) buyers;

   function buy()public payable {
      require(msg.value > 0);
      buyers[msg.sender] = msg.value;
   }
   function withdraw()public {
      uint amount = buyers[msg.sender];
      require(amount > 0);
      buyers[msg.sender] = 0;      
      require(msg.sender.send(amount));
   }
}

以下是我遇到的错误。不知道为什么要问构造函数

交易到WithdrawalContract.buy错误:VM错误:恢复。 还原事务已还原到初始状态。 注意:如果您发送值,则应向构造函数付款。调试事务以获取更多信息。

1 个答案:

答案 0 :(得分:0)

这只是Remix在事务恢复时显示的错误消息的一部分,大概是因为这是人们常犯的错误。

就您而言,这不是问题。我的猜测是您正在呼叫buy而不附加任何以太币,因此require(msg.value > 0)导致事务恢复。在Remix中,确保右上角有一个非零的“值”。