如何将以太币从发送者账户转移到具有特定值参数的给定账户——智能合约
How to transfer ether from sender account to a given account with specific value parameter -- Smart Contract
我正在写一份合同,我想把钱转账到传递给合同中函数的账户地址。我采用三个参数 from、to 和 value。另外,我添加了屏幕截图以更好地理解。
Error Screenshot
contract Transaction{
using SafeMath for uint256;
mapping(address => uint256) balances;
event Transfer(address buyer, address seller,uint value);
function _transfer(address _from, address payable _to, uint256 _value) internal {
require(balances[_from] >= _value, "Insufficient balance");
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(_from, _to, _value);
_to.transfer(_value);
}
function transfer(address _from,address payable _to, uint256 _value) external payable returns (bool) {
_transfer(_from, _to, _value);
return true;
}
}
错误:
交易到交易。传输错误:虚拟机错误:还原。
还原
事务已恢复到初始状态。
合约提供的原因:“余额不足”。
调试交易以获取更多信息。
请帮助我哪里错了?
转账只需要收款地址,发件人地址是msg.sender,价值是msg.value,应该在Gas Limit字段下的value字段中提及,正确的功能如下:
function transfer(address payable _to) external payable returns (bool) {
_to.transfer( msg.value);
return true;
}
P.S:如果想创建Token,应该发起合约总量供应,最好遵循ERC20标准
我正在写一份合同,我想把钱转账到传递给合同中函数的账户地址。我采用三个参数 from、to 和 value。另外,我添加了屏幕截图以更好地理解。 Error Screenshot
contract Transaction{
using SafeMath for uint256;
mapping(address => uint256) balances;
event Transfer(address buyer, address seller,uint value);
function _transfer(address _from, address payable _to, uint256 _value) internal {
require(balances[_from] >= _value, "Insufficient balance");
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(_from, _to, _value);
_to.transfer(_value);
}
function transfer(address _from,address payable _to, uint256 _value) external payable returns (bool) {
_transfer(_from, _to, _value);
return true;
}
}
错误:
交易到交易。传输错误:虚拟机错误:还原。
还原 事务已恢复到初始状态。 合约提供的原因:“余额不足”。 调试交易以获取更多信息。
请帮助我哪里错了?
转账只需要收款地址,发件人地址是msg.sender,价值是msg.value,应该在Gas Limit字段下的value字段中提及,正确的功能如下:
function transfer(address payable _to) external payable returns (bool) {
_to.transfer( msg.value);
return true;
}
P.S:如果想创建Token,应该发起合约总量供应,最好遵循ERC20标准