在私人区块链中从另一个合同中调用一个合同中的函数

时间:2018-04-24 01:58:30

标签: ethereum solidity smartcontracts

我使用可靠性进行智能合约开发存在问题。我有两个聪明的合同,如工厂合同和合同合同。这是我的代码。

Contract Factory {
  address[] newContracts;

  function createContract(uint num) {
    address newContract = new Contract(num);
    newContracts.push(newContract);
  }

  function getContract() view public returns(address[]) {
    return newContracts;
  }

  function getNum(address _add) view public returns(uint) {
    return Contract(_add).getNum();
  }
}


contract Contract {
  uint public Num;

  function Contract(uint num) {
    Num = num;
  }

  function getNum() public returns(uint) {
    return Num;
  }
}

我在私人区块链中创建工厂合同。我调用了createContract和getContract函数,它正常工作,但是当我调用getNum函数时,我无法得到该数字。谢谢你的回答!

the picture of smartcontract problem

1 个答案:

答案 0 :(得分:2)

经过一些测试,请检查您的创世纪文件中是否有 byzantiumBlock:0 。如果没有,请添加它并重新生成您的私人链。请参阅下面的我的创世纪文件。

{                                                                                                                              
   "config": {
      "chainId": 1994,
      "homesteadBlock": 0,
      "eip155Block": 0,
      "eip158Block": 0,
      "byzantiumBlock": 0
   },  
   "difficulty": "400",
   "gasLimit": "2000000",
   "alloc": {
   }   
}

执行此操作后,您的代码应该可以正常工作。