【问题标题】:How to transfer ether from sender account to a given account with specific value parameter -- Smart Contract如何将以太币从发送者账户转移到具有特定值参数的给定账户——智能合约
【发布时间】:2021-09-10 17:27:36
【问题描述】:

我正在编写一份合同,我想将资金转移到传递给合同中函数的帐户地址。我采用三个参数 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 错误:revert。

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

请帮忙看看我哪里错了?

【问题讨论】:

    标签: python blockchain solidity smartcontracts


    【解决方案1】:

    转账只需要收款地址,发件人地址是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标准

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 2020-10-21
      • 2022-08-03
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      相关资源
      最近更新 更多