Ethereum 添加传输的固体错误(1乙醚)
错误消息: 交易到付款。存款错误:VM错误:还原。 还原事务已还原为初始状态。 注意:如果您发送值,并且您发送的值应该小于您当前的余额,则调用的函数应该是可支付的。调试事务以获取更多信息Ethereum 添加传输的固体错误(1乙醚),ethereum,solidity,Ethereum,Solidity,错误消息: 交易到付款。存款错误:VM错误:还原。 还原事务已还原为初始状态。 注意:如果您发送值,并且您发送的值应该小于您当前的余额,则调用的函数应该是可支付的。调试事务以获取更多信息 它在我的混音虚拟机上正常工作 因此,请确保: 合同的余额大于1% 如果Account2是合同的地址,那么它需要有一个回退功能来接收以太网 它在我的混音虚拟机上正常工作 因此,请确保: 合同的余额大于1% 如果Account2是合同的地址,那么它需要有一个回退功能来接收以太网 如果您不想使用msg.value,那
它在我的混音虚拟机上正常工作 因此,请确保:
Account2
是合同的地址,那么它需要有一个回退功能来接收以太网它在我的混音虚拟机上正常工作 因此,请确保:
Account2
是合同的地址,那么它需要有一个回退功能来接收以太网如果您不想使用msg.value,那么您的合同必须有足够的余额。 因此,您可以先创建一个回退函数,以便在合同中存入足够的乙醚,然后可以调用存款()函数 添加回退功能后的合同
pragma solidity ^0.5.1;
contract Payment{
address Account2;
address Owner;
constructor() public{
Account2 = 0x583031D1113aD414F02576BD6afaBfb302140225;
Owner = msg.sender;
}
function () payable external{}
function deposit() payable public{
address(uint160(Account2)).transfer(1 ether);
}
function getContractBalance() public view returns(uint) {
return address(this).balance;
}
}
如果您不想使用msg.value,那么您的合同必须有足够的余额。 因此,您可以先创建一个回退函数,以便在合同中存入足够的乙醚,然后可以调用存款()函数 添加回退功能后的合同
pragma solidity ^0.5.1;
contract Payment{
address Account2;
address Owner;
constructor() public{
Account2 = 0x583031D1113aD414F02576BD6afaBfb302140225;
Owner = msg.sender;
}
function () payable external{}
function deposit() payable public{
address(uint160(Account2)).transfer(1 ether);
}
function getContractBalance() public view returns(uint) {
return address(this).balance;
}
}
我不想填写msg.value来结束交易我不想填写msg.value来结束交易Remix从每个帐户100以太开始,这足以交付这可能是因为您使用的是Javasctript VM环境。此外,这是用户帐户的余额,而不是合同的余额。因此,您必须通过放置值并调用回退函数向合同发送一定数量的100以太。我已更新了答案,并添加了一个检查合同余额的函数,该函数以wei(1以太=10^18 wei)返回值。因此,您的存款功能只有在余额大于或等于1时才起作用。我现在知道了,帐户余额!=合同余额。还有一个问题,在相同的情况下,为什么msg.value可以成功?msg.value用于从用户帐户向合同发送以太,因此当您使用msg.value时,balnce将从您的100以太(用户帐户)中扣除并发送到合同地址,然后在那里传输到定义的Account2 addressremix开始时,每个帐户使用100以太,这就足够交付了,这可能是因为您使用的是Javasctript VM环境。此外,这是用户帐户的余额,而不是合同的余额。因此,您必须通过放置值并调用回退函数向合同发送一定数量的100以太。我已更新了答案,并添加了一个检查合同余额的函数,该函数以wei(1以太=10^18 wei)返回值。因此,您的存款功能只有在余额大于或等于1时才起作用。我现在知道了,帐户余额!=合同余额。还有一个问题,在相同的情况下,为什么msg.value可以成功?msg.value用于从用户帐户向合同发送以太,因此,当您使用msg.value时,balnce将从您的100以太(用户帐户)中扣除,并发送到合同地址,然后传输到定义的Account2地址