【问题标题】:get contract A address from contract B从合约B获取合约A地址
【发布时间】:2020-06-09 14:30:52
【问题描述】:

我正在尝试获取已部署合约 A 的地址,但创建一个新的 A A first = new A(); 会生成一个具有新地址的新合约。

pragma solidity ^0.5.0;



contract A {

  address public contract_A_address =address(this);
  address public owner_A = msg.sender;



}


contract B {

  address public contract_B_address =address(this);
  address public owner_B = msg.sender;

  A first = new A();


  function Get_first_Address() public view returns(address){
    return address(first);
    }

    function Get_Contract_A_Address() public view returns(address){
    return ??? ;
    }

}

合约B的Get_Contract_A_Address()需要的输出应该和合约A的contract_A_address一样

【问题讨论】:

    标签: solidity remix


    【解决方案1】:

    我没有看到使用的目的:

    A first = new A();

    因为A是另一个合约,部署在B之前,所以可以使用继承:

    contract B is A { ...
    #then the variable contract_A_address is available
    

    或者contract_A_address可以作为参数放入B的构造函数中,在部署过程中填充:

    contract B {
    contructor(address contract_A_address) public { ...
    
    

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 2017-07-03
      • 2021-06-12
      • 2022-11-13
      • 2022-12-03
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 2022-06-13
      相关资源
      最近更新 更多