контракт вызова из контракта не удается (успешно в ВМ) - PullRequest
0 голосов
/ 26 июня 2018

Следующие тестовые контракты работают должным образом через Remix при развертывании и запуске в виртуальной машине JavaScript, но при запуске с «Injected Web3» генерируется вторичный контракт TestA02 T2, который заполняется, как и ожидалось, все функции get, вызываемые через Первичный контракт TestA01 возвращает значения «0». Если вы копируете адрес контракта TestA02 и адресуете его непосредственно из Remix, ожидаемые значения возвращаются. Код следует ниже.

Это ошибка или недоразумение с моей стороны?

Инструкция: Использование Remix из Mist версии 0.10.0 Скомпилируйте и разверните КОД основного контракта TestA01.

Вызов функции genEntry с передачей любого адреса.

Затем вызовите любую из функций get.

КОД:

КОД основного контракта TestA01:

pragma solidity ^0.4.17;

import "browser/TestA02.sol";

contract TestA01 {

    TestA02 T2;

    constructor() public {
        T2 = new TestA02();
    }

    function genEntry(address a) public {
        T2.add(a);
    }

    function get() public view returns(address) {return(T2.get(0));}
    function get(uint i) view public returns(address) {return(T2.get(i));}

    function getSize() public view returns(uint) {return(T2.getSize());}

    function getT2() public view returns(address) {return(address(T2));}
}

КОД вторичного контракта TestA02:

pragma solidity ^0.4.17;


contract TestA02 {

    uint _size;
    mapping(uint => address) private arrayMap;

    constructor() public {
        _size = 0;
    }

    function add(address a) public {
        arrayMap[_size++] = a;
    }

    function get() public view returns(address) {return(arrayMap[0]);}
    function get(uint i) public view returns(address) {return(arrayMap[i]);}

    function getSize() public view returns(uint) {return(_size);}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...