Вызывающий метод потерпел неудачу в другом контракте при создании экземпляра новым

Я пытаюсь использовать экземпляр контракта как переменную другого контракта, как в примере ниже.

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, и контракт работал хорошо. похоже, что моя частная сеть не поддерживала использование вызовов из другого контракта. любой желающий может попробовать.

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