代币的以太坊 ERC-20 合约如何交互

问题描述

学习 solidity 和令牌开发。

我很难理解具有多个智能合约的代币如何相互交互。

我在 GitHub 上阅读了其他带有多个合约的代币,并在 OpenZeppelin 上查看了合约,但它们都显得有些孤立。

假设我们开发了一种代币,该代币具有供应量并使用地图跟踪钱包地址到金额。合同被释放并被赋予一个地址。管理员或特权方法通过所有者地址验证受到保护。然后我们发布第二个合约,需要对交易收取费用。

第二个(代币交易费用)合约如何与存储在第一个(代币合约)上的数据交互?第二份合同是否也需要验证所有权?

解决方法

以太坊上的任何合约都可以使用接口与任何其他合约进行交互。您可以从第一个合约的第二个合约中调用 ERC20 代币的方法,如下所示:

  1. 定义 ERC20 接口
interface ERC20 {
    function balanceOf(address account) external view returns (uint256);
}
  1. 使用接口和代币合约地址调用第一个合约的方法:
ERC20(tokenContractAddress).balanceOf(0xabcd....);

类似的方法可用于任何合同