如何将我的自定义令牌发送到另一个帐户?

How do I send my custom token to another account?

所以这是我制作的自定义令牌

    address public deployer; //to save adress of the deployer
    
    constructor() ERC20('tokenA', 'TA') { //called by the deployer (once)
        _mint(msg.sender, 1000000000000 * 10 ** 10); //mint/create tokens - we have created 100000000000*10^18 tokens
        deployer = msg.sender;  //set the deployer
    }

    //total supply is fixed no more can be created ever

    function burn (uint amount) external {  //remove tokens by sending then to a zero address
        _burn(msg.sender, amount);
    }
}

用户 1 是合约的所有者,拥有大量代币,用户 2 的钱包中有 3 个代币。 我必须编写一个函数,单击该函数会将 1 个令牌传输给所有者 User1。


    function transferOneToken () public payable {
        address token = //address of token contract;
        ERC20 paymentToken = ERC20(token);

        require(paymentToken.transferFrom(msg.sender, owner, 1), "transfer Failed"); //owner is set in constructor
        
    }

这是我想出来的,用户2有3个代币,只需要转移1个,但仍然弹出gas estimation failed错误说allowance不足

我该如何解决?

令牌持有者(用户 2)需要 approve() 支出者(实现 transferOneToken() 函数的合约)在调用 transferFrom() 函数之前花费他们的令牌。

代币合约的approve()函数有两个参数:

  1. 消费者地址
  2. 允许他们花费的最大金额

如果没有批准机制,任何合约都可以提取用户的代币,这对于无法阅读合约代码的用户来说是一种不安全的情况。t/don