如何在其他合约中使用自己的代币?

How to use your own tokens in other contracts?

所以我创建了一个令牌tokenA

contract tokenA is ERC20 {
    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);
    }
}

我已经将它们部署到 Rinkeby (4) 注入的 web3 环境中。 现在我必须使用这些代币作为购买 NFT 的价格(我也必须制作)

那么如何在我的代码中使用它们?

我可以像

一样使用以太币

uint 价格 = 0.005 以太;

并将传输的值与此进行比较,但是如果我写

uint 价格 = 0.005 tokenA;

即使我已经部署了 tokenA 并且它驻留在我的元掩码 acc

中,它也会出错

uint price = 0.005 ether; 这是正确的。 但是在你购买 NFT 的函数中,你需要:

  1. 删除 payable 关键字。
  2. 添加ERC-20令牌的transferFrom功能,以便将price(0.005e18)个令牌转移到您指定的收件人地址。

请记住,为了成功调用 transferFrom 函数,用户首先需要调用 approve 函数。

为了获得更深入的解释,我建议阅读 OpenZeppelin ERC-20 docs/github repo