这是我在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错误:恢复。 还原事务已还原到初始状态。 注意:如果您发送值,则应向构造函数付款。调试事务以获取更多信息。
答案 0 :(得分:0)
这只是Remix在事务恢复时显示的错误消息的一部分,大概是因为这是人们常犯的错误。
就您而言,这不是问题。我的猜测是您正在呼叫buy
而不附加任何以太币,因此require(msg.value > 0)
导致事务恢复。在Remix中,确保右上角有一个非零的“值”。