【问题标题】:Even-though i don't have constructor in my code i am getting error the constructor should be payable if you send value即使我的代码中没有构造函数,但我收到错误,如果您发送值,则应该支付构造函数
【发布时间】:2019-01-30 21:26:39
【问题描述】:

这是我在 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 错误:还原。 revert 事务已恢复到初始状态。 注意:如果您发送值,则应支付构造函数。调试事务以获取更多信息。

【问题讨论】:

    标签: solidity


    【解决方案1】:

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

    在你的情况下,这不是问题。我的猜测是你调用buy 并且没有附加任何以太,所以require(msg.value > 0) 导致交易恢复。在 Remix 中,确保右上角有一个非零“值”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2020-09-26
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多