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

Ethereum 以太坊ERC-20代币合约如何互动,ethereum,solidity,smartcontracts,Ethereum,Solidity,Smartcontracts,随着代币的发展,学习坚固性 我很难理解具有多个智能合约的代币是如何相互作用的 我在GitHub上阅读了多份合同的其他代币,并在OpenZeppelin上查看了合同,但它们似乎都是孤立的 比如说,我们开发了一种代币,它有一个供应,并使用地图跟踪钱包地址和金额。合同解除,并给出了地址。管理员或特权方法通过所有者地址验证进行保护。然后我们发布第二个合同,该合同需要为交易申请费用 第二个(代币交易费)合约如何与第一个(代币合约)上存储的数据交互?第二个合同是否也需要验证所有权?以太坊上的任何合同都可以通

随着代币的发展,学习坚固性

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

我在GitHub上阅读了多份合同的其他代币,并在OpenZeppelin上查看了合同,但它们似乎都是孤立的

比如说,我们开发了一种代币,它有一个供应,并使用地图跟踪钱包地址和金额。合同解除,并给出了地址。管理员或特权方法通过所有者地址验证进行保护。然后我们发布第二个合同,该合同需要为交易申请费用


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

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

  • 定义ERC20接口
  • 使用接口和令牌协定地址调用第一个协定的方法:

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

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

  • 定义ERC20接口
  • 使用接口和令牌协定地址调用第一个协定的方法:

  • 类似的方法可用于任何契约

    ,因此自定义rbac逻辑阻止我编写从其他帐户提取令牌的契约?您只能调用允许调用的契约的方法。如果您检查ERC20合同,则没有任何方法允许您从其他帐户提取代币。如果有人部署了一个scam ERC20合同,允许合同所有者从其他帐户提取令牌,那么是的,这是可能的。什么决定了谁可以对一个合同或调用另一个合同的合同执行方法?代码决定。有多种方法可以确定访问控制。在ERC20中,合同的设计方式是,您只能从余额中转移代币。限制谁可以调用一个方法的其他方法是使用“require”检查某个地址或条件、函数修饰符,或者使用OpenzeppelinOk的高级访问控制契约,这是有意义的。我原以为有更多的内置机制,比如“只有合同所有者”,但现在发现没有。执行AC由合同决定。谢谢!因此,自定义rbac逻辑阻止我编写从其他帐户提取令牌的契约?您只能调用允许调用的契约的方法。如果您检查ERC20合同,则没有任何方法允许您从其他帐户提取代币。如果有人部署了一个scam ERC20合同,允许合同所有者从其他帐户提取令牌,那么是的,这是可能的。什么决定了谁可以对一个合同或调用另一个合同的合同执行方法?代码决定。有多种方法可以确定访问控制。在ERC20中,合同的设计方式是,您只能从余额中转移代币。限制谁可以调用一个方法的其他方法是使用“require”检查某个地址或条件、函数修饰符,或者使用OpenzeppelinOk的高级访问控制契约,这是有意义的。我原以为有更多的内置机制,比如“只有合同所有者”,但现在发现没有。执行AC由合同决定。谢谢!
    interface ERC20 {
        function balanceOf(address account) external view returns (uint256);
    }
    
    ERC20(tokenContractAddress).balanceOf(0xabcd....);