【问题标题】:How to deploy two smart contracts that inherit from each other to test network together?如何部署两个相互继承的智能合约一起测试网络?
【发布时间】:2020-02-29 05:34:41
【问题描述】:

我有两个智能合约

我在 remix IDE 中工作,当我单击“部署”时,我只能部署一个智能合约。而当我复制 ABI 时,我只能从一份合约中复制一份 ABI。

有没有办法将这两个合约一起部署,或者我应该单独部署它们? 如果我将它们单独部署,numberTwo 合约将如何找到 numberOne 合约在哪里?

谢谢。

pragma solidity ^0.4.25;
contract numberOne{
}
contract numberTwo is numberOne{
}

【问题讨论】:

    标签: deployment ethereum solidity smartcontracts


    【解决方案1】:

    你写的方式是你的 numberTwo 合约继承 numberOne 所以你不需要单独部署第一个。

    但如果你真的想单独部署它们,你可以这样做。只需一个一个地部署它们,然后使用第一个的地址将第一个连接到第二个。

    contract NumberOne {
     uint256 public someData = 256;
    }
    
    contract NumberTwo {
    
      NumberOne numberOneContract;
    
      function initNumberOne(address _address) public {
        numberOneContract = NumberOne(_address);            
      }
    
      function getSomeData() view public returns (uint256) {
        return numberOneContract.someData();
      }
    
    }
    

    【讨论】:

    • 谢谢,我觉得应该也可以。你的意思是 return numberOneContract.someData(); ?
    【解决方案2】:

    我刚刚做到了。 如果简单地先部署继承自 numberOne 合约的 numberTwo 合约,它会自动部署两个合约。 如果我要复制 numberTwo 合约的 ABI,它也会有来自 numberOne 合约的 ABI。

    【讨论】:

    • 虽然它不会自动部署两个合约。您的第二个合同只是继承了第一个合同的所有方法。
    • 这就是我的想法。但现在我可以从 numberTwo 合约地址访问两个合约的函数。
    • 只是因为继承是这样工作的,没有部署 NumberOne,所以当你在 NumberTwo 上调用它的方法时,你只是使用继承的方法,但将所有数据存储在 NumberTwo 上
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 2022-09-25
    • 2019-09-09
    相关资源
    最近更新 更多