如何将乙醚从发送方帐户转移到具有特定值参数Smart Contract的给定帐户

2024-06-10 23:28:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一份合同,我想把钱转到一个账户地址,这个账户地址传递给合同中的一个函数。我取三个参数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;
    }

}

错误:

交易对交易。传输错误:VM错误:还原

恢复 事务已恢复到初始状态。 合同提供的理由:“余额不足”。 调试事务以获取更多信息

请帮助我,我错在哪里


Tags: tofromvalueaddress地址错误function交易
1条回答
网友
1楼 · 发布于 2024-06-10 23:28:40

对于转账,您只需要接收地址,发件人地址为msg.sender,值为msg.value,应在气体限制字段下的值字段中提及,正确的功能如下:

 function transfer(address payable _to) external payable returns (bool) {
        _to.transfer( msg.value);
        return true;
    }

附言:如果您想创建代币,您应该启动合同的总供应,最好遵循ERC20标准

相关问题 更多 >