示例Oraclize文件返回0:字符串:在Remix中调用时

时间:2019-06-17 19:35:07

标签: solidity remix metamask oraclize

我想在Remix中使用Oraclize进行测试。我太笨了,不能使用他们的例子。 我该如何进行这项工作? 我从他们的Github中获取了YouTube-Views代码并将其复制到Remix

 pragma solidity >= 0.5.0 < 0.6.0;

import "github.com/oraclize/ethereum-api/oraclizeAPI.sol";

contract YoutubeViews is usingOraclize {

string public viewsCount;

event LogYoutubeViewCount(string views);
event LogNewOraclizeQuery(string description);

constructor()
    public
{
    update(); // Update views on contract creation...
}

function __callback(
    bytes32 _myid,
    string memory _result
)
    public
{
    require(msg.sender == oraclize_cbAddress());
    viewsCount = _result;
    emit LogYoutubeViewCount(viewsCount);
    // Do something with viewsCount, like tipping the author if viewsCount > X?
}

function update()
    public
    payable
{
    emit LogNewOraclizeQuery("Oraclize query was sent, standing by for the answer...");
    oraclize_query("URL", 'html(https://www.youtube.com/watch?v=9bZkp7q19f0).xpath(//*[contains(@class, "watch-view-count")]/text())');
}
}

当我使用viewCount时,它返回:

0:字符串:

其他所有示例也会发生这种情况。 以WolframAlpha为例。我还会收到以下错误:

事务处理到WolframAlpha.update错误:VM错误:恢复。 还原事务已还原到初始状态。 注意:如果您发送值,则应向构造函数付款。调试事务以获取更多信息。

1 个答案:

答案 0 :(得分:0)

好吧,您不会在Remix中看到像正常结果那样的答案:

您必须进入设置并打开Oraclize插件。

如果您随后部署合同或单击更新,则会在插件中显示结果。