首页 > 解决方案 > Solidity公共变量getter调用不返回

问题描述

我已经pragma solidity^0.4.0为 Rinkeby 部署了一个非常基本的 Solidity 合约 ()。当我在状态变量上调用 getter 时,没有返回任何内容,我不明白为什么。编译我正在使用的合同"solc": "^0.4.25"

使用 Remix 进行测试,对 getter 的调用可以在本地正常工作。但是,该电话不适用于我在 Rinkeby 上的合同。

这是我的可靠代码...

pragma solidity^0.4.0;

contract Contest {
    address public manager;
    uint public submissionCost;
    uint8 public votesPerSubmission;

    constructor (uint _submissionCost, uint8 _votesPerSubmission) public {
        manager = msg.sender;
        submissionCost = _submissionCost;
        votesPerSubmission = _votesPerSubmission;
    }

    modifier restricted() {
        require(msg.sender == manager, "Not authorized.");
        _;
    }

    function adjustSubmissionCost(uint32 newCost) public restricted {
        submissionCost = newCost;
    }

    function adjustVotesPerSubmission(uint8 newVotes) public restricted {
        votesPerSubmission = newVotes;
    }
}

在 Rinkeby 上部署的合约地址是

0xacBd19113e0D8122E18DF48A320b635fB5D7Cdd0

https://rinkeby.etherscan.io/address/0xacbd19113e0d8122e18df48a320b635fb5d7cdd0

从 Remix 调用任何公共变量时,我期望返回值,但是我只call to Contest.manager在 Remix 控制台中收到消息,仅此而已。

我在我的 web3 dapp 中得到了相同的行为,当我尝试时返回为零......

await Contest.methods.manager().call()

标签: ethereumsolidityremix

解决方案


推荐阅读