如何将以太币从发送者账户转移到具有特定值参数的给定账户——智能合约

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标准