我正在尝试创建一个简单的智能合约来学习可靠性和以太坊的工作原理。
据我了解,在方法上使用修改应付将使其接受一个值。然后我们从发件人中扣除并将其添加到其他地方,在这段代码中,我试图将其发送给合同的所有者。
contract AcceptEth {
address public owner;
uint public bal;
uint public price;
mapping (address => uint) balance;
function AcceptEth() {
// set owner as the address of the one who created the contract
owner = msg.sender;
// set the price to 2 ether
price = 2 ether;
}
function accept() payable returns(bool success) {
// deduct 2 ether from the one person who executed the contract
balance[msg.sender] -= price;
// send 2 ether to the owner of this contract
balance[owner] += price;
return true;
}
}
当我通过 remix 与该合约进行交互时,我收到“处理交易时出现 VM 异常:gas 不足”的错误,它创建了一个交易,gas 价格为 21000000000,当我尝试获得 2 个以太币时值为 0.00 ETH来自执行此方法的任何人。
代码有什么问题?或者,我可以添加一个变量来输入他们想要发送的值,以及一个撤销方法,对吗?但为了学习,我想保持简单。但即使是这段代码也感觉有点简单,感觉好像缺少了什么。