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

У меня проблема с разработкой смарт-контрактов с использованием солидности Remix в частном блокчейне от Geth. У меня есть два смарт-контракта, такие как Factory Contract и Contract Contract.

Я создаю контракт Factory, а затем вызываю функции createContract и getContract, они работают нормально, но когда я вызываю функцию getNum, я не могу получить номер.

Я запускаю этот код в Remix Solidity с помощью JavaScript VM, а тестовая сеть с помощью Ganache или TestRPC работает нормально, но когда я использую его с частной цепочкой блоков с помощью Geth, у него возникает эта проблема.

Вот мой код.

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;
  }
}

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

Ответы (1)

В Contractдобавлении модификатора представления кgetNum

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

Ваши вызовы работали в ganache/testrpc/remix, потому что тестовая EVM синхронна по своей природе. Т.е. вы сможете получать возвращаемые значения транзакций, так как sendTransactionвызовы выполняются мгновенно.

введите описание изображения здесь

Я добавляю модификатор представления в getNum в Contract, но проблема все равно остается!
да ! Я ставлю адрес в двойных кавычках.
Я использовал солидность ремикса с частной цепочкой блоков, используя Geth, а не JavaScript VM.
Извините... Safari сбросил мое подключение к виртуальной машине JavaScript из-за http/https. В любом случае, он работает с провайдером Web3 и узлом geth с Clique PoA. Все в порядке (см. обновленный скриншот).
Я думаю, может быть, у меня проблемы с настройкой частного блокчейна Geth. Итак, вы знаете, как правильно настроить частный блокчейн с помощью Geth.
hackernoon.com/… — прочтите этот пост, если у вас возникли проблемы с настройкой сети PoA Clique.
теперь он работает нормально и проще в использовании, чем раньше