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

How do Ethereum ERC-20 Contracts for Tokens Interact

学习 Solidity 和代币开发。

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

我已经阅读了 GitHub 上具有多个合约的其他代币,并查看了 OpenZeppelin 上的合约,但它们看起来都有些孤立。

假设我们开发了一个代币,它有一个供应并使用地图跟踪钱包地址。合约被发布并被赋予一个地址。管理或特权方法通过所有者地址验证来保护。然后我们发布第二个需要申请交易费用的合约。

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

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

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

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