Вызывающий метод потерпел неудачу в другом контракте при создании экземпляра новым
Я пытаюсь использовать экземпляр контракта как переменную другого контракта, как в примере ниже.
pragma solidity ^0.4.23;
contract basic {
uint num1 = 10;
function getNum1() public view returns(uint) {
return num1;
}
function setNum1(uint _num) public returns(uint) {
num1 = _num;
}
}
contract parent {
uint public num2;
basic public b;
constructor() public {
b = new basic();
num2 = 20;
}
function getNum1() public constant returns(uint) {
return b.getNum1();
}
}
в то время как когда я тестировал контракт в ремиксе и трюфеле, он работал хорошо. введите описание изображения здесь, но когда я развернул контракт "родительский" в моей частной сети, parent.getNum1() возвратил "0" вместо "10", как предполагалось.
Более того, я попробовал другой тип конструкторов, например, взять в качестве параметра адрес "basic", это тоже не сработало.
Я также попробовал некоторые контракты, которые принимают другой экземпляр контракта как переменную, все они не работали в частной сети.
Кто-нибудь когда-нибудь сталкивался с этой проблемой? Помогите!!!
1 ответ
Сейчас, чтобы закрыть вопрос! Я развернул свой контракт на тестирование сети Ropsten, и контракт работал хорошо. похоже, что моя частная сеть не поддерживала использование вызовов из другого контракта. любой желающий может попробовать.