Вызов функции в одном контракте из другого контракта в приватной блокчейне

У меня есть проблема с умной контрактной разработкой, используя основательность. У меня есть два умных контракта, таких как Фабричный контракт и Контрактный контракт. Вот мой код

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, я не могу получить число. Спасибо за ваш ответ!

картина проблемы смартконтракта

1 ответ

После некоторых тестов, пожалуйста, проверьте, есть ли в вашем файле genesis byzantiumBlock: 0. Если нет, пожалуйста, добавьте его и восстановите вашу частную сеть. Смотрите мой генезис файл ниже.

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

После этого ваш код должен работать.

Другие вопросы по тегам