合同的合同调用失败(VM中成功)

时间:2018-06-26 15:20:46

标签: return-value solidity remix

以下测试合同在JavaScript VM中部署并运行时可以通过Remix正常工作,但是当与“ Injected Web3”一起运行时,将按预期生成并填充辅助合同TestA02 T2的生成,所有get函数都通过主合同TestA01返回“ 0”值。如果您复制TestA02合同的地址并直接从Remix寻址,则将返回预期值。代码如下。

这是我的错误还是误会?

说明: 使用Mist版本0.10.0中的Remix编译和部署主合同代码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);}
}

0 个答案:

没有答案