У меня проблема с разработкой смарт-контрактов с использованием солидности 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;
}
}
В Contract
добавлении модификатора представления кgetNum
function getNum() public view returns(uint) {
return Num;
}
Ваши вызовы работали в ganache/testrpc/remix, потому что тестовая EVM синхронна по своей природе. Т.е. вы сможете получать возвращаемые значения транзакций, так как sendTransaction
вызовы выполняются мгновенно.
Йоу йоу
Йоу йоу
Йоу йоу
ivicaa
Йоу йоу
ivicaa
Йоу йоу