【问题标题】:How to deploy multiple solidity smart contracts that uses functions of each other?如何部署多个使用彼此功能的solidity智能合约?
【发布时间】:2018-10-07 04:45:53
【问题描述】:

我有三个智能合约,分别是 a.sol、b.sol 和 c.sol……在这三个中,前两个是独立的智能合约,而 c.sol 使用 a.sol 和 b.sol 的功能,因此 c.sol 需要“导入”前两个智能合约。 “导入”在本地工作,但如何在测试网上通过 remix/truffle 部署所有这些,以便 c.sol 仍然可以访问 a.sol 和 b.sol 的功能?

【问题讨论】:

    标签: blockchain ethereum solidity smartcontracts truffle


    【解决方案1】:

    您的合同 a 和 b 是否应该是独立合同,无论合同 c 如何都将使用它们?即:用户将数据存储在合约a中,将由合约c使用

    如果是这样,那么您可以像这样将合同 a 和 b 作为合同 c 的变量

    a.sol

    contract A {
      function doSomething() {
            ...
      }
    }
    

    c.sol

    contract C {
      A a;
    
      function setA(address addressOfContractA) {
        a = A(address);
      }
    
      function makeADoSomething() {
        a.doSomething();
      }
    }
    

    信用:https://zupzup.org/smart-contract-interaction/

    【讨论】:

      【解决方案2】:

      如果您的项目是使用 Truffle 创建的,您可以通过以下方式设置 c.sol

      import "./a.sol";
      import "./b.sol";
      
      contract c is a, b {
         ...
      }
      

      如果这是您的代码结构,您将能够使用 truffle migrate 部署您的 Truffle 项目(前提是您的迁移设置正确)。

      【讨论】:

      • 此答案仅适用于总大小不超过块大小限制的情况。为避免达到块大小限制,@bhoomtawath-plinsut 的答案有效。
      猜你喜欢
      • 2022-08-05
      • 2021-01-21
      • 2021-12-28
      • 2018-09-23
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      相关资源
      最近更新 更多