无法获取映射值

时间:2018-03-13 13:55:51

标签: mapping solidity

我正在尝试实施一个小合同来上传区块链中的文件哈希以及文件描述和发件人地址。我编写了这份小合同:

pragma solidity^0.4.17;


contract hashes {
    mapping(uint => string) descriptions;
    mapping(uint => address) senderAddresses;


function uploadHash(uint _hash, string _description) public {
    require(bytes(descriptions[_hash]).length == 0);
    descriptions[_hash] = _description;
    senderAddresses[_hash] = msg.sender;
}

function getHash(uint _hash) public returns (address, string){
    return (senderAddresses[_hash], descriptions[_hash]);
}

}

我认为uploadHash按预期工作,因为当我上传相同的哈希两次时,我得到了一个恢复。但是,当我尝试使用getHash时,我没有获得任何返回值。当我从remix或直接从web3调用时,结果是一样的。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我相信你错过了视图修饰符

function getHash(uint _hash) public view returns (address, string)

除非使用视图修改器,否则Remix不会在输入框旁边显示res。